diff --git a/install.sh b/install.sh
index 977e224..fa8443e 100755
--- a/install.sh
+++ b/install.sh
@@ -11,17 +11,21 @@
   NVM_DIR="$HOME/.nvm"
 fi
 
-if ! nvm_has "curl"; then
-  if nvm_has "wget"; then
+nvm_curl() {
+  if nvm_has "curl"; then
+    curl $*
+  elif nvm_has "wget"; then
     # Emulate curl with wget
-    curl() {
-      ARGS="$* "
-      ARGS=${ARGS/-s /-q }
-      ARGS=${ARGS/-o /-O }
-      wget "$ARGS"
-    }
+    ARGS="$*"
+    ARGS=${ARGS/--progress-bar /--progress=bar }
+    ARGS=${ARGS/-L /}
+    ARGS=${ARGS/-I /}
+    ARGS=${ARGS/-s /-q }
+    ARGS=${ARGS/-o /-O }
+    ARGS=${ARGS/-C /-c }
+    wget $ARGS
   fi
-fi
+}
 
 install_nvm_from_git() {
   if [ -z "$NVM_SOURCE" ]; then
@@ -55,7 +59,7 @@
   else
     echo "=> Downloading nvm as script to '$NVM_DIR'"
   fi
-  curl -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || {
+  nvm_curl -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || {
     echo >&2 "Failed to download '$NVM_SOURCE'.."
     return 1
   }
@@ -65,7 +69,7 @@
   # Autodetect install method
   if nvm_has "git"; then
     install_nvm_from_git
-  elif nvm_has "curl"; then
+  elif nvm_has "nvm_curl"; then
     install_nvm_as_script
   else
     echo >&2 "You need git, curl, or wget to install nvm"
@@ -80,7 +84,7 @@
     install_nvm_from_git
   fi
   if [ "$METHOD" = "script" ]; then
-    if ! nvm_has "curl"; then
+    if ! nvm_has "nvm_curl"; then
       echo >&2 "You need curl or wget to install nvm"
       exit 1
     fi
diff --git a/nvm.sh b/nvm.sh
index 6b94dda..a483aa7 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -12,6 +12,22 @@
   return $?
 }
 
+nvm_curl() {
+  if nvm_has "curl"; then
+    curl $*
+  elif nvm_has "wget"; then
+    # Emulate curl with wget
+    ARGS="$*"
+    ARGS=${ARGS/--progress-bar /--progress=bar }
+    ARGS=${ARGS/-L /}
+    ARGS=${ARGS/-I /}
+    ARGS=${ARGS/-s /-q }
+    ARGS=${ARGS/-o /-O }
+    ARGS=${ARGS/-C /-c }
+    wget $ARGS
+  fi
+}
+
 # Make zsh glob matching behave same as bash
 # This fixes the "zsh: no matches found" errors
 if nvm_has "unsetopt"; then
@@ -164,7 +180,7 @@
   else
     PATTERN=".*"
   fi
-  VERSIONS=`curl -s $NVM_NODEJS_ORG_MIRROR/ \
+  VERSIONS=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/ -o - \
               | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' \
               | \grep -w "${PATTERN}" \
               | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n`
@@ -290,8 +306,8 @@
       version_not_provided=0
       local provided_version
 
-      if ! nvm_has "curl"; then
-        echo 'NVM Needs curl to proceed.' >&2;
+      if ! nvm_has "nvm_curl"; then
+        echo 'nvm needs curl or wget to proceed.' >&2;
         return 1
       fi
 
@@ -354,14 +370,14 @@
           if nvm_binary_available "$VERSION"; then
             t="$VERSION-$os-$arch"
             url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz"
-            sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-${t}.tar.gz | awk '{print $1}'`
+            sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-${t}.tar.gz | awk '{print $1}'`
             local tmpdir
             tmpdir="$NVM_DIR/bin/node-${t}"
             local tmptarball
             tmptarball="$tmpdir/node-${t}.tar.gz"
             if (
               mkdir -p "$tmpdir" && \
-              curl -L -C - --progress-bar $url -o "$tmptarball" && \
+              nvm_curl -L -C - --progress-bar $url -o "$tmptarball" && \
               nvm_checksum "$tmptarball" $sum && \
               tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
               rm -f "$tmptarball" && \
@@ -391,16 +407,16 @@
       tmpdir="$NVM_DIR/src"
       local tmptarball
       tmptarball="$tmpdir/node-$VERSION.tar.gz"
-      if [ "`curl -Is "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then
+      if [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then
         tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz"
-        sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-$VERSION.tar.gz | awk '{print $1}'`
-      elif [ "`curl -Is "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then
+        sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-$VERSION.tar.gz | awk '{print $1}'`
+      elif [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then
         tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz"
       fi
       if (
         [ -n "$tarball" ] && \
         mkdir -p "$tmpdir" && \
-        curl -L --progress-bar $tarball -o "$tmptarball" && \
+        nvm_curl -L --progress-bar $tarball -o "$tmptarball" && \
         nvm_checksum "$tmptarball" $sum && \
         tar -xzf "$tmptarball" -C "$tmpdir" && \
         cd "$tmpdir/node-$VERSION" && \
@@ -419,10 +435,10 @@
             if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then
               echo "npm requires node v0.2.3 or higher" >&2
             else
-              curl https://npmjs.org/install.sh | clean=yes npm_install=0.2.19 sh
+              nvm_curl https://npmjs.org/install.sh -o - | clean=yes npm_install=0.2.19 sh
             fi
           else
-            curl https://npmjs.org/install.sh | clean=yes sh
+            nvm_curl https://npmjs.org/install.sh -o - | clean=yes sh
           fi
         fi
       else
