diff --git a/config/bliss_packages.mk b/config/bliss_packages.mk
index 4ba110c..8e7b330 100644
--- a/config/bliss_packages.mk
+++ b/config/bliss_packages.mk
@@ -60,7 +60,6 @@
     setcap \
     unrar \
     vim \
-    wget \
     zip
 
 # Openssh
diff --git a/prebuilt/common/Android.mk b/prebuilt/common/Android.mk
index d70f923..5e2c08e 100644
--- a/prebuilt/common/Android.mk
+++ b/prebuilt/common/Android.mk
@@ -1,14 +1,5 @@
 LOCAL_PATH := $(call my-dir)
 
-# a wrapper for curl which provides wget syntax, for compatibility
-include $(CLEAR_VARS)
-LOCAL_MODULE := wget
-LOCAL_SRC_FILES := bin/wget
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
-include $(BUILD_PREBUILT)
-
 ################################
 # Copies the APN list file into $(TARGET_COPY_OUT_PRODUCT)/etc for the product as apns-conf.xml.
 # In the case where $(CUSTOM_APNS_FILE) is defined, the content of $(CUSTOM_APNS_FILE)
diff --git a/prebuilt/common/bin/wget b/prebuilt/common/bin/wget
deleted file mode 100755
index 1d04de5..0000000
--- a/prebuilt/common/bin/wget
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/system/bin/sh
-# wget-curl, a curl wrapper acting as a wget drop-in replacement - version git-HEAD
-# Usage: wget [wget args] [i need to fill this in later] <url(s)>
-# Download all URLs given using curl, but using wget's options.
-#
-#
-# End of help.
-# Copyright (c) 2015 Kylie McClain <somasis@exherbo.org>
-#
-# Permission to use, copy, modify, and/or distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-#
-# End of copyright.
-#
-
-set -o pipefail
-shopt -u shift_verbose >/dev/null 2>&1
-
-help() {
-    sed -n '/^#/!d;s/^# //;s/^#//;3,${p;}' "$0" | \
-        while IFS= read help_line;do
-            if [[ "$help_line" == "End of help." ]];then
-                exit 0
-            else
-                printf "%s\n" "$help_line"
-            fi
-        done
-    exit 0
-}
-
-version() {
-    sed 's/^# //;s/, .* - version / /;2q;$!d' "$0"
-    copyright
-    exit 0
-}
-
-copyright() {
-    sed -n '/^#/!d;s/^# //;s/^#//;/End of help./,${p;}' "$0" | \
-        while IFS= read copyright_line;do
-            if [[ "$copyright_line" == "End of help." ]];then
-                true
-            elif [[ "$copyright_line" == "End of copyright." ]];then
-                break
-            else
-                printf '%s\n' "$copyright_line"
-            fi
-        done
-}
-
-stderr() {
-    printf "$@" >&2
-}
-
-error() {
-    stderr "$0: $1\n"
-    exit "$2"
-}
-
-invalid_arg() {
-    error "invalid option -- '$1'" 2
-}
-
-append_opt() {
-    for opt in $@;do
-        CURL_OPTS="${CURL_OPTS} ${opt}"
-    done
-}
-
-curl() {
-    eval "command curl $@ ${CURL_RAW}"
-}
-
-append_raw_arg() {
-    CURL_RAW="$CURL_RAW $@"
-}
-
-has_opt() { # exit 0 if CURL_OPTS has arg, non-zero if doesn't
-    if [[ "$CURL_OPTS" == *" $1"* ]];then
-        return 0
-    else
-        return 1
-    fi
-}
-
-reexec_without() { # download afterwards without $1 in OPTS
-    reexec_args_without="$reexec_args_without $@"
-    reexec=1
-}
-
-reexec_only() {
-    for arg in $@;do
-        CURL_OPTS_REEXEC_ONLY="${CURL_OPTS_REEXEC_ONLY} $arg"
-    done
-}
-
-print_url() {
-    has_opt -s || printf "%s\n" "$1"
-}
-
-# 46ABDFHIKLNOPQRSTUVXabcdhiklm nH nc nd np nv opqrtvwx
-while getopts ':46ABDFHIKLNO:PQRST:U:VXa:bcdhiklmopqrtvwx' argument "$@";do
-    case "$argument" in
-        # a lot of these are noop right now because they are wget mirror args
-        # which curl doesn't really do, and i am not sure if i should implement them
-        4)  append_opt -4       ;;
-        6)  append_opt -6       ;;
-        A)  true                ;; # probably can't implement this easily...
-        B)  true                ;;
-        D)  true                ;;
-        E)  true                ;;
-        F)  true                ;; # curl doesn't care what the input is
-        H)  true                ;;
-        I)  true                ;;
-        K)  true                ;;
-        L)  true                ;;
-        N)  true                ;;
-        O)  append_opt "-o $OPTARG"                 ;;
-        P)  true                ;;
-        Q)  true                ;;
-        R)  true                ;;
-        S)  append_opt -I;reexec_without -I -s  ;;
-        T)  append_opt "-m $OPTARG"                 ;;
-        U)  append_opt "--user-agent \"$OPTARG\""   ;;
-        V)  version; curl --version; exit 0         ;;
-        X)  true                                    ;;
-        a)  append_raw_arg "2>&1 | tee -a $OPTARG"  ;;
-        b)
-            wget_log="wget-log"
-            i=1
-            while [[ -f "${wget_log}" ]];do
-                # if that exists, increment until we find something that doesn't
-                i=$(($i+1))
-                wget_log="wget-log.${i}"
-            done
-            append_raw_arg ">\"$wget_log\" 2>&1 &"
-            printf "Continuing in background, pid %s.\nOutput will be written to '$wget_log'.\n" "$$"
-        ;;
-        c)  append_opt "-C -"                       ;;
-        d)  append_opt "-v"                         ;;
-        e)  true                                    ;;
-        h)  help                                    ;;
-        i)
-            [[ ! -f "$OPTARG" ]] && error "$OPTARG does not exist" 3
-            for url in $(<"$OPTARG");do
-                URLS=( ${URLS[@]} "$url" )
-            done
-        ;;
-        q)  append_opt "-s"                         ;;
-    esac
-    shift $(($OPTIND-1))
-done
-
-# set wget default equivilants
-append_opt -L # follow redirects
-append_opt -# # progress bar
-
-if [[ -z "${URLS[@]}" ]];then
-    URLS=( ${@} )
-fi
-
-for url in ${URLS[@]};do
-    url_file=${url##*/}
-    if [[ "$url" == "$url_file" ]];then
-        # has no remote file name and -o is not in CURL_OPTS... assume index.html
-        has_opt -o || append_opt "-o index.html"
-    fi
-
-    eval "print_url '$url';curl ${CURL_OPTS} -- $url"
-    if [[ "$reexec" ]];then
-        for reexec_arg in ${reexec_args_without};do
-            CURL_OPTS_REEXEC=$(echo "${CURL_OPTS_REEXEC:-$CURL_OPTS}" | sed "s# $reexec_arg##")
-        done
-        eval "print_url '$url';curl ${CURL_OPTS_REEXEC} ${CURL_OPTS_REEXEC_ONLY} -- $url"
-    fi
-done
