diff --git a/nvm.sh b/nvm.sh
index c26d229..1ac6635 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -49,6 +49,10 @@
   [ "$(nvm deactivate >/dev/null 2>&1 && command -v node)" != '' ]
 }
 
+nvm_has_system_iojs() {
+  [ "$(nvm deactivate >/dev/null 2>&1 && command -v iojs)" != '' ]
+}
+
 # Make zsh glob matching behave same as bash
 # This fixes the "zsh: no matches found" errors
 if nvm_has "unsetopt"; then
@@ -71,6 +75,13 @@
   export NVM_NODEJS_ORG_MIRROR="https://nodejs.org/dist"
 fi
 
+if [ -z "$NVM_IOJS_ORG_MIRROR" ]; then
+  export NVM_IOJS_ORG_MIRROR="https://iojs.org/dist"
+fi
+if [ -z "$NVM_IOJS_ORG_VERSION_LISTING" ]; then
+  export NVM_IOJS_ORG_VERSION_LISTING="$NVM_IOJS_ORG_MIRROR/index.tab"
+fi
+
 nvm_tree_contains_path() {
   local tree
   tree="$1"
@@ -144,6 +155,8 @@
   NVM_WHICH_DIR="$1"
   if [ -z "$NVM_WHICH_DIR" ] || [ "_$NVM_WHICH_DIR" = "_new" ]; then
     echo "$NVM_DIR/versions/node"
+  elif [ "_$NVM_WHICH_DIR" = "_iojs" ]; then
+    echo "$NVM_DIR/versions/io.js"
   elif [ "_$NVM_WHICH_DIR" = "_old" ]; then
     echo "$NVM_DIR"
   else
@@ -162,6 +175,8 @@
   if [ -z "$VERSION" ]; then
     echo "version is required" >&2
     return 3
+  elif nvm_is_iojs_version "$VERSION"; then
+    echo "$(nvm_version_dir iojs)/$(nvm_strip_iojs_prefix "$VERSION")"
   elif nvm_version_greater 0.12.0 "$VERSION"; then
     echo "$(nvm_version_dir old)/$VERSION"
   else
@@ -184,11 +199,17 @@
     return $?
   fi
 
+  case "_$PATTERN" in
+    "_$(nvm_node_prefix)" | "_$(nvm_node_prefix)-")
+      PATTERN="stable"
+    ;;
+  esac
   VERSION="$(nvm_ls "$PATTERN" | tail -n1)"
-  echo "$VERSION"
-
-  if [ "$VERSION" = 'N/A' ]; then
-    return 3
+  if [ -z "$VERSION" ] || [ "_$VERSION" = "_N/A" ]; then
+    echo "N/A"
+    return 3;
+  else
+    echo "$VERSION"
   fi
 }
 
@@ -196,8 +217,12 @@
   local PATTERN
   PATTERN="$1"
   local VERSION
-  VERSION="$(nvm_ls_remote "$PATTERN" | tail -n1)"
-  echo "$VERSION"
+  if nvm_is_iojs_version "$PATTERN"; then
+    VERSION="$(nvm_ls_remote_iojs "$PATTERN")"
+  else
+    VERSION="$(nvm_ls_remote "$PATTERN")"
+  fi
+  echo "$VERSION" | tail -n1
 
   if [ "_$VERSION" = '_N/A' ]; then
     return 3
@@ -209,7 +234,13 @@
 }
 
 nvm_ensure_version_prefix() {
-  echo "$1" | command sed -e 's/^\([0-9]\)/v\1/g'
+  local NVM_VERSION
+  NVM_VERSION="$(nvm_strip_iojs_prefix "$1" | command sed -e 's/^\([0-9]\)/v\1/g')"
+  if nvm_is_iojs_version "$1"; then
+    echo "$(nvm_add_iojs_prefix "$NVM_VERSION")"
+  else
+    echo "$NVM_VERSION"
+  fi
 }
 
 nvm_format_version() {
@@ -238,7 +269,13 @@
 }
 
 nvm_strip_path() {
-  echo "$1" | command sed -e "s#$NVM_DIR/[^/]*$2[^:]*:##g" -e "s#:$NVM_DIR/[^/]*$2[^:]*##g" -e "s#$NVM_DIR/[^/]*$2[^:]*##g"
+  echo "$1" | command sed \
+    -e "s#$NVM_DIR/[^/]*$2[^:]*:##g" \
+    -e "s#:$NVM_DIR/[^/]*$2[^:]*##g" \
+    -e "s#$NVM_DIR/[^/]*$2[^:]*##g" \
+    -e "s#$NVM_DIR/versions/[^/]*/[^/]*$2[^:]*:##g" \
+    -e "s#:$NVM_DIR/versions/[^/]*/[^/]*$2[^:]*##g" \
+    -e "s#$NVM_DIR/versions/[^/]*/[^/]*$2[^:]*##g"
 }
 
 nvm_prepend_path() {
@@ -253,7 +290,7 @@
   # binaries started with node 0.8.6
   local FIRST_VERSION_WITH_BINARY
   FIRST_VERSION_WITH_BINARY="0.8.6"
-  nvm_version_greater_than_or_equal_to "$1" "$FIRST_VERSION_WITH_BINARY"
+  nvm_version_greater_than_or_equal_to "$(nvm_strip_iojs_prefix $1)" "$FIRST_VERSION_WITH_BINARY"
 }
 
 nvm_alias() {
@@ -279,9 +316,11 @@
   NVM_LS_CURRENT_NODE_PATH="$(command which node 2> /dev/null)"
   if [ $? -ne 0 ]; then
     echo 'none'
+  elif nvm_tree_contains_path "$(nvm_version_dir iojs)" "$NVM_LS_CURRENT_NODE_PATH"; then
+    echo "$(nvm_add_iojs_prefix $(iojs --version 2>/dev/null))"
   elif nvm_tree_contains_path "$NVM_DIR" "$NVM_LS_CURRENT_NODE_PATH"; then
     local VERSION
-    VERSION="$(node -v 2>/dev/null)"
+    VERSION="$(node --version 2>/dev/null)"
     if [ "$VERSION" = "v0.6.21-pre" ]; then
       echo "v0.6.21"
     else
@@ -345,6 +384,31 @@
   return 2
 }
 
+nvm_iojs_prefix() {
+  echo "iojs"
+}
+nvm_node_prefix() {
+  echo "node"
+}
+
+nvm_is_iojs_version() {
+  [ "_$(echo "$1" | cut -c1-5)" = "_iojs-" ]
+}
+
+nvm_add_iojs_prefix() {
+  command echo "$(nvm_iojs_prefix)-$(nvm_ensure_version_prefix "$(nvm_strip_iojs_prefix "$1")")"
+}
+
+nvm_strip_iojs_prefix() {
+  local NVM_IOJS_PREFIX
+  NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
+  if [ "_$1" = "_$NVM_IOJS_PREFIX" ]; then
+    echo
+  else
+    echo "$1" | command sed "s/^$NVM_IOJS_PREFIX-//"
+  fi
+}
+
 nvm_ls() {
   local PATTERN
   PATTERN="$1"
@@ -359,20 +423,31 @@
     return
   fi
 
+  case "$PATTERN" in
+    "$(nvm_iojs_prefix)" | "$(nvm_node_prefix)")
+      PATTERN="$PATTERN-"
+    ;;
+    *)
+      PATTERN=$(nvm_ensure_version_prefix $PATTERN)
+    ;;
+  esac
   # If it looks like an explicit version, don't do anything funny
-  PATTERN=$(nvm_ensure_version_prefix $PATTERN)
   if [ "_$(echo "$PATTERN" | cut -c1-1)" = "_v" ] && [ "_$(nvm_num_version_groups "$PATTERN")" = "_3" ]; then
     if [ -d "$(nvm_version_path "$PATTERN")" ]; then
       VERSIONS="$PATTERN"
     fi
   else
-    if [ "_$PATTERN" != "_system" ]; then
-      local NUM_VERSION_GROUPS
-      NUM_VERSION_GROUPS="$(nvm_num_version_groups "$PATTERN")"
-      if [ "_$NUM_VERSION_GROUPS" = "_2" ] || [ "_$NUM_VERSION_GROUPS" = "_1" ]; then
-        PATTERN="$(echo "$PATTERN" | command sed -e 's/\.*$//g')."
-      fi
-    fi
+    case "$PATTERN" in
+      "$(nvm_iojs_prefix)-" | "$(nvm_node_prefix)-" | "system")
+      ;;
+      *)
+        local NUM_VERSION_GROUPS
+        NUM_VERSION_GROUPS="$(nvm_num_version_groups "$PATTERN")"
+        if [ "_$NUM_VERSION_GROUPS" = "_2" ] || [ "_$NUM_VERSION_GROUPS" = "_1" ]; then
+          PATTERN="$(echo "$PATTERN" | command sed -e 's/\.*$//g')."
+        fi
+      ;;
+    esac
 
     local ZHS_HAS_SHWORDSPLIT_UNSET
     ZHS_HAS_SHWORDSPLIT_UNSET=1
@@ -383,7 +458,26 @@
 
     local NVM_DIRS_TO_TEST_AND_SEARCH
     local NVM_DIRS_TO_SEARCH
-    NVM_DIRS_TO_TEST_AND_SEARCH="$(nvm_version_dir old) $(nvm_version_dir new)"
+    local NVM_ADD_SYSTEM
+    NVM_ADD_SYSTEM=false
+    if nvm_is_iojs_version "$PATTERN"; then
+      NVM_DIRS_TO_TEST_AND_SEARCH="$(nvm_version_dir iojs)"
+      PATTERN="$(nvm_strip_iojs_prefix "$PATTERN")"
+      if nvm_has_system_iojs; then
+        NVM_ADD_SYSTEM=true
+      fi
+    elif [ "_$PATTERN" = "_$(nvm_node_prefix)-" ]; then
+      NVM_DIRS_TO_TEST_AND_SEARCH="$(nvm_version_dir old) $(nvm_version_dir new)"
+      PATTERN=''
+      if nvm_has_system_node; then
+        NVM_ADD_SYSTEM=true
+      fi
+    else
+      NVM_DIRS_TO_TEST_AND_SEARCH="$(nvm_version_dir old) $(nvm_version_dir new) $(nvm_version_dir iojs)"
+      if nvm_has_system_iojs || nvm_has_system_node; then
+        NVM_ADD_SYSTEM=true
+      fi
+    fi
     for NVM_VERSION_DIR in $NVM_DIRS_TO_TEST_AND_SEARCH; do
       if [ -d "$NVM_VERSION_DIR" ]; then
         NVM_DIRS_TO_SEARCH="$NVM_VERSION_DIR $NVM_DIRS_TO_SEARCH"
@@ -394,19 +488,23 @@
       PATTERN='v'
     fi
     VERSIONS="$(command find $NVM_DIRS_TO_SEARCH -maxdepth 1 -type d -name "$PATTERN*" \
+      | command sed "s#$(nvm_version_dir iojs)/#"$(nvm_iojs_prefix)"-#" \
       | command sed "s#^$NVM_DIR/##" \
       | command grep -v -e '^versions$' \
+      | command sed 's#^versions/##' \
       | sed -e 's/^v/node-v/' \
-      | command sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n \
+      | sed -e 's#^\(iojs\)[-/]v#\1.v#' | sed -e 's#^\(node\)[-/]v#\1.v#' \
+      | command sort -t. -u -k 2.2,2n -k 3,3n -k 4,4n \
       | command sort -s -t- -k1.1,1.1 \
-      | command sed 's/^node-//')"
+      | command sed 's/^\(iojs\)\./\1-/' \
+      | command sed 's/^node\.//')"
 
     if [ $ZHS_HAS_SHWORDSPLIT_UNSET -eq 1 ] && nvm_has "unsetopt"; then
       unsetopt shwordsplit
     fi
   fi
 
-  if nvm_has_system_node; then
+  if [ "$NVM_ADD_SYSTEM" = true ]; then
     if [ -z "$PATTERN" ] || [ "_$PATTERN" = "_v" ]; then
       VERSIONS="$VERSIONS$(command printf '\n%s' 'system')"
     elif [ "$PATTERN" = 'system' ]; then
@@ -444,7 +542,28 @@
     return 3
   fi
   echo "$VERSIONS"
-  return
+}
+
+nvm_ls_remote_iojs() {
+  local PATTERN
+  PATTERN="$1"
+  local VERSIONS
+  if [ -n "$PATTERN" ]; then
+    PATTERN="$(nvm_ensure_version_prefix $(nvm_strip_iojs_prefix "$PATTERN"))"
+  else
+    PATTERN=".*"
+  fi
+  VERSIONS="$(nvm_download -L -s $NVM_IOJS_ORG_VERSION_LISTING -o - \
+    | command sed 1d \
+    | command sed "s/^/$(nvm_iojs_prefix)-/" \
+    | command cut -f1 \
+    | command grep -w "$PATTERN" \
+    | command sort)"
+  if [ -z "$VERSIONS" ]; then
+    echo "N/A"
+    return 3
+  fi
+  echo "$VERSIONS"
 }
 
 nvm_checksum() {
@@ -473,14 +592,14 @@
   local NVM_CURRENT
   NVM_CURRENT=$(nvm_ls_current)
   echo "$1" | while read VERSION; do
-    if [ "$VERSION" = "$NVM_CURRENT" ]; then
-      FORMAT='\033[0;32m-> %9s\033[0m'
-    elif [ -d "$(nvm_version_path "$VERSION" 2> /dev/null)" ]; then
-      FORMAT='\033[0;34m%12s\033[0m'
+    if [ "_$VERSION" = "_$NVM_CURRENT" ]; then
+      FORMAT='\033[0;32m-> %12s\033[0m'
     elif [ "$VERSION" = "system" ]; then
-      FORMAT='\033[0;33m%12s\033[0m'
+      FORMAT='\033[0;33m%15s\033[0m'
+    elif [ -d "$(nvm_version_path "$VERSION" 2> /dev/null)" ]; then
+      FORMAT='\033[0;34m%15s\033[0m'
     else
-      FORMAT='%12s'
+      FORMAT='%15s'
     fi
     printf "$FORMAT\n" $VERSION
   done
@@ -565,12 +684,68 @@
   echo "$NVM_ARCH"
 }
 
+nvm_install_iojs_binary() {
+  local PREFIXED_VERSION
+  PREFIXED_VERSION="$1"
+  local REINSTALL_PACKAGES_FROM
+  REINSTALL_PACKAGES_FROM="$2"
+
+  if ! nvm_is_iojs_version "$PREFIXED_VERSION"; then
+    echo 'nvm_install_iojs_binary requires an iojs-prefixed version.' >&2
+    return 10
+  fi
+
+  local VERSION
+  VERSION="$(nvm_strip_iojs_prefix "$PREFIXED_VERSION")"
+  local VERSION_PATH
+  VERSION_PATH="$(nvm_version_path "$PREFIXED_VERSION")"
+  local NVM_OS
+  NVM_OS="$(nvm_get_os)"
+  local t
+  local url
+  local sum
+
+  if [ -n "$NVM_OS" ]; then
+    if nvm_binary_available "$VERSION"; then
+      t="$VERSION-$NVM_OS-$(nvm_get_arch)"
+      url="$NVM_IOJS_ORG_MIRROR/$VERSION/$(nvm_iojs_prefix)-${t}.tar.gz"
+      sum="$(nvm_download -L -s $NVM_IOJS_ORG_MIRROR/$VERSION/SHASUMS256.txt -o - | command grep $(nvm_iojs_prefix)-${t}.tar.gz | command awk '{print $1}')"
+      local tmpdir
+      tmpdir="$NVM_DIR/bin/iojs-${t}"
+      local tmptarball
+      tmptarball="$tmpdir/iojs-${t}.tar.gz"
+      if (
+        command mkdir -p "$tmpdir" && \
+        nvm_download -L -C - --progress-bar $url -o "$tmptarball" && \
+        echo "WARNING: checksums are currently disabled for io.js" >&2 && \
+        # nvm_checksum "$tmptarball" $sum && \
+        command tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
+        command rm -f "$tmptarball" && \
+        command mkdir -p "$VERSION_PATH" && \
+        command mv "$tmpdir"/* "$VERSION_PATH"
+      ); then
+        return 0
+      else
+        echo "Binary download failed, trying source." >&2
+        command rm -rf "$tmptarball" "$tmpdir"
+        return 1
+      fi
+    fi
+  fi
+  return 2
+}
+
 nvm_install_node_binary() {
   local VERSION
   VERSION="$1"
   local REINSTALL_PACKAGES_FROM
   REINSTALL_PACKAGES_FROM="$2"
 
+  if nvm_is_iojs_version "$PREFIXED_VERSION"; then
+    echo 'nvm_install_node_binary does not allow an iojs-prefixed version.' >&2
+    return 10
+  fi
+
   local VERSION_PATH
   VERSION_PATH="$(nvm_version_path "$VERSION")"
   local NVM_OS
@@ -594,9 +769,9 @@
         nvm_checksum "$tmptarball" $sum && \
         command tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
         command rm -f "$tmptarball" && \
-        command mv "$tmpdir" "$VERSION_PATH"
-        )
-      then
+        command mkdir -p "$VERSION_PATH" && \
+        command mv "$tmpdir"/* "$VERSION_PATH"
+      ); then
         return 0
       else
         echo "Binary download failed, trying source." >&2
@@ -768,10 +943,6 @@
         shift
       fi
 
-      if [ "_$NVM_OS" = "_freebsd" ]; then
-        nobinary=1
-      fi
-
       provided_version="$1"
 
       if [ -z "$provided_version" ]; then
@@ -783,7 +954,18 @@
         shift
       fi
 
-      VERSION="$(nvm_remote_version "$provided_version")"
+      case "_$provided_version" in
+        "_$(nvm_iojs_prefix)" | "_io.js")
+          VERSION="$(nvm_add_iojs_prefix $(nvm_ls_remote_iojs | tail -n1))"
+        ;;
+        "_$(nvm_node_prefix)")
+          VERSION="$(nvm_ls_remote stable)"
+        ;;
+        *)
+          VERSION="$(nvm_remote_version "$provided_version")"
+        ;;
+      esac
+
       ADDITIONAL_PARAMETERS=''
       local PROVIDED_REINSTALL_PACKAGES_FROM
       local REINSTALL_PACKAGES_FROM
@@ -810,6 +992,11 @@
         return 5
       fi
 
+      local NVM_IOJS
+      if nvm_is_iojs_version "$VERSION"; then
+        NVM_IOJS=true
+      fi
+
       local VERSION_PATH
       VERSION_PATH="$(nvm_version_path "$VERSION")"
       if [ -d "$VERSION_PATH" ]; then
@@ -825,9 +1012,24 @@
         return 3
       fi
 
+      if [ "_$NVM_OS" = "_freebsd" ]; then
+        # node.js and io.js do not have a FreeBSD binary
+        nobinary=1
+      elif [ "_$NVM_OS" = "_sunos" ] && [ "$NVM_IOJS" = true ]; then
+        # io.js does not have a SunOS binary
+        nobinary=1
+      fi
       # skip binary install if "nobinary" option specified.
-      if [ $nobinary -ne 1 ] && nvm_install_node_binary "$VERSION" "$REINSTALL_PACKAGES_FROM"; then
-        if nvm use "$VERSION" \
+      if [ $nobinary -ne 1 ] && nvm_binary_available "$VERSION"; then
+        local NVM_INSTALL_SUCCESS
+        if [ "$NVM_IOJS" = true ] && nvm_install_iojs_binary "$VERSION" "$REINSTALL_PACKAGES_FROM"; then
+          NVM_INSTALL_SUCCESS=true
+        elif [ "$NVM_IOJS" != true ] && nvm_install_node_binary "$VERSION" "$REINSTALL_PACKAGES_FROM"; then
+          NVM_INSTALL_SUCCESS=true
+        fi
+
+        if [ "$NVM_INSTALL_SUCCESS" = true ] \
+          && nvm use "$VERSION" \
           && [ ! -z "$REINSTALL_PACKAGES_FROM" ] \
           && [ "_$REINSTALL_PACKAGES_FROM" != "_N/A" ]; then
           nvm reinstall-packages "$REINSTALL_PACKAGES_FROM"
@@ -835,17 +1037,38 @@
         return $?
       fi
 
-      nvm_install_node_source "$VERSION" "$REINSTALL_PACKAGES_FROM" "$ADDITIONAL_PARAMETERS"
+      if [ "$NVM_IOJS" = true ]; then
+        # nvm_install_iojs_source "$VERSION" "$REINSTALL_PACKAGES_FROM" "$ADDITIONAL_PARAMETERS"
+        echo "Installing iojs from source is not currently supported" >&2
+        return 105
+      else
+        nvm_install_node_source "$VERSION" "$REINSTALL_PACKAGES_FROM" "$ADDITIONAL_PARAMETERS"
+      fi
     ;;
     "uninstall" )
       [ $# -ne 2 ] && nvm help && return
-      PATTERN="$(nvm_ensure_version_prefix "$2")"
-      if [ "_$PATTERN" = "_$(nvm_version)" ]; then
-        echo "nvm: Cannot uninstall currently-active node version, $PATTERN." >&2
+
+      local PATTERN
+      PATTERN="$2"
+      local VERSION
+      case "_$PATTERN" in
+        "_$(nvm_iojs_prefix)" | "_$(nvm_iojs_prefix)-" \
+        | "_$(nvm_node_prefix)" | "_$(nvm_node_prefix)-")
+          VERSION="$(nvm_version $PATTERN)"
+        ;;
+        *)
+          VERSION="$(nvm_version "$PATTERN")"
+        ;;
+      esac
+      if [ "_$PATTERN" = "_$(nvm_ls_current)" ]; then
+        if nvm_is_iojs_version "$PATTERN"; then
+          echo "nvm: Cannot uninstall currently-active io.js version, $VERSION (inferred from $PATTERN)." >&2
+        else
+          echo "nvm: Cannot uninstall currently-active node version, $VERSION (inferred from $PATTERN)." >&2
+        fi
         return 1
       fi
-      local VERSION
-      VERSION="$(nvm_version "$PATTERN")"
+
       local VERSION_PATH
       VERSION_PATH="$(nvm_version_path "$VERSION")"
       if [ ! -d "$VERSION_PATH" ]; then
@@ -855,20 +1078,28 @@
 
       t="$VERSION-$(nvm_get_os)-$(nvm_get_arch)"
 
+      local NVM_PREFIX
+      local NVM_SUCCESS_MSG
+      if nvm_is_iojs_version "$VERSION"; then
+        NVM_PREFIX="$(nvm_iojs_prefix)"
+        NVM_SUCCESS_MSG="Uninstalled io.js $(nvm_strip_iojs_prefix $VERSION)"
+      else
+        NVM_PREFIX="$(nvm_node_prefix)"
+        NVM_SUCCESS_MSG="Uninstalled node $VERSION"
+      fi
       # Delete all files related to target version.
-      command rm -rf "$NVM_DIR/src/node-$VERSION" \
-             "$NVM_DIR/src/node-$VERSION.tar.gz" \
-             "$NVM_DIR/bin/node-${t}" \
-             "$NVM_DIR/bin/node-${t}.tar.gz" \
+      command rm -rf "$NVM_DIR/src/$NVM_PREFIX-$VERSION" \
+             "$NVM_DIR/src/$NVM_PREFIX-$VERSION.tar.gz" \
+             "$NVM_DIR/bin/$NVM_PREFIX-${t}" \
+             "$NVM_DIR/bin/$NVM_PREFIX-${t}.tar.gz" \
              "$VERSION_PATH" 2>/dev/null
-      echo "Uninstalled node $VERSION"
+      echo "$NVM_SUCCESS_MSG"
 
-      # Rm any aliases that point to uninstalled version.
+      # rm any aliases that point to uninstalled version.
       for ALIAS in `command grep -l $VERSION "$(nvm_alias_path)/*" 2>/dev/null`
       do
         nvm unalias "$(command basename "$ALIAS")"
       done
-
     ;;
     "deactivate" )
       local NEWPATH
@@ -900,16 +1131,31 @@
         nvm help
         return 127
       fi
+
       if [ $# -eq 1 ]; then
         nvm_rc_version
         if [ -n "$NVM_RC_VERSION" ]; then
           VERSION="$(nvm_version "$NVM_RC_VERSION")"
         fi
-      elif [ "_$2" != '_system' ]; then
-        VERSION="$(nvm_version "$2")"
       else
-        VERSION="$2"
+        local NVM_IOJS_PREFIX
+        NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
+        case "_$2" in
+          "_$NVM_IOJS_PREFIX" | "_io.js")
+            VERSION="$(nvm_add_iojs_prefix $(nvm_ls | command grep "$NVM_IOJS_PREFIX" | tail -n1))"
+          ;;
+          "_$(nvm_node_prefix)")
+            VERSION="$(nvm_version stable)"
+          ;;
+          "_system")
+            VERSION="system"
+          ;;
+          *)
+            VERSION="$(nvm_version "$2")"
+          ;;
+        esac
       fi
+
       if [ -z "$VERSION" ]; then
         nvm help
         return 127
@@ -919,6 +1165,9 @@
         if nvm_has_system_node && nvm deactivate >/dev/null 2>&1; then
           echo "Now using system version of node: $(node -v 2>/dev/null)."
           return
+        elif nvm_has_system_iojs && nvm deactivate >/dev/null 2>&1; then
+          echo "Now using system version of io.js: $(iojs --version 2>/dev/null)."
+          return
         else
           echo "System version of node not found." >&2
           return 127
@@ -990,11 +1239,22 @@
         fi
       fi
 
-      echo "Running node $VERSION"
+      local NVM_IOJS
+      if nvm_is_iojs_version "$VERSION"; then
+        NVM_IOJS=true
+      fi
+
       local ARGS
       ARGS="$@"
       local OUTPUT
-      OUTPUT="$(nvm use "$VERSION" >/dev/null && node "$ARGS")"
+
+      if [ "$NVM_IOJS" = true ]; then
+        echo "Running io.js $(nvm_strip_iojs_prefix "$VERSION")"
+        OUTPUT="$(nvm use "$VERSION" >/dev/null && iojs "$ARGS")"
+      else
+        echo "Running node $VERSION"
+        OUTPUT="$(nvm use "$VERSION" >/dev/null && node "$ARGS")"
+      fi
       local EXIT_CODE
       EXIT_CODE="$?"
       echo "$OUTPUT"
@@ -1037,11 +1297,44 @@
       return $NVM_LS_EXIT_CODE
     ;;
     "ls-remote" | "list-remote" )
-      local NVM_LS_EXIT_CODE
-      NVM_LS_OUTPUT=$(nvm_ls_remote "$2")
-      NVM_LS_EXIT_CODE=$?
-      nvm_print_versions "$NVM_LS_OUTPUT"
-      return $NVM_LS_EXIT_CODE
+      local PATTERN
+      PATTERN="$2"
+      local NVM_FLAVOR
+      case "_$PATTERN" in
+        "_$(nvm_iojs_prefix)" | "_$(nvm_node_prefix)" )
+          NVM_FLAVOR="$PATTERN"
+          PATTERN="$3"
+        ;;
+      esac
+
+      local NVM_LS_REMOTE_EXIT_CODE
+      NVM_LS_REMOTE_EXIT_CODE=0
+      local NVM_LS_REMOTE_OUTPUT
+      NVM_LS_REMOTE_OUTPUT=''
+      if [ "_$NVM_FLAVOR" != "_$(nvm_iojs_prefix)" ]; then
+        NVM_LS_REMOTE_OUTPUT=$(nvm_ls_remote "$PATTERN")
+        NVM_LS_REMOTE_EXIT_CODE=$?
+      fi
+
+      local NVM_LS_REMOTE_IOJS_EXIT_CODE
+      NVM_LS_REMOTE_IOJS_EXIT_CODE=0
+      local NVM_LS_REMOTE_IOJS_OUTPUT
+      NVM_LS_REMOTE_IOJS_OUTPUT=''
+      if [ "_$NVM_FLAVOR" != "_$(nvm_node_prefix)" ]; then
+        NVM_LS_REMOTE_IOJS_OUTPUT=$(nvm_ls_remote_iojs "$PATTERN")
+        NVM_LS_REMOTE_IOJS_EXIT_CODE=$?
+      fi
+
+      local NVM_OUTPUT
+      NVM_OUTPUT="$(echo "$NVM_LS_REMOTE_OUTPUT
+$NVM_LS_REMOTE_IOJS_OUTPUT" | grep -v "N/A" | sed '/^$/d')"
+      if [ -n "$NVM_OUTPUT" ]; then
+        nvm_print_versions "$NVM_OUTPUT"
+        return $NVM_LS_REMOTE_EXIT_CODE || $NVM_LS_REMOTE_IOJS_EXIT_CODE
+      else
+        nvm_print_versions "N/A"
+        return 3
+      fi
     ;;
     "current" )
       nvm_version current
@@ -1063,7 +1356,7 @@
       fi
 
       if [ "_$VERSION" = '_system' ]; then
-        if nvm_has_system_node >/dev/null 2>&1; then
+        if nvm_has_system_iojs >/dev/null 2>&1 || nvm_has_system_node >/dev/null 2>&1; then
           local NVM_BIN
           NVM_BIN="$(nvm use system >/dev/null 2>&1 && command which node)"
           if [ -n "$NVM_BIN" ]; then
@@ -1162,8 +1455,8 @@
 
       local INSTALLS
       if [ "_$PROVIDED_VERSION" = "_system" ]; then
-        if ! nvm_has_system_node; then
-          echo 'No system version of node detected.' >&2
+        if ! nvm_has_system_node && ! nvm_has_system_iojs; then
+          echo 'No system version of node or io.js detected.' >&2
           return 3
         fi
         INSTALLS=$(nvm deactivate > /dev/null && npm list -g --depth=0 | command tail -n +2 | command grep -o -e ' [^@]*' | command cut -c 2- | command grep -v npm | command xargs)
@@ -1187,7 +1480,14 @@
       echo "0.22.2"
     ;;
     "unload" )
-      unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version nvm_version_greater nvm_version_greater_than_or_equal_to nvm_supports_source_options > /dev/null 2>&1
+      unset -f nvm nvm_print_versions nvm_checksum \
+        nvm_iojs_prefix nvm_node_prefix \
+        nvm_add_iojs_prefix nvm_strip_iojs_prefix \
+        nvm_is_iojs_version \
+        nvm_ls_remote nvm_ls nvm_remote_version \
+        nvm_version nvm_rc_version \
+        nvm_version_greater nvm_version_greater_than_or_equal_to \
+        nvm_supports_source_options > /dev/null 2>&1
       unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
     ;;
     * )
diff --git "a/test/fast/Listing versions/Running \"nvm ls node\" should return a nonzero exit code when not found" "b/test/fast/Listing versions/Running \"nvm ls node_\" should return a nonzero exit code when not found"
similarity index 78%
rename from "test/fast/Listing versions/Running \"nvm ls node\" should return a nonzero exit code when not found"
rename to "test/fast/Listing versions/Running \"nvm ls node_\" should return a nonzero exit code when not found"
index f7d68f7..2d6b012 100755
--- "a/test/fast/Listing versions/Running \"nvm ls node\" should return a nonzero exit code when not found"
+++ "b/test/fast/Listing versions/Running \"nvm ls node_\" should return a nonzero exit code when not found"
@@ -2,6 +2,6 @@
 
 . ../../../nvm.sh
 
-nvm ls node
+nvm ls node_
 [ "$?" = "3" ]
 
diff --git "a/test/fast/Listing versions/Running \"nvm ls\" should display all installed versions." "b/test/fast/Listing versions/Running \"nvm ls\" should display all installed versions."
index be0dddb..e7cc3f7 100755
--- "a/test/fast/Listing versions/Running \"nvm ls\" should display all installed versions."
+++ "b/test/fast/Listing versions/Running \"nvm ls\" should display all installed versions."
@@ -8,11 +8,17 @@
 mkdir ../../../v0.3.1
 mkdir ../../../v0.3.3
 mkdir ../../../v0.3.9
+mkdir -p ../../../versions/node/v0.12.87
+mkdir -p ../../../versions/node/v0.12.9
+mkdir -p ../../../versions/io.js/v0.1.2
+mkdir -p ../../../versions/io.js/v0.10.2
 
 # The result should contain the version numbers.
-nvm ls | grep v0.0.1 &&
-nvm ls | grep v0.0.3 &&
-nvm ls | grep v0.0.9 &&
-nvm ls | grep v0.3.1 &&
-nvm ls | grep v0.3.3 &&
-nvm ls | grep v0.3.9
+nvm ls | grep v0.0.1 >/dev/null &&
+nvm ls | grep v0.0.3 >/dev/null &&
+nvm ls | grep v0.0.9 >/dev/null &&
+nvm ls | grep v0.3.1 >/dev/null &&
+nvm ls | grep v0.3.3 >/dev/null &&
+nvm ls | grep v0.3.9 >/dev/null &&
+nvm ls | grep v0.12.87 >/dev/null &&
+nvm ls | grep iojs-v0.1.2 >/dev/null
diff --git a/test/fast/Unit tests/nvm_add_iojs_prefix b/test/fast/Unit tests/nvm_add_iojs_prefix
new file mode 100755
index 0000000..4a8d1ee
--- /dev/null
+++ b/test/fast/Unit tests/nvm_add_iojs_prefix
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+[ "_$(nvm_add_iojs_prefix 1)" = "_iojs-v1" ] || die '"nvm_add_iojs_prefix 1" did not return "iojs-v1"'
+[ "_$(nvm_add_iojs_prefix iojs-1)" = "_iojs-v1" ] || die '"nvm_add_iojs_prefix iojs-1" did not return "iojs-v1"'
+[ "_$(nvm_add_iojs_prefix iojs-1.2.3)" = "_iojs-v1.2.3" ] || die '"nvm_add_iojs_prefix iojs-1.2.3" did not return "iojs-v1.2.3"'
diff --git a/test/fast/Unit tests/nvm_ensure_version_prefix b/test/fast/Unit tests/nvm_ensure_version_prefix
index 72b301c..184ddea 100755
--- a/test/fast/Unit tests/nvm_ensure_version_prefix
+++ b/test/fast/Unit tests/nvm_ensure_version_prefix
@@ -7,3 +7,6 @@
 [ "_$(nvm_ensure_version_prefix 1)" = "_v1" ] || die '"nvm_ensure_version_prefix 1" did not return "v1"'
 [ "_$(nvm_ensure_version_prefix v1)" = "_v1" ] || die '"nvm_ensure_version_prefix v1" did not return "v1"'
 [ "_$(nvm_ensure_version_prefix foo)" = "_foo" ] || die '"nvm_ensure_version_prefix foo" did not return "foo"'
+
+[ "_$(nvm_ensure_version_prefix iojs-1)" = "_iojs-v1" ] || die '"nvm_ensure_version_prefix iojs-1" did not return "iojs-v1"'
+[ "_$(nvm_ensure_version_prefix iojs-v1)" = "_iojs-v1" ] || die '"nvm_ensure_version_prefix iojs-v1" did not return "iojs-v1"'
diff --git a/test/fast/Unit tests/nvm_has_system_iojs b/test/fast/Unit tests/nvm_has_system_iojs
new file mode 100755
index 0000000..bb58da6
--- /dev/null
+++ b/test/fast/Unit tests/nvm_has_system_iojs
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+cleanup () {
+  rm ../../../versions/io.js/v0.1.2/node
+  rm ../../../versions/io.js/v0.1.2/iojs
+  rmdir ../../../versions/io.js/v0.1.2
+}
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+mkdir ../../../versions/io.js/v0.1.2
+touch ../../../versions/io.js/v0.1.2/node
+touch ../../../versions/io.js/v0.1.2/iojs
+
+nvm use iojs-v0.1.2
+
+if command -v iojs; then
+  nvm_has_system_iojs
+else
+  ! nvm_has_system_iojs
+fi
+
+nvm deactivate /dev/null 2>&1
+
+if command -v iojs; then
+  nvm_has_system_iojs
+else
+  ! nvm_has_system_iojs
+fi
+
diff --git a/test/fast/Unit tests/nvm_iojs_prefix b/test/fast/Unit tests/nvm_iojs_prefix
new file mode 100755
index 0000000..6666695
--- /dev/null
+++ b/test/fast/Unit tests/nvm_iojs_prefix
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+[ "$(nvm_iojs_prefix)" = "iojs" ] || die '"nvm_iojs_prefix" did not return the string "iojs". why did this fail?!'
diff --git a/test/fast/Unit tests/nvm_is_iojs_version b/test/fast/Unit tests/nvm_is_iojs_version
new file mode 100755
index 0000000..e2f5e3f
--- /dev/null
+++ b/test/fast/Unit tests/nvm_is_iojs_version
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+nvm_is_iojs_version 'iojs-' || die '"nvm_is_iojs_version iojs- was not true'
+nvm_is_iojs_version 'iojs-foo' || die '"nvm_is_iojs_version iojs- was not true'
+! nvm_is_iojs_version 'iojs' || die '"nvm_is_iojs_version iojs was not false'
+! nvm_is_iojs_version 'v1.0.0' || die '"nvm_is_iojs_version v1.0.0" was not false'
diff --git a/test/fast/Unit tests/nvm_ls_remote_iojs b/test/fast/Unit tests/nvm_ls_remote_iojs
new file mode 100755
index 0000000..bd104f1
--- /dev/null
+++ b/test/fast/Unit tests/nvm_ls_remote_iojs
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+die () { echo $@ ; cleanup ; exit 1; }
+
+cleanup() {
+  unset -f nvm_download
+}
+
+. ../../../nvm.sh
+
+# sample output at the time the test was written
+nvm_download() {
+  echo 'version	date	files	npm	v8	uv	zlib	openssl	modules'
+  echo 'v1.0.1	2015-01-14	linux-armv7l,linux-x64,linux-x86,osx-x64-tar,win-x64-exe,win-x64-msi,win-x86-exe,win-x86-msi'
+  echo 'v1.0.0	2015-01-14	linux-armv7l,linux-x64,linux-x86,osx-x64-tar,win-x64-exe,win-x64-msi,win-x86-exe,win-x86-msi'
+}
+
+OUTPUT="$(nvm_ls_remote_iojs foo)"
+EXIT_CODE="$(nvm_ls_remote_iojs foo >/dev/null 2>&1 ; echo $?)"
+[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
+[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
+
+OUTPUT="$(nvm_ls_remote_iojs)"
+EXPECTED_OUTPUT="$(nvm_download | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | sed -e 's/^/iojs-/')"
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote_iojs did not output expected sorted versions; got $(echo "$OUTPUT") expected $(echo "$EXPECTED_OUTPUT")"
+
+OUTPUT="$(nvm_ls_remote_iojs 1.0)"
+EXPECTED_OUTPUT="iojs-v1.0.0
+iojs-v1.0.1"
+
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote_iojs 1.0 did not output 1.0.x versions; got $OUTPUT"
+
+cleanup
+
diff --git a/test/fast/Unit tests/nvm_node_prefix b/test/fast/Unit tests/nvm_node_prefix
new file mode 100755
index 0000000..a0bc098
--- /dev/null
+++ b/test/fast/Unit tests/nvm_node_prefix
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+[ "$(nvm_node_prefix)" = "node" ] || die '"nvm_node_prefix" did not return the string "node". why did this fail?!'
diff --git a/test/fast/Unit tests/nvm_remote_version b/test/fast/Unit tests/nvm_remote_version
index f7fc377..16b6e3c 100755
--- a/test/fast/Unit tests/nvm_remote_version
+++ b/test/fast/Unit tests/nvm_remote_version
@@ -3,7 +3,7 @@
 die () { echo $@ ; cleanup ; exit 1; }
 
 cleanup() {
-  unset -f nvm_ls_remote
+  unset -f nvm_ls_remote nvm_ls_remote_iojs
 }
 
 . ../../../nvm.sh
@@ -11,25 +11,42 @@
 nvm_ls_remote() {
   echo "N/A"
 }
-
 OUTPUT="$(nvm_remote_version foo)"
 EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)"
-
 [ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
 [ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
 
+nvm_ls_remote_iojs() {
+  echo "N/A"
+}
+OUTPUT="$(nvm_remote_version iojs-foo)"
+EXIT_CODE="$(nvm_remote_version iojs-foo >/dev/null 2>&1 ; echo $?)"
+[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
+[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
+
+
 nvm_ls_remote() {
   echo "test output"
   echo "more test output"
   echo "pattern received: _$1_"
 }
-
 OUTPUT="$(nvm_remote_version foo)"
 EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)"
-
 [ "_$OUTPUT" = "_pattern received: _foo_" ] \
   || die "nvm_remote_version foo did not return last line only of nvm_ls_remote foo; got $OUTPUT"
 [ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_version foo did not exit with 0, got $EXIT_CODE"
 
+nvm_ls_remote_iojs() {
+  echo "test iojs output"
+  echo "more iojs test output"
+  echo "iojs pattern received: _$1_"
+
+}
+OUTPUT="$(nvm_remote_version iojs-foo)"
+EXIT_CODE="$(nvm_remote_version iojs-foo >/dev/null 2>&1 ; echo $?)"
+[ "_$OUTPUT" = "_iojs pattern received: _iojs-foo_" ] \
+  || die "nvm_remote_version iojs-foo did not return last line only of nvm_ls_remote_iojs foo; got $OUTPUT"
+[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_version iojs-foo did not exit with 0, got $EXIT_CODE"
+
 cleanup
 
diff --git a/test/fast/Unit tests/nvm_strip_iojs_prefix b/test/fast/Unit tests/nvm_strip_iojs_prefix
new file mode 100755
index 0000000..782fbc4
--- /dev/null
+++ b/test/fast/Unit tests/nvm_strip_iojs_prefix
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+[ "_$(nvm_strip_iojs_prefix iojs)" = "_" ] || die '"nvm_strip_iojs_prefix iojs" did not return an empty string'
+[ "_$(nvm_strip_iojs_prefix iojs-)" = "_" ] || die '"nvm_strip_iojs_prefix iojs-" did not return an empty string'
+[ "_$(nvm_strip_iojs_prefix iojs-foo)" = "_foo" ] || die '"nvm_strip_iojs_prefix iojs-foo" did not return "foo"'
+[ "_$(nvm_strip_iojs_prefix iojsfoo)" = "_iojsfoo" ] || die '"nvm_strip_iojs_prefix iojsfoo" did not return "iojsfoo"'
diff --git a/test/fast/Unit tests/nvm_strip_path b/test/fast/Unit tests/nvm_strip_path
index 0d119aa..b926cc4 100755
--- a/test/fast/Unit tests/nvm_strip_path
+++ b/test/fast/Unit tests/nvm_strip_path
@@ -4,7 +4,7 @@
 
 . ../../../nvm.sh
 
-TEST_PATH=$NVM_DIR/v0.10.5/bin:/usr/bin:$NVM_DIR/v0.11.5/bin:$NVM_DIR/v0.9.5/bin:/usr/local/bin:$NVM_DIR/v0.2.5/bin
+TEST_PATH=$NVM_DIR/v0.10.5/bin:/usr/bin:$NVM_DIR/v0.11.5/bin:$NVM_DIR/v0.9.5/bin:/usr/local/bin:$NVM_DIR/v0.2.5/bin:$NVM_DIR/versions/node/v0.12.0/bin:$NVM_DIR/versions/io.js/v1.0.0/bin
 
 STRIPPED_PATH=`nvm_strip_path "$TEST_PATH" "/bin"`
 
diff --git a/test/fast/Unit tests/nvm_version b/test/fast/Unit tests/nvm_version
new file mode 100755
index 0000000..4d5063b
--- /dev/null
+++ b/test/fast/Unit tests/nvm_version
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+die () { echo $@ ; cleanup ; exit 1; }
+cleanup () {
+  unset -f nvm_ls_current nvm_ls
+}
+
+. ../../../nvm.sh
+
+nvm_ls_current() {
+  echo "CURRENT!"
+  return 7
+}
+
+OUTPUT="$(nvm_version current)"
+EXPECTED_OUTPUT="CURRENT!"
+EXIT_CODE="$(nvm_version current 2>&1 >/dev/null ; echo $?)"
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die '"nvm_version current" did not return nvm_ls_current output'
+[ "_$EXIT_CODE" = "_7" ] || die '"nvm_version current" did not return nvm_ls_current exit code'
+
+OUTPUT="$(nvm_version)"
+EXPECTED_OUTPUT="CURRENT!"
+EXIT_CODE="$(nvm_version 2>&1 >/dev/null ; echo $?)"
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die '"nvm_version" did not return nvm_ls_current output'
+[ "_$EXIT_CODE" = "_7" ] || die '"nvm_version" did not return nvm_ls_current exit code'
+
+nvm_ls() {
+  echo "line 1"
+  echo "line 2"
+  echo "pattern: $1"
+}
+[ "_$(nvm_version foo)" = "_pattern: foo" ] || die '"nvm_version foo" did not pass the pattern to "nvm_ls", or return the last line'
+[ "_$(nvm_version node)" = "_pattern: stable" ] || die '"nvm_version node" did not pass "stable" to "nvm_ls"'
+[ "_$(nvm_version node-)" = "_pattern: stable" ] || die '"nvm_version node-" did not pass "stable" to "nvm_ls"'
+
+nvm_ls() { echo "N/A"; }
+OUTPUT="$(nvm_version foo)"
+EXPECTED_OUTPUT="N/A"
+EXIT_CODE="$(nvm_version foo 2>&1 >/dev/null ; echo $?)"
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die '"nvm_version" did not return N/A when nvm_ls returns N/A'
+[ "_$EXIT_CODE" = "_3" ] || die '"nvm_version" returning N/A did not exit code with code 3'
+
+nvm_ls() { echo; }
+OUTPUT="$(nvm_version foo)"
+EXPECTED_OUTPUT="N/A"
+EXIT_CODE="$(nvm_version foo 2>&1 >/dev/null ; echo $?)"
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die '"nvm_version" did not return N/A when nvm_ls returns nothing'
+[ "_$EXIT_CODE" = "_3" ] || die '"nvm_version" returning N/A did not exit code with code 3'
diff --git a/test/fast/Unit tests/nvm_version_dir b/test/fast/Unit tests/nvm_version_dir
index f6346fa..6fc880a 100755
--- a/test/fast/Unit tests/nvm_version_dir
+++ b/test/fast/Unit tests/nvm_version_dir
@@ -5,6 +5,7 @@
 . ../../../nvm.sh
 
 [ "$(nvm_version_dir)" = "$NVM_DIR/versions/node" ] || die '"nvm_version_dir" did not return new dir path'
+[ "$(nvm_version_dir iojs)" = "$NVM_DIR/versions/io.js" ] || die '"nvm_version_dir iojs" did not return iojs dir path'
 [ "$(nvm_version_dir new)" = "$(nvm_version_dir)" ] || die '"nvm_version_dir new" did not return new dir path'
 [ "$(nvm_version_dir old)" = "$NVM_DIR" ] || die '"nvm_version_dir old" did not return old dir path'
 [ "$(nvm_version_dir foo 2>&1)" = "unknown version dir" ] || die '"nvm_version_dir foo" did not error out'
diff --git a/test/fast/Unit tests/nvm_version_path b/test/fast/Unit tests/nvm_version_path
index f3ca584..547ceb8 100755
--- a/test/fast/Unit tests/nvm_version_path
+++ b/test/fast/Unit tests/nvm_version_path
@@ -8,4 +8,5 @@
 [ "$(nvm_version_path 2>&1)" = "version is required" ] || die '"nvm_version_path" did not error out'
 [ "$(nvm_version_path v0.11.0)" = "$NVM_DIR/v0.11.0" ] || die 'old version has the wrong path'
 [ "$(nvm_version_path v0.12.0)" = "$NVM_DIR/versions/node/v0.12.0" ] || die 'new version has the wrong path'
+[ "$(nvm_version_path iojs-v0.12.0)" = "$NVM_DIR/versions/io.js/v0.12.0" ] || die 'iojs version has the wrong path'
 
diff --git a/test/installation/io.js/install already installed uses it b/test/installation/io.js/install already installed uses it
new file mode 100755
index 0000000..07e5487
--- /dev/null
+++ b/test/installation/io.js/install already installed uses it
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+[ "$(nvm install invalid.invalid 2>&1)" = "Version 'invalid.invalid' not found - try \`nvm ls-remote\` to browse available versions." ] || die "nvm installing an invalid version did not print a nice error message"
+
+# Remove the stuff we're clobbering.
+[ -e ../../../versions/io.js/v1.0.0 ] && rm -R ../../../versions/io.js/v1.0.0
+[ -e ../../../versions/io.js/v1.0.1 ] && rm -R ../../../versions/io.js/v1.0.1
+
+# Install from binary
+nvm install iojs-v1.0.0
+nvm install iojs-v1.0.1
+
+nvm use iojs-v1.0.0
+
+node --version | grep v1.0.0 || die "precondition failed: iojs node doesn't start at v1.0.0"
+iojs --version | grep v1.0.0 || die "precondition failed: iojs binary doesn't start at v1.0.0"
+
+nvm install iojs-v1.0.1
+
+node --version | grep v1.0.1 || die "nvm install on already installed version doesn't use it (node binary)"
+iojs --version | grep v1.0.1 || die "nvm install on already installed version doesn't use it (iojs binary)"
+
diff --git a/test/installation/io.js/install from binary b/test/installation/io.js/install from binary
new file mode 100755
index 0000000..12cf963
--- /dev/null
+++ b/test/installation/io.js/install from binary
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+NVM_TEST_VERSION="v1.0.0"
+NVM_PREFIXED_TEST_VERSION="iojs-$NVM_TEST_VERSION"
+
+# Remove the stuff we're clobbering.
+[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION
+
+# Install from binary
+nvm install $NVM_PREFIXED_TEST_VERSION || die "install $NVM_PREFIXED_TEST_VERSION failed"
+
+# Check
+[ -d ../../../versions/io.js/$NVM_TEST_VERSION ]
+nvm run $NVM_PREFIXED_TEST_VERSION --version | grep $NVM_TEST_VERSION || die "'nvm run $NVM_PREFIXED_TEST_VERSION --version | grep $NVM_TEST_VERSION' failed"
+
diff --git a/test/installation/io.js/install two versions and use the latest one b/test/installation/io.js/install two versions and use the latest one
new file mode 100755
index 0000000..7b60d74
--- /dev/null
+++ b/test/installation/io.js/install two versions and use the latest one
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+# Remove the stuff we're clobbering.
+[ -e ../../../versions/io.js/v1.0.0 ] && rm -R ../../../versions/io.js/v1.0.0
+[ -e ../../../versions/io.js/v1.0.1 ] && rm -R ../../../versions/io.js/v1.0.1
+
+# Install from binary
+nvm install iojs-v1.0.0 || die "'nvm install iojs-v1.0.0' failed"
+nvm i iojs-v1.0.1 || die "'nvm i iojs-v1.0.1' failed"
+
+# Check
+[ -d ../../../versions/io.js/v1.0.0 ] || die "iojs v1.0.0 didn't exist"
+[ -d ../../../versions/io.js/v1.0.1 ] || die "iojs v1.0.1 didn't exist"
+
+# Use the first one
+nvm use iojs-1.0.0 || die "'nvm use iojs-1.0.0' failed"
+
+# Use the latest one
+nvm use iojs-1 || die "'nvm use iojs-1' failed"
+[ "_$(node --version)" = "_v1.0.1" ] || die "'node --version' was not v1.0.1, got: $(node --version)"
+[ "_$(iojs --version)" = "_v1.0.1" ] || die "'iojs --version' was not v1.0.1, got: $(iojs --version)"
+
diff --git a/test/installation/io.js/install version specified in .nvmrc from binary b/test/installation/io.js/install version specified in .nvmrc from binary
new file mode 100755
index 0000000..dfab909
--- /dev/null
+++ b/test/installation/io.js/install version specified in .nvmrc from binary
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+NVM_TEST_VERSION=v1.0.0
+NVM_PREFIXED_TEST_VERSION="iojs-$NVM_TEST_VERSION"
+VERSION_PATH="../../../versions/io.js/$NVM_TEST_VERSION"
+
+# Remove the stuff we're clobbering.
+[ -e $VERSION_PATH ] && rm -R $VERSION_PATH
+
+# Install from binary
+echo "$NVM_PREFIXED_TEST_VERSION" > .nvmrc
+
+nvm install || die "'nvm install' failed"
+
+# Check
+[ -d $VERSION_PATH ] || die "./$VERSION_PATH did not exist"
+nvm run $NVM_PREFIXED_TEST_VERSION --version | grep $NVM_TEST_VERSION \
+  || "'nvm run $NVM_PREFIXED_TEST_VERSION --version | grep $NVM_TEST_VERSION' failed"
+
+
diff --git a/test/installation/io.js/install while reinstalling packages b/test/installation/io.js/install while reinstalling packages
new file mode 100755
index 0000000..d7d4ee4
--- /dev/null
+++ b/test/installation/io.js/install while reinstalling packages
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+# Remove the stuff we're clobbering.
+[ -e ../../../versions/io.js/v1.0.0 ] && rm -R ../../../versions/io.js/v1.0.0
+[ -e ../../../versions/io.js/v1.0.1 ] && rm -R ../../../versions/io.js/v1.0.1
+
+# Install from binary
+nvm install iojs-v1.0.0
+
+# Check
+[ -d ../../../versions/io.js/v1.0.0 ] || die "nvm install iojs-v1.0.0 didn't install"
+
+node --version | grep v1.0.0 > /dev/null || die "nvm install didn't use iojs-v1.0.0"
+
+npm install -g is-nan@1.0.1 || die "npm install -g is-nan failed"
+npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"
+
+nvm ls iojs-1 | grep iojs-v1.0.0 > /dev/null || die "nvm ls iojs-1 didn't show iojs-v1.0.0"
+
+nvm install iojs-v1.0.1 --reinstall-packages-from=iojs-1.0.0 || die "nvm install iojs-v1.0.1 --reinstall-packages-from=iojs-1.0.0 failed"
+
+[ -d ../../../versions/io.js/v1.0.1 ] || die "nvm install iojs-v1.0.1 didn't install"
+
+nvm use iojs-1
+node --version | grep v1.0.1 > /dev/null || die "nvm use iojs-1 didn't use v1.0.1"
+
+npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"
+
diff --git a/test/installation/io.js/setup_dir b/test/installation/io.js/setup_dir
new file mode 100755
index 0000000..50dc4e4
--- /dev/null
+++ b/test/installation/io.js/setup_dir
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ -f ".nvmrc" ]; then
+  mv .nvmrc .nvmrc.bak
+fi
+
diff --git a/test/installation/io.js/teardown_dir b/test/installation/io.js/teardown_dir
new file mode 100755
index 0000000..a7e6f3e
--- /dev/null
+++ b/test/installation/io.js/teardown_dir
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+. ../../../nvm.sh
+nvm deactivate
+nvm uninstall iojs-v1.0.0
+
+if [ -f ".nvmrc" ]; then
+  rm .nvmrc
+fi
+
+if [ -f ".nvmrc.bak" ]; then
+  mv .nvmrc.bak .nvmrc
+fi
+
diff --git a/test/slow/node 0.6.21 should install 0.6.21-pre b/test/slow/node 0.6.21 should install 0.6.21-pre
index c579e16..93afff7 100755
--- a/test/slow/node 0.6.21 should install 0.6.21-pre
+++ b/test/slow/node 0.6.21 should install 0.6.21-pre
@@ -5,6 +5,6 @@
 . ../../nvm.sh
 
 nvm install 0.6.21 || die 'v0.6.21 installation failed'
-[ "$(node -v)" = "v0.6.21-pre" ] || die "v0.6.21-pre not installed with v0.6.21, got $(node -v)"
-[ "$(nvm current)" = "v0.6.21" ] || die "v0.6.21-pre not reported as v0.6.21, got $(nvm current)"
+[ "_$(node -v)" = "_v0.6.21-pre" ] || die "v0.6.21-pre not installed with v0.6.21, got $(node -v)"
+[ "_$(nvm current)" = "_v0.6.21" ] || die "v0.6.21-pre not reported as v0.6.21, got $(nvm current)"
 
diff --git "a/test/slow/nvm use/Running \"nvm use iojs\" uses latest io.js version" "b/test/slow/nvm use/Running \"nvm use iojs\" uses latest io.js version"
new file mode 100755
index 0000000..5b867f3
--- /dev/null
+++ "b/test/slow/nvm use/Running \"nvm use iojs\" uses latest io.js version"
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+nvm deactivate 2>&1 >/dev/null || die 'deactivate failed'
+
+nvm use iojs || die 'nvm use iojs failed'
+OUTPUT="$(nvm current)"
+EXPECTED_OUTPUT="iojs-v1.0.1"
+
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] \
+  || die "'nvm use iojs' + 'nvm current' did not output '$EXPECTED_OUTPUT'; got '$OUTPUT'"
diff --git "a/test/slow/nvm use/Running \"nvm use node\" uses latest stable node version" "b/test/slow/nvm use/Running \"nvm use node\" uses latest stable node version"
new file mode 100755
index 0000000..3514256
--- /dev/null
+++ "b/test/slow/nvm use/Running \"nvm use node\" uses latest stable node version"
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+nvm deactivate 2>&1 >/dev/null || die 'deactivate failed'
+
+nvm use node || die 'nvm use node failed'
+OUTPUT="$(nvm current)"
+EXPECTED_OUTPUT="$(nvm_version stable)"
+
+[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] \
+  || die "'nvm use node' + 'nvm current' did not output '$EXPECTED_OUTPUT'; got '$OUTPUT'"
diff --git a/test/slow/nvm use/setup_dir b/test/slow/nvm use/setup_dir
new file mode 100755
index 0000000..a3ab0f7
--- /dev/null
+++ b/test/slow/nvm use/setup_dir
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+. ../../../nvm.sh
+
+mkdir -p ../../../.nvm_use_bak
+if [ -d "../../../v*" ]; then
+  mv "../../../v*" ../../../.nvm_use_bak/
+fi
+
+for VERSION in "0.8.7" "0.9.1" "0.10.1" "0.11.1"; do
+  nvm install "v$VERSION"
+done
+
+for VERSION in "1.0.0" "1.0.1"; do
+  nvm install "iojs-v$VERSION"
+done
diff --git a/test/slow/nvm use/teardown_dir b/test/slow/nvm use/teardown_dir
new file mode 100755
index 0000000..eeda337
--- /dev/null
+++ b/test/slow/nvm use/teardown_dir
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+. ../../../nvm.sh
+
+for VERSION in "0.8.7" "0.9.1" "0.10.1" "0.11.1"; do
+  nvm uninstall "$VERSION"
+done
+
+for VERSION in "1.0.0" "1.0.1"; do
+  nvm uninstall "iojs-v$VERSION"
+done
+
+if [ -d ../../../.nvm_use_bak/* ]; then
+  mv ../../../.nvm_use_bak/* ../../../
+fi
+rmdir ../../../.nvm_use_bak
