diff --git a/README.md b/README.md
index 3a529e3..0c9c303 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,8 @@
 
 ## Install
 
-1. Check a clone of this repo: `git clone http://github.com/revans/bash-it.git bash_it`
-2. Run `install.sh` (it automatically backs up your `~/.bash_profile`)
+1. Check a clone of this repo: `git clone http://github.com/revans/bash-it.git ~/.bash_it`
+2. Run `~/.bash_it/install.sh` (it automatically backs up your `~/.bash_profile`)
 3. Edit your `~/.bash_profile` file in order to customize bash-it.
 
 **NOTE:**
diff --git a/aliases/available/emacs.aliases.bash b/aliases/available/emacs.aliases.bash
index 5b32876..5042b17 100644
--- a/aliases/available/emacs.aliases.bash
+++ b/aliases/available/emacs.aliases.bash
@@ -1,3 +1,11 @@
 #!/bin/bash
 
-alias em="open -a emacs"
\ No newline at end of file
+case $OSTYPE in
+  linux*)
+    alias em='emacs'
+    alias e='emacsclient -n'
+    ;;
+  darwin*)
+    alias em="open -a emacs"
+    ;;
+esac
diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash
index 79bd7aa..cfd456f 100644
--- a/aliases/available/general.aliases.bash
+++ b/aliases/available/general.aliases.bash
@@ -12,7 +12,12 @@
 
 if [ $(uname) = "Linux" ]
 then
-	alias ls="ls --color=always"
+  alias ls="ls --color=always"
+fi
+which gshuf &> /dev/null
+if [ $? -eq 1 ]
+then
+  alias shuf=gshuf
 fi
 
 alias c='clear'
@@ -32,42 +37,46 @@
 
 alias piano="pianobar"
 
-alias ..='cd ..'        # Go up one directory
-alias ...='cd ../..'    # Go up two directories
-alias -- -="cd -"       # Go back
+alias ..='cd ..'         # Go up one directory
+alias ...='cd ../..'     # Go up two directories
+alias ....='cd ../../..' # Go up two directories
+alias -- -="cd -"        # Go back
 
 # Shell History
 alias h='history'
 
 # Tree
-alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
+if [ ! -x "$(which tree)" ]
+then
+  alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
+fi
 
 # Directory
 alias	md='mkdir -p'
 alias	rd=rmdir
 
 function aliases-help() {
-  echo "Generic Alias Usage"
-  echo
-  echo "  sl      = ls"
-  echo "  ls      = ls -G"
-  echo "  la      = ls -AF"
-  echo "  ll      = ls -al"
-  echo "  l       = ls -a"
-  echo "  c/k/cls = clear"
-  echo "  ..      = cd .."
-  echo "  ...     = cd ../.."
-  echo "  -       = cd -"
-  echo "  h       = history"
-  echo "  md      = mkdir -p"
-  echo "  rd      = rmdir"
-  echo "  editor  = $EDITOR"
-  echo "  pager   = $PAGER"
-  echo "  piano   = pianobar"
-  echo "  q       = exit"
-  echo "  irc     = $IRC_CLIENT"
-  echo "  md      = mkdir -p"
-  echo "  rd      = rmdir"
-  echo "  rb      = ruby"
-  echo
+echo "Generic Alias Usage"
+echo
+echo "  sl      = ls"
+echo "  ls      = ls -G"
+echo "  la      = ls -AF"
+echo "  ll      = ls -al"
+echo "  l       = ls -a"
+echo "  c/k/cls = clear"
+echo "  ..      = cd .."
+echo "  ...     = cd ../.."
+echo "  -       = cd -"
+echo "  h       = history"
+echo "  md      = mkdir -p"
+echo "  rd      = rmdir"
+echo "  editor  = $EDITOR"
+echo "  pager   = $PAGER"
+echo "  piano   = pianobar"
+echo "  q       = exit"
+echo "  irc     = $IRC_CLIENT"
+echo "  md      = mkdir -p"
+echo "  rd      = rmdir"
+echo "  rb      = ruby"
+echo
 }
diff --git a/aliases/available/textmate.aliases.bash b/aliases/available/textmate.aliases.bash
index ecd616f..4e696a5 100644
--- a/aliases/available/textmate.aliases.bash
+++ b/aliases/available/textmate.aliases.bash
@@ -1,5 +1,9 @@
 #!/bin/bash
 
-# Textmate
-alias e='mate . &'
-alias et='mate app config db lib public script test spec config.ru Gemfile Rakefile README &'
\ No newline at end of file
+case $OSTYPE in
+  darwin*)
+    # Textmate
+    alias e='mate . &'
+    alias et='mate app config db lib public script test spec config.ru Gemfile Rakefile README &'
+    ;;
+esac
diff --git a/bash_it.sh b/bash_it.sh
index 7734c10..fd7b546 100644
--- a/bash_it.sh
+++ b/bash_it.sh
@@ -22,8 +22,7 @@
 do
   if [ ! -d "${BASH}/${file_type}/enabled" ]
   then
-    mkdir "${BASH}/${file_type}/enabled"
-    ln -s ${BASH}/${file_type}/available/* "${BASH}/${file_type}/enabled"
+    continue 
   fi
   FILES="${BASH}/${file_type}/enabled/*.bash"
   for config_file in $FILES
diff --git a/completion/available/gem.completion.bash b/completion/available/gem.completion.bash
index 7231eef..de986e0 100644
--- a/completion/available/gem.completion.bash
+++ b/completion/available/gem.completion.bash
@@ -1,22 +1,22 @@
 #!/usr/bin/env bash
 # Completion for gem
 
-if [ -z "$REMOTE_GEMS" ]
-then
-  REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') )
-fi
-
-if [ -z "$LOCAL_GEMS" ]
-then
-  LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') )
-fi
-
 _installcomp() {
+  if [ -z "$REMOTE_GEMS" ]
+  then
+    REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') )
+  fi
+  
   local cur=${COMP_WORDS[COMP_CWORD]}
   COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) )
 }
 
 _uninstallcomp() {
+  if [ -z "$LOCAL_GEMS" ]
+  then
+    LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') )
+  fi
+  
   local cur=${COMP_WORDS[COMP_CWORD]}
   COMPREPLY=( $(compgen -W "${LOCAL_GEMS[*]}" -- $cur) )
 }
diff --git a/install.sh b/install.sh
index 3fc647b..f84c097 100755
--- a/install.sh
+++ b/install.sh
@@ -1,4 +1,5 @@
 #!/usr/bin/env bash
+BASH="$HOME/.bash_it"
 
 cp $HOME/.bash_profile $HOME/.bash_profile.bak
 
@@ -26,3 +27,62 @@
       echo "Please enter Y or N"
   esac
 done
+
+function load_all() {
+  file_type=$1
+  [ ! -d "$BASH/$file_type/enabled" ] && mkdir "$BASH/${file_type}/enabled"
+  ln -s $BASH/${file_type}/available/* "${BASH}/${file_type}/enabled"
+}
+
+function load_some() {
+    file_type=$1
+    for file in `ls $BASH/${file_type}/available`
+    do
+      if [ ! -d "$BASH/$file_type/enabled" ]
+      then
+        mkdir "$BASH/$file_type/enabled"
+      fi
+      while true
+      do
+        read -p "Would you like to enable the ${file%.*.*} $file_type? [Y/N] " RESP
+        case $RESP in
+        [yY])
+          ln -s "$BASH/$file_type/available/$file" "$BASH/$file_type/enabled"
+          break
+          ;;
+        [nN])
+          break
+          ;;
+        *)
+          echo "Please choose y or n."
+          ;;
+        esac
+      done
+    done
+}
+
+for type in "aliases" "plugins" "completion"
+do
+  while true
+  do
+    read -p "Would you like to enable all, some, or no $type? Some of these may make bash slower to start up (especially completion). (all/some/none) " RESP
+    case $RESP
+    in
+    some)
+      load_some $type
+      break
+      ;;
+    all)
+      load_all $type
+      break
+      ;;
+    none)
+      break
+      ;;
+    *)
+      echo "Unknown choice. Please enter some, all, or none"
+      continue
+      ;;
+    esac
+  done
+done
diff --git a/plugins/available/base.plugin.bash b/plugins/available/base.plugin.bash
index e361e04..7a6dc80 100644
--- a/plugins/available/base.plugin.bash
+++ b/plugins/available/base.plugin.bash
@@ -15,6 +15,19 @@
   echo "Your public IP is: ${bold_green} $res ${normal}"
 }
 
+pass() {
+  which gshuf &> /dev/null
+  if [ $? -eq 1 ]
+  then
+    echo "Error: shuf isn't installed!"
+    return 1
+  fi
+
+  pass=$(shuf -n4 /usr/share/dict/words | tr '\n' ' ')
+  echo "With spaces (easier to memorize): $pass"
+  echo "Without (use this as the pass): $(echo $pass | tr -d ' ')"
+}
+
 # Function for previewing markdown files in the browser
 
 function pmdown() {
diff --git a/plugins/available/dirs.plugins.bash b/plugins/available/dirs.plugins.bash
old mode 100644
new mode 100755
index dfa9a32..9353c5b
--- a/plugins/available/dirs.plugins.bash
+++ b/plugins/available/dirs.plugins.bash
@@ -50,3 +50,35 @@
   echo "8	: Chance to stack location 8."
   echo "9	: Chance to stack location 9."
 }
+
+
+# ADD BOOKMARKing functionality
+# usage:
+
+if [ ! -f ~/.dirs ]; then  # if doesn't exist, create it
+    touch ~/.dirs
+else
+    source ~/.dirs
+fi
+
+alias L='cat ~/.dirs'
+
+G () {				# goes to distination dir otherwise , stay in the dir
+    cd ${1:-$(pwd)} ;
+}
+
+S () {				# SAVE a BOOKMARK
+    sed "/$@/d" ~/.dirs > ~/.dirs1;
+    \mv ~/.dirs1 ~/.dirs;
+    echo "$@"=\"`pwd`\" >> ~/.dirs;
+    source ~/.dirs ;
+}
+
+R () {				# remove a BOOKMARK
+    sed "/$@/d" ~/.dirs > ~/.dirs1;
+    \mv ~/.dirs1 ~/.dirs;
+}
+
+alias U='source ~/.dirs' 	# Update BOOKMARK stack
+# set the bash option so that no '$' is required when using the above facility
+shopt -s cdable_vars
diff --git a/plugins/available/extract.plugin.bash b/plugins/available/extract.plugin.bash
new file mode 100644
index 0000000..1c3e9b1
--- /dev/null
+++ b/plugins/available/extract.plugin.bash
@@ -0,0 +1,25 @@
+extract () {
+  if [ $# -ne 1 ]
+  then
+    echo "Error: No file specified."
+    return 1
+  fi
+	if [ -f $1 ] ; then
+		case $1 in
+			*.tar.bz2) tar xvjf $1   ;;
+			*.tar.gz)  tar xvzf $1   ;;
+			*.bz2)     bunzip2 $1    ;;
+			*.rar)     unrar x $1    ;;
+			*.gz)      gunzip $1     ;;
+			*.tar)     tar xvf $1    ;;
+			*.tbz2)    tar xvjf $1   ;;
+			*.tgz)     tar xvzf $1   ;;
+			*.zip)     unzip $1      ;;
+			*.Z)       uncompress $1 ;;
+			*.7z)      7z x $1       ;;
+			*)         echo "'$1' cannot be extracted via extract" ;;
+		esac
+	else
+		echo "'$1' is not a valid file"
+	fi
+}
diff --git a/plugins/available/nvm.plugin.bash b/plugins/available/nvm.plugin.bash
new file mode 100644
index 0000000..a02722e
--- /dev/null
+++ b/plugins/available/nvm.plugin.bash
@@ -0,0 +1,251 @@
+# Node Version Manager
+# Implemented as a bash function
+# To use source this file from your bash profile
+#
+# Implemented by Tim Caswell <tim@creationix.com>
+# with much bash help from Matthew Ranney
+# https://github.com/creationix/nvm
+
+export NVM_DIR=$HOME/.nvm
+
+if [ ! -d "$NVM_DIR" ]; then
+    mkdir $NVM_DIR
+fi
+
+# Auto detect the NVM_DIR
+if [ ! -d "$NVM_DIR" ]; then
+    export NVM_DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0}); pwd)
+fi
+
+# Emulate curl with wget, if necessary
+if [ ! `which curl` ]; then
+    if [ `which wget` ]; then
+        curl() {
+            ARGS="$* "
+            ARGS=${ARGS/-s /-q }
+            ARGS=${ARGS/-\# /}
+            ARGS=${ARGS/-C - /-c }
+            ARGS=${ARGS/-o /-O }
+
+            wget $ARGS
+        }
+    else
+        NOCURL='nocurl'
+        curl() { echo 'Need curl or wget to proceed.' >&2; }
+    fi
+fi
+
+# Expand a version using the version cache
+nvm_version()
+{
+    PATTERN=$1
+    VERSION=''
+    if [ -f "$NVM_DIR/alias/$PATTERN" ]; then
+        nvm_version `cat $NVM_DIR/alias/$PATTERN`
+        return
+    fi
+    # If it looks like an explicit version, don't do anything funny
+    if [[ "$PATTERN" == v*.*.* ]]; then
+        VERSION="$PATTERN"
+    fi
+    # The default version is the current one
+    if [ ! "$PATTERN" -o "$PATTERN" = 'current' ]; then
+        VERSION=`node -v 2>/dev/null`
+    fi
+    if [ "$PATTERN" = 'stable' ]; then
+        PATTERN='*.*[02468].'
+    fi
+    if [ "$PATTERN" = 'latest' ]; then
+        PATTERN='*.*.'
+    fi
+    if [ "$PATTERN" = 'all' ]; then
+        (cd $NVM_DIR; \ls -dG v* 2>/dev/null || echo "N/A")
+        return
+    fi
+    if [ ! "$VERSION" ]; then
+        VERSION=`(cd $NVM_DIR; \ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 2,1n -k 2,2n -k 3,3n | tail -n1`
+    fi
+    if [ ! "$VERSION" ]; then
+        echo "N/A"
+        return 13
+    elif [ -e "$NVM_DIR/$VERSION" ]; then
+        (cd $NVM_DIR; \ls -dG "$VERSION")
+    else
+        echo "$VERSION"
+    fi
+}
+
+nvm()
+{
+  if [ $# -lt 1 ]; then
+    nvm help
+    return
+  fi
+  case $1 in
+    "help" )
+      echo
+      echo "Node Version Manager"
+      echo
+      echo "Usage:"
+      echo "    nvm help                    Show this message"
+      echo "    nvm install <version>       Download and install a <version>"
+      echo "    nvm use <version>           Modify PATH to use <version>"
+      echo "    nvm ls                      List versions (installed versions are blue)"
+      echo "    nvm ls <version>            List versions matching a given description"
+      echo "    nvm deactivate              Undo effects of NVM on current shell"
+      echo "    nvm sync                    Update the local cache of available versions"
+      echo "    nvm alias [<pattern>]       Show all aliases beginning with <pattern>"
+      echo "    nvm alias <name> <version>  Set an alias named <name> pointing to <version>"
+      echo
+      echo "Example:"
+      echo "    nvm install v0.4.0          Install a specific version number"
+      echo "    nvm use stable              Use the stable release"
+      echo "    nvm install latest          Install the latest, possibly unstable version"
+      echo "    nvm use 0.2                 Use the latest available 0.2.x release"
+      echo "    nvm alias default v0.4.0    Set v0.4.0 as the default" 
+      echo
+    ;;
+    "install" )
+      if [ $# -ne 2 ]; then
+        nvm help
+        return
+      fi
+      [ "$NOCURL" ] && curl && return
+      VERSION=`nvm_version $2`
+      if (
+        mkdir -p "$NVM_DIR/src" && \
+        cd "$NVM_DIR/src" && \
+        curl -C - -# "http://nodejs.org/dist/node-$VERSION.tar.gz" -o "node-$VERSION.tar.gz" && \
+        tar -xzf "node-$VERSION.tar.gz" && \
+        cd "node-$VERSION" && \
+        ./configure --prefix="$NVM_DIR/$VERSION" && \
+        make && \
+        rm -f "$NVM_DIR/$VERSION" 2>/dev/null && \
+        make install
+        )
+      then
+        nvm use $VERSION
+        if ! which npm ; then
+          echo "Installing npm..."
+          # TODO: if node version 0.2.x add npm_install=0.2.19 before sh
+          curl http://npmjs.org/install.sh | clean=yes sh
+        fi
+      else
+        echo "nvm: install $VERSION failed!"
+      fi
+    ;;
+    "deactivate" )
+      if [[ $PATH == *$NVM_DIR/*/bin* ]]; then
+        export PATH=${PATH%$NVM_DIR/*/bin*}${PATH#*$NVM_DIR/*/bin:}
+        hash -r
+        echo "$NVM_DIR/*/bin removed from \$PATH"
+      else
+        echo "Could not find $NVM_DIR/*/bin in \$PATH"
+      fi
+      if [[ $MANPATH == *$NVM_DIR/*/share/man* ]]; then
+        export MANPATH=${MANPATH%$NVM_DIR/*/share/man*}${MANPATH#*$NVM_DIR/*/share/man:}
+        echo "$NVM_DIR/*/share/man removed from \$MANPATH"
+      else
+        echo "Could not find $NVM_DIR/*/share/man in \$MANPATH"
+      fi
+    ;;
+    "use" )
+      if [ $# -ne 2 ]; then
+        nvm help
+        return
+      fi
+      VERSION=`nvm_version $2`
+      if [ ! -d $NVM_DIR/$VERSION ]; then
+        echo "$VERSION version is not installed yet"
+        return;
+      fi
+      if [[ $PATH == *$NVM_DIR/*/bin* ]]; then
+        PATH=${PATH%$NVM_DIR/*/bin*}$NVM_DIR/$VERSION/bin${PATH#*$NVM_DIR/*/bin}
+      else
+        PATH="$NVM_DIR/$VERSION/bin:$PATH"
+      fi
+      if [[ $MANPATH == *$NVM_DIR/*/share/man* ]]; then
+        MANPATH=${MANPATH%$NVM_DIR/*/share/man*}$NVM_DIR/$VERSION/share/man${MANPATH#*$NVM_DIR/*/share/man}
+      else
+        MANPATH="$NVM_DIR/$VERSION/share/man:$MANPATH"
+      fi
+      export PATH
+      hash -r
+      export MANPATH
+      export NVM_PATH="$NVM_DIR/$VERSION/lib/node"
+      export NVM_BIN="$NVM_DIR/$VERSION/bin"
+      echo "Now using node $VERSION"
+    ;;
+    "ls" )
+      if [ $# -ne 1 ]; then
+        nvm_version $2
+        return
+      fi
+      nvm_version all
+      for P in {stable,latest,current}; do
+          echo -ne "$P: \t"; nvm_version $P
+      done
+      nvm alias
+      echo "# use 'nvm sync' to update from nodejs.org"
+    ;;
+    "alias" )
+      mkdir -p $NVM_DIR/alias
+      if [ $# -le 2 ]; then
+        (cd $NVM_DIR/alias && for ALIAS in `\ls $2* 2>/dev/null`; do
+            DEST=`cat $ALIAS`
+            VERSION=`nvm_version $DEST`
+            if [ "$DEST" = "$VERSION" ]; then
+                echo "$ALIAS -> $DEST"
+            else
+                echo "$ALIAS -> $DEST (-> $VERSION)"
+            fi
+        done)
+        return
+      fi
+      if [ ! "$3" ]; then
+          rm -f $NVM_DIR/alias/$2
+          echo "$2 -> *poof*"
+          return
+      fi
+      mkdir -p $NVM_DIR/alias
+      VERSION=`nvm_version $3`
+      if [ $? -ne 0 ]; then
+        echo "! WARNING: Version '$3' does not exist." >&2 
+      fi
+      echo $3 > "$NVM_DIR/alias/$2"
+      if [ ! "$3" = "$VERSION" ]; then
+          echo "$2 -> $3 (-> $VERSION)"
+          echo "! WARNING: Moving target. Aliases to implicit versions may change without warning."
+      else
+        echo "$2 -> $3"
+      fi
+    ;;
+    "sync" )
+        [ "$NOCURL" ] && curl && return
+        LATEST=`nvm_version latest`
+        STABLE=`nvm_version stable`
+        (cd $NVM_DIR
+        rm -f v* 2>/dev/null
+        printf "# syncing with nodejs.org..."
+        for VER in `curl -s http://nodejs.org/dist/ -o - | grep 'node-v.*\.tar\.gz' | sed -e 's/.*node-//' -e 's/\.tar\.gz.*//'`; do
+            touch $VER
+        done
+        echo " done."
+        )
+        [ "$STABLE" = `nvm_version stable` ] || echo "NEW stable: `nvm_version stable`"
+        [ "$LATEST" = `nvm_version latest` ] || echo "NEW latest: `nvm_version latest`"
+    ;;
+    "clear-cache" )
+        rm -f $NVM_DIR/v* 2>/dev/null
+        echo "Cache cleared."
+    ;;
+    "version" )
+        nvm_version $2
+    ;;
+    * )
+      nvm help
+    ;;
+  esac
+}
+
+nvm ls default >/dev/null 2>&1 && nvm use default >/dev/null
diff --git a/themes/hawaii50/hawaii50.theme.bash b/themes/hawaii50/hawaii50.theme.bash
index 21c0b41..93cef46 100644
--- a/themes/hawaii50/hawaii50.theme.bash
+++ b/themes/hawaii50/hawaii50.theme.bash
@@ -30,6 +30,15 @@
 # specific like getting ip, etc.
 #
 
+# IMPORTANT THINGS TO CHANGE ==================================================
+
+# Show IP in prompt
+# One thing to be weary about if you have slow Internets
+IP_ENABLED=1
+
+# virtual prompts
+VIRTUAL_PROMPT_ENABLED=1
+
 # COLORS ======================================================================
 ORANGE='\[\e[0;33m\]'
 
@@ -60,9 +69,6 @@
 VIRTUALENV_THEME_PROMPT_PREFIX=''
 VIRTUALENV_THEME_PROMPT_SUFFIX=''
 
-# virtual prompts
-VIRTUAL_PROMPT_ENABLED=1
-
 VIRTUAL_THEME_PROMPT_PREFIX=' using '
 VIRTUAL_THEME_PROMPT_SUFFIX=''
 
@@ -82,6 +88,13 @@
     echo -e "$(ips | sed -e :a -e '$!N;s/\n/${IP_SEPARATOR}/;ta' | sed -e 's/127\.0\.0\.1\${IP_SEPARATOR}//g'), ${myip}"
 }
 
+# Displays ip prompt 
+function ip_prompt_info() {
+    if [[ $IP_ENABLED == 1 ]]; then
+        echo -e " ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR})"
+    fi 
+}
+
 # Displays virtual info prompt (virtualenv/rvm)
 function virtual_prompt_info() {
     local virtual_env_info=$(virtualenv_prompt)
@@ -176,9 +189,9 @@
     [ $UID -eq "0" ] && UC=$SUPERUSER_COLOR
 
     if [[ $VIRTUAL_PROMPT_ENABLED == 1 ]]; then
-        PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR}) in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(virtual_prompt_info)$(scm_prompt_info)${reset_color} \$ "
+        PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h$(ip_prompt_info) ${DEFAULT_COLOR}in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(virtual_prompt_info)$(scm_prompt_info)${reset_color} \$ "
     else
-        PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR}) in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(scm_prompt_info)${reset_color} \$ "
+        PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h$(ip_prompt_info) ${DEFAULT_COLOR}in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(scm_prompt_info)${reset_color} \$ "
     fi
     PS2='> '
     PS4='+ '
