diff --git a/.gitignore b/.gitignore
index 54f7202..fec6fae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,8 @@
 .DS_Store
 custom/*.bash
-!custom/example.bash
\ No newline at end of file
+!custom/example.bash
+.rvmrc
+aliases/custom.aliases.bash
+lib/custom.bash
+plugins/custom.plugins.bash
+*.swp
diff --git a/README.md b/README.md
index 2985cbf..e753724 100644
--- a/README.md
+++ b/README.md
@@ -1,43 +1,69 @@
 # Bash it
 
-'Bash it' is a mash up of my own bash commands and scripts, other bash stuff I have found and a shameless ripoff of oh-my-zsh. :) 
+'Bash it' is a mash up of my own bash commands and scripts, other bash stuff I have found and a shameless ripoff of [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh). :)
 
-From what I remember, I've incorporated things I have found from the following:
-
-* oh-my-zsh   (http://github.com/robbyrussell/oh-my-zsh)
-* Steve Losh  (http://stevelosh.com/)
-
-Includes some autocompletion tools, theming support, aliases, custom functions, and more. 
+Includes some autocompletion tools, theming support, aliases, custom functions, a few stolen pieces from Steve Losh, and more.
 
 ## Install
 
-Check a clone of this repo. You can view what a sample ~/.bash\_profile looks like in template/bash\_profile.template.bash. If you wanted to use that template, make sure to make a backup of your current ~/.bash\_profile file.
+Check a clone of this repo. You can view what a sample `~/.bash_profile` looks like in `template/bash_profile.template.bash`. If you wanted to use that template, make sure to make a backup of your current `~/.bash_profile` file.
 
-<pre><code>
-git clone http://github.com/revans/bash-it.git bash_it
+	git clone http://github.com/revans/bash-it.git bash_it
 
-cp ~/.bash_profile ~/.bash_profile_original
-cp <path/to/cloned/repo>/template/bash_profile.template.bash ~/.bash_profile
+	cp ~/.bash_profile ~/.bash_profile_original
+	cp <path/to/cloned/repo>/template/bash_profile.template.bash ~/.bash_profile
 
-</code></pre>
 
-I'm working on adding various custom help screens to bash it. Currently, bash it has the following commands to show help screens:
+## Help Screens
 
-<pre><code>
-bash-it (will show all the help commands)
-aliases-help
-rails-help
-git-help
-</code></pre>
+	bash-it (will show all the help commands)
+	aliases-help
+	rails-help
+	git-help
+    plugins-help
 
 ## Your Custom scripts, aliases, and functions
 
-If you have custom stuff that you don't want committed to bash it, put those scripts into the custom directory. It is automatically ignored by git.
+For custom scripts, and aliases, you can create the following files and they will be ignored by the git repo:
+
+* `aliases/custom.aliases.bash`
+* `lib/custom.bash`
+* `plugins/custom.plugins.bash`
+
+and anything in the custom directory will be ignored with the exception of `custom/example.bash`.
 
 ## Themes
 
-Currently, there is only 1 theme, 'bobby'. There is a base.theme.bash that includes various colors that can then be used to create custom themes. There is support for git in the prompt: showing what branch you're on, if you've committed locally or not, etc. I'm working on adding mercurial support as well.
+There are a few bash-it themes, but I'm hoping the community will jump in and create their own custom prompts and share their creations with everyone else by submitting a pull request to me (revans).
 
-## Help out!
+## Help out
 
-Just like oh-my-zsh, 'bash it' is meant for the community. If you have things to add, want to add a theme, etc. please fork this project and send me a pull request.
\ No newline at end of file
+I think all of us have our own custom scripts that we have added over time and so following in the footsteps of oh-my-zsh, bash-it was created as a framework for those who choose to use bash as their shell. As a community, I'm excited to see what everyone else has in their custom toolbox and am hoping that they'll share it with everyone by submitting a pull request to bash-it.
+
+So, if you have contributions to bash-it, please send me a pull request and I'll take a look at it and commit it to the repo as long as it looks good. If you do change an existing command, please give an explanation as to why. That will help a lot when I merge your changes in. Thanks, and happing bashing!
+
+
+## Contributors
+
+If you are submitting a pull request, please add your name to the list.
+
+* [Robert Evans][revans]
+* [David Bradford][zerobearing2]
+* [Rich Manalang][manalang]
+* [Piotr Usewicz][pusewicz]
+* [Simon H. Eskildsen][sirupsen]
+* [Mark Szymanski][mrman208]
+* [Florian Baumann][noqqe]
+* [Andy Shen][shenie]
+* [John Schulz][jfsiii]
+
+[revans]: http://github.com/revans
+[zerobearing2]: http://github.com/zerobearing2
+[manalang]: http://github.com/manalang
+[pusewicz]: http://github.com/pusewicz
+[sirupsen]: http://github.com/sirupsen
+[mrman208]: http://github.com/mrman208
+[noqqe]: http://github.com/noqqe
+[shenie]: http://github.com/shenie
+[jfsiii]: http://github.com/jfsiii
+
diff --git a/aliases/emacs.aliases.bash b/aliases/emacs.aliases.bash
new file mode 100644
index 0000000..5b32876
--- /dev/null
+++ b/aliases/emacs.aliases.bash
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+alias em="open -a emacs"
\ No newline at end of file
diff --git a/aliases/general.aliases.bash b/aliases/general.aliases.bash
new file mode 100644
index 0000000..1cb470f
--- /dev/null
+++ b/aliases/general.aliases.bash
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+# List directory contents
+alias sl=ls
+alias ls='ls -G'        # Compact view, show colors
+alias la='ls -AF'       # Compact view, show hidden
+alias ll='ls -al'
+alias l='ls -a'
+alias l1='ls -1'
+
+if [ $(uname) = "Linux" ]
+then
+	alias ls="ls --color=always"
+fi
+
+alias c='clear'
+alias k='clear'
+
+alias edit="$EDITOR"
+alias page="$PAGER"
+
+alias q="exit"
+
+alias irc="$IRC_CLIENT"
+
+# Pianobar can be found here: http://github.com/PromyLOPh/pianobar/
+
+alias piano="pianobar"
+
+alias ..='cd ..'        # Go up one directory
+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'"
+
+# Directory
+alias	md='mkdir -p'
+alias	rd=rmdir
+alias d='dirs -v'
+
+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    = clear"
+  echo "  ..     = cd .."
+  echo "  ...    = cd ../.."
+  echo "  -      = cd -"
+  echo "  h      = history"
+  echo "  md     = mkdir -p"
+  echo "  rd     = rmdir"
+  echo "  d      = dirs -v"
+  echo "  editor = $EDITOR"
+  echo "  pager  = $PAGER"
+  echo "  piano  = pianobar"
+  echo "  q      = exit"
+  echo "  irc    = $IRC_CLIENT"
+  echo 
+}
diff --git a/plugins/git.plugin.bash b/aliases/git.aliases.bash
similarity index 67%
rename from plugins/git.plugin.bash
rename to aliases/git.aliases.bash
index 909a90e..0ac2548 100644
--- a/plugins/git.plugin.bash
+++ b/aliases/git.aliases.bash
@@ -1,12 +1,18 @@
 #!/bin/bash
 
 # Aliases
+alias gcl='git clone'
+alias ga='git add'
+alias gall='git add .'
 alias g='git'
+alias get='git'
 alias gst='git status'
 alias gs='git status'
+alias gss='git status -s'
 alias gl='git pull'
 alias gup='git fetch && git rebase'
 alias gp='git push'
+alias gpo='git push origin'
 alias gdv='git diff -w "$@" | vim -R -'
 alias gc='git commit -v'
 alias gca='git commit -v -a'
@@ -16,6 +22,8 @@
 alias gcp='git cherry-pick'
 alias gco='git checkout'
 alias gexport='git archive --format zip --output'
+alias gdel='git branch -D'
+alias gmu='git fetch origin -v; git fetch upstream -v; git merge upstream/master'
 
 case $OSTYPE in
   linux*)
@@ -33,9 +41,14 @@
 
 function git-help() {
   echo "Git Custom Aliases Usage"
-  echo 
+  echo
+  echo "  gcl	  = git clone"
   echo "  g       = git"
+  echo "  get 	  = git"
+  echo "  ga      = git add"
+  echo "  gall	  = git add ."
   echo "  gst/gs  = git status"
+  echo "  gss	  = git status -s"
   echo "  gl      = git pull"
   echo "  gup     = git fetch && git rebase"
   echo "  gp      = git push"
@@ -49,5 +62,8 @@
   echo "  gcp     = git cherry-pick"
   echo "  gco     = git checkout"
   echo "  gexport = git git archive --format zip --output"
-  echo 
-}
\ No newline at end of file
+  echo "  gdel    = git branch -D"
+  echo "  gpo     = git push origin"
+  echo "  gmu     = git fetch origin -v; git fetch upstream -v; git merge upstream/master"
+  echo
+}
diff --git a/plugins/heroku.plugin.bash b/aliases/heroku.aliases.bash
similarity index 100%
rename from plugins/heroku.plugin.bash
rename to aliases/heroku.aliases.bash
diff --git a/aliases/hg.aliases.bash b/aliases/hg.aliases.bash
new file mode 100644
index 0000000..64f20f5
--- /dev/null
+++ b/aliases/hg.aliases.bash
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+alias hs='hg status'
+alias hsum='hg summary'
+alias hcm='hg commit -m'
+
+function hg-help() {
+  echo "Mercurial Alias Help"
+  echo
+  echo "  hs    = hg status"
+  echo "  hsum  = hg summary"
+  echo "  hcm   = hg commit -m"
+  echo
+}
\ No newline at end of file
diff --git a/aliases/jekyll.aliases.bash b/aliases/jekyll.aliases.bash
new file mode 100644
index 0000000..11922d6
--- /dev/null
+++ b/aliases/jekyll.aliases.bash
@@ -0,0 +1,27 @@
+# Open the root of your site in your vim or builtin cd to it
+
+if [[ $EDITOR = "vim" ]]
+then alias newentry="builtin cd $JEKYLL_LOCAL_ROOT && $EDITOR ."
+else alias newentry="builtin cd $JEKYLL_LOCAL_ROOT"
+fi
+
+# Open the _posts/ directory for making a new blog post (seperate from above alias because not everyone uses jekyll for a blog)
+
+# if [ $editor = "vim" ]
+# then
+# 	alias newpost="builtin cd $jekyll_local_root/_posts && $editor ."
+# else
+# 	alias newpost="builtin cd $jekyll_local_root"
+# fi
+
+# Build and locally serve the site
+
+alias testsite="builtin cd $JEKYLL_LOCAL_ROOT && jekyll --server --auto"
+
+# Build but don't locally serve the site
+
+alias buildsite="builtin cd $JEKYLL_LOCAL_ROOT && rm -rf _site/ && jekyll"
+
+# Rsync the site to the remote server
+
+alias deploysite="builtin cd $JEKYLL_LOCAL_ROOT && rsync -rz _site/ $JEKYLL_REMOTE_ROOT"
diff --git a/aliases/osx.aliases.bash b/aliases/osx.aliases.bash
new file mode 100644
index 0000000..542b927
--- /dev/null
+++ b/aliases/osx.aliases.bash
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# Desktop Programs
+alias fireworks="open -a '/Applications/Adobe Fireworks CS3/Adobe Fireworks CS3.app'"
+alias photoshop="open -a '/Applications/Adobe Photoshop CS3/Adobe Photoshop.app'"
+alias preview="open -a '$PREVIEW'"
+alias xcode="open -a '/Developer/Applications/Xcode.app'"
+alias filemerge="open -a '/Developer/Applications/Utilities/FileMerge.app'"
+alias safari="open -a safari"
+alias firefox="open -a firefox"
+alias chrome="open -a google\ chrome"
+alias chromium="open -a chromium"
+alias dashcode="open -a dashcode"
+alias f='open -a Finder '
+
+if [ -s /usr/bin/firefox ] ; then
+  unalias firefox
+fi
+
diff --git a/plugins/rails.plugin.bash b/aliases/rails.aliases.bash
similarity index 100%
rename from plugins/rails.plugin.bash
rename to aliases/rails.aliases.bash
diff --git a/plugins/textmate.plugin.bash b/aliases/textmate.aliases.bash
similarity index 100%
rename from plugins/textmate.plugin.bash
rename to aliases/textmate.aliases.bash
diff --git a/aliases/todo.txt-cli.aliases.bash b/aliases/todo.txt-cli.aliases.bash
new file mode 100644
index 0000000..045e2f1
--- /dev/null
+++ b/aliases/todo.txt-cli.aliases.bash
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+alias tls="$TODO ls"
+alias ta="$TODO a"
+alias trm="$TODO rm"
+alias tdo="$TODO do"
+alias tpri="$TODO pri"
+
+todo-help() {
+	echo
+	echo "todo.txt-cli Custom Aliases Usage"
+	echo
+	echo " tls  = $TODO ls"
+	echo " ta   = $TODO add"
+	echo " trm  = $TODO rm"
+	echo " tdo  = $TODO do"
+	echo " tpri = $TODO pri"
+	echo
+}
diff --git a/plugins/vim.plugin.bash b/aliases/vim.aliases.bash
similarity index 94%
rename from plugins/vim.plugin.bash
rename to aliases/vim.aliases.bash
index dc224a9..d102575 100644
--- a/plugins/vim.plugin.bash
+++ b/aliases/vim.aliases.bash
@@ -1,4 +1,3 @@
 #!/bin/bash
 
-alias v='mvim --remote-tab'
-
+alias v='mvim --remote-tab'
\ No newline at end of file
diff --git a/bash_it.sh b/bash_it.sh
index b588059..60bef80 100644
--- a/bash_it.sh
+++ b/bash_it.sh
@@ -4,14 +4,11 @@
 # Reload Library
 alias reload='source ~/.bash_profile'
 
-# Load all files
+# Load the framework
 
-# Themes
-THEMES="${BASH}/themes/*.bash"
-for config_file in $THEMES
-do
-  source $config_file
-done
+# Load colors first so they can be use in base theme
+source "${BASH}/themes/colors.theme.bash"
+source "${BASH}/themes/base.theme.bash"
 
 # Library
 LIB="${BASH}/lib/*.bash"
@@ -27,7 +24,6 @@
   source $config_file
 done
 
-unset config_file
 # Plugins
 PLUGINS="${BASH}/plugins/*.bash"
 for config_file in $PLUGINS
@@ -35,8 +31,8 @@
   source $config_file
 done
 
-# Functions
-FUNCTIONS="${BASH}/functions/*.bash"
+# Aliases
+FUNCTIONS="${BASH}/aliases/*.bash"
 for config_file in $FUNCTIONS
 do
   source $config_file
@@ -49,8 +45,11 @@
   source $config_file
 done
 
-export PS1=$PROMPT
 
+unset config_file
+if [[ $PROMPT ]]; then
+    export PS1=$PROMPT
+fi
 
 # Adding Support for other OSes
 PREVIEW="less"
@@ -68,7 +67,8 @@
   echo
   echo "  rails-help                  This will list out all the aliases you can use with rails."
   echo "  git-help                    This will list out all the aliases you can use with git."
+  echo "  todo-help                   This will list out all the aliases you can use with todo.txt-cli"
   echo "  aliases-help                Generic list of aliases."
-  
+  echo "  plugins-help                This will list out all the plugins and functions you can use with bash-it"
   echo
-}
\ No newline at end of file
+}
diff --git a/completion/brew.completion.bash b/completion/brew.completion.bash
index a0d9819..371fe77 100644
--- a/completion/brew.completion.bash
+++ b/completion/brew.completion.bash
@@ -1,4 +1,4 @@
-if [ `which brew` ]; then
+if which brew >/dev/null 2>&1; then
   if [ -f `brew --prefix`/Library/Contributions/brew_bash_completion.sh ]; then
     . `brew --prefix`/Library/Contributions/brew_bash_completion.sh
   fi
diff --git a/completion/ssh.completion.bash b/completion/ssh.completion.bash
new file mode 100644
index 0000000..30fd65d
--- /dev/null
+++ b/completion/ssh.completion.bash
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Bash completion support for ssh.
+
+export COMP_WORDBREAKS=${COMP_WORDBREAKS/\:/}
+
+_sshcomplete() {
+    
+    # parse all defined hosts from .ssh/config
+    if [ -r $HOME/.ssh/config ]; then
+        COMPREPLY=($(compgen -W "$(grep ^Host $HOME/.ssh/config | awk '{print $2}' )" -- ${COMP_WORDS[COMP_CWORD]}))
+    fi
+
+    # parse all hosts found in .ssh/known_hosts
+    if [ -r $HOME/.ssh/known_hosts ]; then
+        if grep -v -q -e '^ ssh-rsa' $HOME/.ssh/known_hosts ; then
+        COMPREPLY=( $COMPREPLY $(compgen -W "$( awk '{print $1}' $HOME/.ssh/known_hosts | cut -d, -f 1 | sed -e 's/\[//g' | sed -e 's/\]//g' | cut -d: -f1 | grep -v ssh-rsa)" -- ${COMP_WORDS[COMP_CWORD]} )) 
+        fi
+    fi
+    
+    return 0
+}
+
+complete -o default -o nospace -F _sshcomplete ssh
diff --git a/completion/todo.completion.bash b/completion/todo.completion.bash
new file mode 100644
index 0000000..00493db
--- /dev/null
+++ b/completion/todo.completion.bash
@@ -0,0 +1,34 @@
+_todo()
+{
+    local cur prev opts
+    COMPREPLY=()
+    cur="${COMP_WORDS[COMP_CWORD]}"
+    prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+    COMMANDS="add a addto addm append app archive command del  \
+              rm depri dp do help list ls listall lsa listcon  \
+              lsc listfile lf listpri lsp listproj lsproj move \
+              mv prepend prep pri p replace report"
+
+    # Add custom commands from add-ons, if installed.
+    COMMANDS="$COMMANDS $('ls' ${TODO_ACTIONS_DIR:-$HOME/.todo.actions.d}/ 2>/dev/null)"
+
+    OPTS="-@ -@@ -+ -++ -d -f -h -p -P -PP -a -n -t -v -vv -V -x"
+
+    if [ $COMP_CWORD -eq 1 ]; then
+	completions="$COMMANDS $OPTS"
+    else
+	case "${prev}" in
+	    -*) completions="$COMMANDS $OPTS";;
+	    *)  return 0;;
+	esac
+    fi
+
+    COMPREPLY=( $( compgen -W "$completions" -- $cur ))
+    return 0
+}
+
+complete -F _todo todo.sh
+# If you define an alias (e.g. "t") to todo.sh, you need to explicitly enable
+# completion for it, too:
+complete -F _todo t
diff --git a/custom/example.bash b/custom/example.bash
index 4f73d86..e9b3847 100644
--- a/custom/example.bash
+++ b/custom/example.bash
@@ -1,4 +1,4 @@
 #!/bin/bash
 #
-# This is an example file. Don't use this for your custom scripts. Instead, created another file within the
-# custom directory.
\ No newline at end of file
+# This is an example file. Don't use this for your custom scripts. Instead, create another file within the
+# custom directory.
diff --git a/functions/base.funtions.bash b/functions/base.funtions.bash
deleted file mode 100644
index d1f467d..0000000
--- a/functions/base.funtions.bash
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-
-function ips {
-  ifconfig | grep "inet " | awk '{ print $2 }'
-}
-
-function myip {
-  res=$(curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+')
-  echo "Your public IP is: ${bold_green} $res ${normal}"
-}
-
-
-# View man documentation in Preview
-pman () {
-   man -t "${1}" | open -f -a $PREVIEW
-}
-
-
-pcurl() {
-  curl "${1}" | open -f -a $PREVIEW
-}
-
-pri() {
-  ri -T "${1}" | open -f -a $PREVIEW
-}
-
-
-# disk usage per directory
-usage ()
-{
-  if [ $1 ]
-  then
-    du -hd $1
-  else
-    du -hd 1
-  fi
-}
\ No newline at end of file
diff --git a/functions/git.functions.bash b/functions/git.functions.bash
deleted file mode 100644
index ad21591..0000000
--- a/functions/git.functions.bash
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-function git_remote {
-  echo "Running: git remote add origin ${GIT_HOSTING}:$1.git"
-  git remote add origin $GIT_HOSTING:$1.git
-}
-
-function git_first_push {
-  echo "Running: git push origin master:refs/heads/master"
-  git push origin master:refs/heads/master
-}
-
-function git_remove_missing_files() {
-  git ls-files -d -z | xargs -0 git update-index --remove
-}
-
-# Adds files to git's exclude file (same as .gitignore)
-function local-ignore() {
-  echo "$1" >> .git/info/exclude
-}
\ No newline at end of file
diff --git a/lib/aliases.bash b/lib/aliases.bash
deleted file mode 100644
index 49e89ce..0000000
--- a/lib/aliases.bash
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-
-# List directory contents
-alias sl=ls
-alias ls='ls -G'        # Compact view, show colors
-alias la='ls -AF'       # Compact view, show hidden
-alias ll='ls -al'
-alias l='ls -a'
-
-alias c='clear'
-alias k='clear'
-
-alias ..='cd ..'        # Go up one directory
-alias ...='cd ../..'    # Go up two directories
-alias -- -="cd -"       # Go back
-
-# Shell History
-alias h='history'
-
-# Directory
-alias	md='mkdir -p'
-alias	rd=rmdir
-alias d='dirs -v'
-
-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   = clear"
-  echo "  ..    = cd .."
-  echo "  ...   = cd ../.."
-  echo "  -     = cd -"
-  echo "  h     = history"
-  echo "  md    = mkdir -p"
-  echo "  rd    = rmdir"
-  echo "  d     = dirs -v"
-  echo 
-}
\ No newline at end of file
diff --git a/lib/appearance.bash b/lib/appearance.bash
index 4b1f568..f723511 100644
--- a/lib/appearance.bash
+++ b/lib/appearance.bash
@@ -8,4 +8,6 @@
 export LSCOLORS='Gxfxcxdxdxegedabagacad'
 
 # Load the theme
-source "$BASH/themes/$BASH_THEME/$BASH_THEME.theme.bash"
\ No newline at end of file
+if [[ $BASH_THEME ]]; then
+    source "$BASH/themes/$BASH_THEME/$BASH_THEME.theme.bash"
+fi
\ No newline at end of file
diff --git a/lib/history.bash b/lib/history.bash
index c7dcaa6..c0f60f2 100644
--- a/lib/history.bash
+++ b/lib/history.bash
@@ -13,7 +13,6 @@
 # resize history size
 export HISTSIZE=5000
 
-
 export AUTOFEATURE=true autotest
 
 function rh {
diff --git a/plugins/base.plugin.bash b/plugins/base.plugin.bash
index 4984df8..9c8cb92 100644
--- a/plugins/base.plugin.bash
+++ b/plugins/base.plugin.bash
@@ -1,16 +1,90 @@
 #!/bin/bash
 
-# Desktop Programs
-alias fireworks="open -a '/Applications/Adobe Fireworks CS3/Adobe Fireworks CS3.app'"
-alias photoshop="open -a '/Applications/Adobe Photoshop CS3/Adobe Photoshop.app'"
-alias preview="open -a '$PREVIEW'"
-alias xcode="open -a '/Developer/Applications/Xcode.app'"
-alias filemerge="open -a '/Developer/Applications/Utilities/FileMerge.app'"
-alias safari="open -a safari"
-alias firefox="open -a firefox"
-alias dashcode="open -a dashcode"
+# For generic functions.
+
+function ips {
+  ifconfig | grep "inet " | awk '{ print $2 }'
+}
+
+function myip {
+  res=$(curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+')
+  echo "Your public IP is: ${bold_green} $res ${normal}"
+}
+
+function mkcd(){
+	mkdir -p "$*"
+	cd "$*"
+}
+
+# View man documentation in Preview
+pman () {
+   man -t "${1}" | open -f -a $PREVIEW
+}
 
 
-if [ -s /usr/bin/firefox ] ; then
-  unalias firefox
-fi
\ No newline at end of file
+pcurl() {
+  curl "${1}" | open -f -a $PREVIEW
+}
+
+pri() {
+  ri -T "${1}" | open -f -a $PREVIEW
+}
+
+quiet() {
+	$* &> /dev/null &
+}
+
+banish-cookies() {
+	rm -r ~/.macromedia ~/.adobe
+	ln -s /dev/null ~/.adobe
+	ln -s /dev/null ~/.macromedia
+}
+
+# disk usage per directory
+# in Mac OS X and Linux
+usage ()
+{
+    if [ $(uname) = "Darwin" ]; then
+        if [ -n $1 ]; then
+            du -hd $1
+        else
+            du -hd 1
+        fi
+
+    elif [ $(uname) = "Linux" ]; then
+        if [ -n $1 ]; then
+            du -h --max-depth=1 $1
+        else
+            du -h --max-depth=1
+        fi
+    fi
+}
+
+# One thing todo
+function t() {
+	 if [[ "$*" == "" ]] ; then
+		 cat ~/.t
+	 else
+		 echo "$*" > ~/.t
+	 fi
+}
+
+# List all plugins and functions defined by bash-it
+function plugins-help() {
+    
+    echo "bash-it Plugins Help-Message"
+    echo 
+
+    set | grep "()" \
+    | sed -e "/^_/d" | grep -v "BASH_ARGC=()" \
+    | sed -e "/^\s/d" | grep -v "BASH_LINENO=()" \
+    | grep -v "BASH_ARGV=()" \
+    | grep -v "BASH_SOURCE=()" \
+    | grep -v "DIRSTACK=()" \
+    | grep -v "GROUPS=()" \
+    | grep -v "BASH_CMDS=()" \
+    | grep -v "BASH_ALIASES=()" \
+    | grep -v "COMPREPLY=()" | sed -e "s/()//"
+}
+
+
diff --git a/plugins/browser.plugin.bash b/plugins/browser.plugin.bash
new file mode 100644
index 0000000..6de184c
--- /dev/null
+++ b/plugins/browser.plugin.bash
@@ -0,0 +1,29 @@
+# based on https://gist.github.com/318247
+
+# Usage: browser
+# pipe html to a browser
+# e.g.
+# $ echo "<h1>hi mom!</h1>" | browser
+# $ ron -5 man/rip.5.ron | browser
+
+function browser() {
+    if [ -t 0 ]; then
+        if [ -n "$1" ]; then
+            open $1
+        else
+            cat <<usage
+Usage: browser
+pipe html to a browser
+
+$ echo '<h1>hi mom!</h1>' | browser
+$ ron -5 man/rip.5.ron | browser
+usage
+
+    fi
+
+    else
+        f="/tmp/browser.$RANDOM.html"
+        cat /dev/stdin > $f
+        open $f 
+    fi
+}
diff --git a/plugins/emacs.plugin.bash b/plugins/emacs.plugin.bash
deleted file mode 100644
index fc9d0bf..0000000
--- a/plugins/emacs.plugin.bash
+++ /dev/null
@@ -1 +0,0 @@
-alias em="emacs"
\ No newline at end of file
diff --git a/plugins/git.plugins.bash b/plugins/git.plugins.bash
new file mode 100644
index 0000000..5f4cc51
--- /dev/null
+++ b/plugins/git.plugins.bash
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+function git_remote {
+  echo "Running: git remote add origin ${GIT_HOSTING}:$1.git"
+  git remote add origin $GIT_HOSTING:$1.git
+}
+
+function git_first_push {
+  echo "Running: git push origin master:refs/heads/master"
+  git push origin master:refs/heads/master
+}
+
+function git_remove_missing_files() {
+  git ls-files -d -z | xargs -0 git update-index --remove
+}
+
+# Adds files to git's exclude file (same as .gitignore)
+function local-ignore() {
+  echo "$1" >> .git/info/exclude
+}
+
+# get a quick overview for your git repo
+function git_info() {
+    if [ -n "$(git symbolic-ref HEAD 2> /dev/null)" ]; then
+        # print informations
+        echo "git repo overview"
+        echo "-----------------"
+        echo
+
+        # print all remotes and thier details
+        for remote in $(git remote show); do
+            echo $remote:  
+            git remote show $remote
+            echo
+        done
+
+        # print status of working repo
+        echo "status:"
+        if [ -n "$(git status -s 2> /dev/null)" ]; then
+            git status -s
+        else
+            echo "working directory is clean"
+        fi
+
+        # print at least 5 last log entries
+        echo 
+        echo "log:"
+        git log -5 --oneline
+        echo 
+
+    else
+        echo "you're currently not in a git repository"
+
+    fi
+}
+
diff --git a/plugins/hcht.plugin.bash b/plugins/hcht.plugin.bash
new file mode 100644
index 0000000..cdab44f
--- /dev/null
+++ b/plugins/hcht.plugin.bash
@@ -0,0 +1,116 @@
+#!/bin/bash
+# hcht.plugin.bash: the handmade commandline history tool
+# Copyright: (C) 2010 Florian Baumann <flo@noqqe.de>
+# License: GPL-3 <http://www.gnu.org/licenses/gpl-3.0.txt>
+# Date: Dienstag 2010-11-30
+
+### readme 
+# basiclly the handmade commandline history tool was made for storing
+# informations. yeah, you're right. sounds a bit boring. many other
+# applications can do this much better. but storing things from commandline? 
+# 
+# hcht was fitted to work at your terminal. 
+# your daily stuff like notices, todos, commands or output from a command. 
+# all these things will be stored without complex syntax. 
+# 
+# once you defined your storing-directory you will be able to easily
+# save all the stuff listed above. 
+#
+
+### create a file
+# the basic feature. open a file, do stuff and save.
+#
+# $ hcht evilcommand.hch
+#
+# this will create a new file or edit a existing one. 
+# paste your command or notice in your favorite editor
+
+### show all stored informations
+# to get an overview of your storedir:
+#
+# $ hcht
+
+### todo with a whole sentence
+# you can give hcht a bunch of parameters
+#
+# $ hcht this is a long reminder about a anything
+
+### save last executed command
+# lets say you did a great hack at your system and you
+# want to save it without complicated use of coping:
+#
+# $ hcht !! 
+#
+# the "!!" will repeat the _last_ command you executed at 
+# your terminal. after asking you about a name the hch file 
+# will be saved.  
+
+### read from stdin
+# hcht is also able to read anything from stdin. 
+#
+# $ cat any_important_logfile | hcht anylog 
+#
+# "anylog" will be the name of the saved file.  
+
+hcht() {
+    # configured?
+    if [ -z $hchtstoredir ]; then
+        echo "ERROR: handmade commandline history tool isn't configured."
+        return 1
+    else
+        hchtstoredir=$(echo $hchtstoredir | sed -e 's/\/$//')
+    fi
+
+    # dir available?
+    if [ ! -d $hchtstoredir ]; then
+        echo "ERROR: No such directory: $hchtstoredir"
+        return 1
+    fi
+
+    # get favorite editor
+    if [ -z $EDITOR ]; then
+        EDITOR=$(which vim || which nano)
+    fi
+
+    # check if stdin-data is present and save content
+    if [ "$(tty)" = "not a tty" ]; then
+        hchname=$(echo $1 | sed -e 's/\ //g')
+        if [ -z $hchname ]; then
+            cat < /dev/stdin >> $hchtstoredir/$(date +%Y%m%d%H%M%S).hch
+        else
+            cat < /dev/stdin >> $hchtstoredir/$hchname.hch
+        fi
+        return 0
+    fi
+
+    # list all hch files if no parameter is given
+    if [ $# -eq 0 ]; then
+        for file in $(ls $hchtstoredir); do
+            echo $file
+        done
+        return 0
+    fi
+
+    # if a *.hch file is given start editing or creating it
+    if [ "$#" -eq "1" ]; then 
+        if echo "$1" | grep -q -e ".*.hch$" ; then
+            $EDITOR ${hchtstoredir}/${1}
+            return 0
+        else 
+            $EDITOR ${hchtstoredir}/${1}.hch
+            return 0
+        fi
+    fi
+
+    # autocreate a new hch  
+    if [ "$#" -gt "1" ]; then
+        echo -n "define a name: " ; read hchname
+        hchname=$(echo $hchname | sed -e 's/\ /_/g')
+        if [ -z "$hchname" ]; then
+            echo "$*" > $hchtstoredir/${1}-$(date +%Y%m%d%H%M%S).hch
+        else
+            echo "$*" > ${hchtstoredir}/${hchname}.hch
+        fi
+        return 0
+    fi    
+}
diff --git a/plugins/hg.plugins.bash b/plugins/hg.plugins.bash
new file mode 100644
index 0000000..f72761b
--- /dev/null
+++ b/plugins/hg.plugins.bash
@@ -0,0 +1,14 @@
+#!/bin/bash
+hg_dirty() {
+    hg status --no-color 2> /dev/null \
+    | awk '$1 == "?" { print "?" } $1 != "?" { print "!" }' \
+    | sort | uniq | head -c1
+}
+
+hg_in_repo() {
+    [[ `hg branch 2> /dev/null` ]] && echo 'on '
+}
+
+hg_branch() {
+    hg branch 2> /dev/null
+}
\ No newline at end of file
diff --git a/functions/javascript.functions.bash b/plugins/javascript.plugins.bash
similarity index 100%
rename from functions/javascript.functions.bash
rename to plugins/javascript.plugins.bash
diff --git a/plugins/jekyll.plugins.bash b/plugins/jekyll.plugins.bash
new file mode 100644
index 0000000..3ad9d0d
--- /dev/null
+++ b/plugins/jekyll.plugins.bash
@@ -0,0 +1,182 @@
+#!/bin/bash
+
+newpost() {
+
+	# 'builtin cd' into the local jekyll root
+
+	builtin cd "$JEKYLL_LOCAL_ROOT/_posts"
+
+	# Get the date for the new post's filename
+
+	FNAME_DATE=$(date "+%Y-%m-%d")
+
+	# If the user is using markdown formatting, let them choose what type of post they want. Sort of like Tumblr. 
+
+	OPTIONS="Text Quote Image Audio Video Link"
+	
+	if [ $JEKYLL_FORMATTING = "markdown" -o $JEKYLL_FORMATTING = "textile" ]
+	then
+		select OPTION in $OPTIONS
+		do
+			if [[ $OPTION = "Text" ]] 
+			then
+				POST_TYPE="Text"
+				break
+			fi
+
+			if [[ $OPTION = "Quote" ]]
+			then
+				POST_TYPE="Quote"
+				break
+			fi
+		
+			if [[ $OPTION = "Image" ]]
+			then
+				POST_TYPE="Image"
+				break
+			fi
+
+			if [[ $OPTION = "Audio" ]]
+			then
+				POST_TYPE="Audio"
+				break
+			fi
+
+			if [[ $OPTION = "Video" ]]
+			then
+				POST_TYPE="Video"
+				break
+			fi
+
+			if [[ $OPTION = "Link" ]]
+			then
+				POST_TYPE="Link"
+				break
+			fi
+		done
+	fi
+
+	# Get the title for the new post
+
+	read -p "Enter title of the new post: " POST_TITLE
+
+	# Convert the spaces in the title to hyphens for use in the filename
+
+	FNAME_POST_TITLE=`echo $POST_TITLE | tr ' ' "-"`
+
+	# Now, put it all together for the full filename
+
+	FNAME="$FNAME_DATE-$FNAME_POST_TITLE.$JEKYLL_FORMATTING"
+
+	# And, finally, create the actual post file. But we're not done yet...
+
+	touch "$FNAME"
+
+	# Write a little stuff to the file for the YAML Front Matter
+
+	echo "---" >> $FNAME
+
+	# Now we have to get the date, again. But this time for in the header (YAML Front Matter) of
+	# the file
+
+	YAML_DATE=$(date "+%B %d %X")
+
+	# Echo the YAML Formatted date to the post file
+
+	echo "date: $YAML_DATE" >> $FNAME
+
+	# Echo the original post title to the YAML Front Matter header
+
+	echo "title: $POST_TITLE" >> $FNAME
+
+	# And, now, echo the "post" layout to the YAML Front Matter header
+
+	echo "layout: post" >> $FNAME
+
+	# Close the YAML Front Matter Header
+
+	echo "---" >> $FNAME
+	echo >> $FNAME
+
+	# Generate template text based on the post type
+
+	if [[ $JEKYLL_FORMATTING = "markdown" ]]
+	then
+		if [[ $POST_TYPE = "Text" ]]
+		then
+			true
+		fi
+
+		if [[ $POST_TYPE = "Quote" ]]
+		then
+			echo "> Quote" >> $FNAME
+			echo >> $FNAME
+			echo "&mdash; Author" >> $FNAME
+		fi
+
+		if [[ $POST_TYPE = "Image" ]]
+		then
+			echo "![Alternate Text](/path/to/image/or/url)" >> $FNAME
+		fi
+
+		if [[ $POST_TYPE = "Audio" ]]
+		then
+			echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
+		fi
+
+		if [[ $POST_TYPE = "Video" ]]
+		then
+			echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
+		fi
+	
+		if [[ $POST_TYPE = "Link" ]]
+		then
+			echo "[link][1]" >> $FNAME
+			echo >> $FNAME
+			echo "> Quote" >> $FNAME
+			echo >> $FNAME
+			echo "[1]: url" >> $FNAME
+		fi
+	fi
+
+	if [[ $JEKYLL_FORMATTING = "textile" ]]
+	then
+		if [[ $POST_TYPE = "Text" ]]
+		then
+			true
+		fi
+
+		if [[ $POST_TYPE = "Quote" ]]
+		then
+			echo "bq. Quote" >> $FNAME
+			echo >> $FNAME
+			echo "&mdash; Author" >> $FNAME
+		fi
+
+		if [[ $POST_TYPE = "Image" ]]
+		then
+			echo "!url(alt text)" >> $FNAME
+		fi
+
+		if [[ $POST_TYPE = "Audio" ]]
+		then
+			echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
+		fi
+
+		if [[ $POST_TYPE = "Video" ]]
+		then
+			echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
+		fi
+
+		if [[ $POST_TYPE = "Link" ]]
+		then
+			echo "\"Site\":url" >> $FNAME
+			echo >> $FNAME
+			echo "bq. Quote" >> $FNAME
+		fi
+	fi
+
+	# Open the file in your favorite editor
+
+	$EDITOR $FNAME
+}
diff --git a/functions/nginx.functions.bash b/plugins/nginx.plugins.bash
similarity index 100%
rename from functions/nginx.functions.bash
rename to plugins/nginx.plugins.bash
diff --git a/plugins/osx.plugin.bash b/plugins/osx.plugin.bash
index 1dd9266..e6271bd 100644
--- a/plugins/osx.plugin.bash
+++ b/plugins/osx.plugin.bash
@@ -1,7 +1,5 @@
 #!/bin/bash
 
-alias f='open -a Finder '
-
 function tab() {
   osascript 2>/dev/null <<EOF
     tell application "System Events"
@@ -13,3 +11,27 @@
     end tell
 EOF
 }
+
+# this one switches your os x dock between 2d and 3d
+# thanks to savier.zwetschge.org
+function dock-switch() {
+
+    if [ $(uname) = "Darwin" ]; then
+        
+        if [ $1 = 3d ] ; then
+            defaults write com.apple.dock no-glass -boolean NO
+            killall Dock
+
+        elif [ $1 = 2d ] ; then
+            defaults write com.apple.dock no-glass -boolean YES
+            killall Dock
+
+        else
+            echo "usage:"
+            echo "dock-switch 2d" 
+            echo "dock-switch 3d."
+        fi
+    else
+        echo "sorry. you're currently not using os x"
+    fi
+}
diff --git a/plugins/rvm.plugin.bash b/plugins/rvm.plugin.bash
index 020bb3f..d3c81ed 100644
--- a/plugins/rvm.plugin.bash
+++ b/plugins/rvm.plugin.bash
@@ -13,4 +13,4 @@
 
 function rvm_version () {
   ruby --version
-}
+}
\ No newline at end of file
diff --git a/plugins/ssh.plugins.bash b/plugins/ssh.plugins.bash
new file mode 100644
index 0000000..0e50199
--- /dev/null
+++ b/plugins/ssh.plugins.bash
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+function add_ssh() {
+  echo -en "\n\nHost $1\n  HostName $2\n  User $3\n  ServerAliveInterval 30\n  ServerAliveCountMax 120" >> ~/.ssh/config
+}
+
+function sshlist() {
+  awk '$1 ~ /Host$/ { print $2 }' ~/.ssh/config
+}
\ No newline at end of file
diff --git a/plugins/vagrant.plugins.bash b/plugins/vagrant.plugins.bash
new file mode 100644
index 0000000..17aff4e
--- /dev/null
+++ b/plugins/vagrant.plugins.bash
@@ -0,0 +1,50 @@
+#!/bin/bash
+_vagrant()
+{
+    cur="${COMP_WORDS[COMP_CWORD]}"
+    prev="${COMP_WORDS[COMP_CWORD-1]}"
+    commands="box destroy halt help init package provision reload resume ssh ssh_config status suspend up version"
+
+    if [ $COMP_CWORD == 1 ]
+    then
+      COMPREPLY=($(compgen -W "${commands}" -- ${cur}))
+      return 0
+    fi
+
+    if [ $COMP_CWORD == 2 ]
+    then
+        case "$prev" in
+            "box")
+              box_commands="add help list remove repackage"
+              COMPREPLY=($(compgen -W "${box_commands}" -- ${cur}))
+              return 0
+            ;;
+            "help")
+              COMPREPLY=($(compgen -W "${commands}" -- ${cur}))
+              return 0
+            ;;
+            *)
+            ;;
+        esac
+    fi
+
+    if [ $COMP_CWORD == 3 ]
+    then
+      action="${COMP_WORDS[COMP_CWORD-2]}"
+      if [ $action == 'box' ]
+      then
+        case "$prev" in
+            "remove"|"repackage")
+              local box_list=$(find $HOME/.vagrant/boxes/* -maxdepth 0 -type d -printf '%f ')
+              COMPREPLY=($(compgen -W "${box_list}" -- ${cur}))
+              return 0
+              ;;
+            *)
+            ;;
+        esac
+      fi
+    fi
+
+}
+complete -F _vagrant vagrant
+
diff --git a/template/bash_profile.template.bash b/template/bash_profile.template.bash
index 0991d90..17853b1 100644
--- a/template/bash_profile.template.bash
+++ b/template/bash_profile.template.bash
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-# Load RVM
+# Load RVM, if you are using it
 [[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm
 
 # Add rvm gems and nginx to the path
@@ -17,7 +17,7 @@
 export GIT_HOSTING='git@git.domain.com'
 
 # Set my editor and git editor
-export EDITOR="/usr/bin/mate -w" 
+export EDITOR="/usr/bin/mate -w"
 export GIT_EDITOR='/usr/bin/mate -w'
 
 # Set the path nginx
@@ -26,5 +26,29 @@
 # Don't check mail when opening terminal.
 unset MAILCHECK
 
+# Change this to the path of your local jekyll root to use the jekyll aliases
+
+export JEKYLL_LOCAL_ROOT="$HOME/Sites/jekyllsite"
+
+# And change this to the remote server and root
+
+export JEKYLL_REMOTE_ROOT="user@server:/path/to/jekyll/root"
+
+# And, for the last of the jekyll variables, this is the formatting you use, eg: markdown,
+# textile, etc. Basically whatever you use as the extension for posts, without the preceding dot
+
+export JEKYLL_FORMATTING="markdown"
+
+# Change this to your console based IRC client of choice.
+
+export IRC_CLIENT='irssi'
+
+# Set this to the command you use for todo.txt-cli
+
+export TODO="t"
+
+# Set store directory for handmade commandline history tool 
+export hchtstoredir="$HOME/.hcht"
+
 # Load Bash It
 source $BASH/bash_it.sh
diff --git a/themes/base.theme.bash b/themes/base.theme.bash
index 98d295a..e77d1d2 100644
--- a/themes/base.theme.bash
+++ b/themes/base.theme.bash
@@ -1,21 +1,84 @@
 #!/bin/bash
 
-# Stolen from Steve Losh
-function prompt_char {
-    git branch >/dev/null 2>/dev/null && echo '±' && return
-    hg root >/dev/null 2>/dev/null && echo '☿' && return
-    echo '○'
-}
+SCM_THEME_PROMPT_DIRTY=' ✗'
+SCM_THEME_PROMPT_CLEAN=' ✓'
+SCM_THEME_PROMPT_PREFIX=' |'
+SCM_THEME_PROMPT_SUFFIX='|'
 
-function parse_git_dirty {
-  if [[ -n $(git status -s 2> /dev/null) ]]; then
-    echo "$GIT_THEME_PROMPT_DIRTY"
-  else
-    echo "$GIT_THEME_PROMPT_CLEAN"
+GIT='git'
+SCM_GIT_CHAR='±'
+
+HG='hg'
+SCM_HG_CHAR='☿'
+
+SVN='svn'
+SCM_SVN_CHAR='⑆'
+
+SCM_NONE_CHAR='○'
+
+RVM_THEME_PROMPT_PREFIX=' |'
+RVM_THEME_PROMPT_SUFFIX='|'
+
+function scm {
+  if [[ -d .git ]]; then SCM=$GIT
+  elif [[ -d .hg ]]; then SCM=$HG
+  elif [[ -d .svn ]]; then SCM=$SVN
+  else SCM='NONE'
   fi
 }
 
-function git_prompt_info() {
+function scm_char {
+  if [[ -z $SCM ]]; then scm; fi
+  [[ $SCM == $GIT ]] && echo $SCM_GIT_CHAR && return
+  [[ $SCM == $HG ]] && echo $SCM_HG_CHAR && return
+  [[ $SCM == $SVN ]] && echo $SCM_SVN_CHAR && return
+  echo $SCM_NONE_CHAR
+}
+
+function scm_prompt_info {
+  if [[ -z $SCM ]]; then scm; fi
+  [[ $SCM == $GIT ]] && git_prompt_info && return
+  [[ $SCM == $HG ]] && hg_prompt_info && return
+  [[ $SCM == $SVN ]] && svn_prompt_info && return
+}
+
+# Stolen from Steve Losh
+# left in for backwards-compatibility
+function prompt_char {
+    char=$(scm_char);
+    echo -e "$char"
+}
+
+function git_prompt_info {
+  if [[ -n $(git status -s 2> /dev/null |grep -v ^# |grep -v "working directory clean") ]]; then
+      state=${GIT_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
+  else
+      state=${GIT_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN}
+  fi
+  prefix=${GIT_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
+  suffix=${GIT_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
   ref=$(git symbolic-ref HEAD 2> /dev/null) || return
-  echo "$GIT_THEME_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$GIT_THEME_PROMPT_SUFFIX"
-}
\ No newline at end of file
+
+  echo -e "$prefix${ref#refs/heads/}$state$suffix"
+}
+
+function svn_prompt_info {
+  if [[ -n $(svn status 2> /dev/null) ]]; then
+      state=${SVN_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
+  else
+      state=${SVN_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN}
+  fi
+  prefix=${SVN_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
+  suffix=${SVN_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
+  ref=$(svn info 2> /dev/null | awk -F/ '/^URL:/ { for (i=0; i<=NF; i++) { if ($i == "branches" || $i == "tags" ) { print $(i+1); break }; if ($i == "trunk") { print $i; break } } }') || return
+
+  [[ -z $ref ]] && return
+  echo -e "$prefix$ref$state$suffix"
+}
+
+function rvm_version_prompt {
+  if which rvm &> /dev/null; then
+    rvm=$(rvm tools identifier) || return
+    echo -e "$RVM_THEME_PROMPT_PREFIX$rvm$RVM_THEME_PROMPT_SUFFIX"
+  fi
+}
diff --git a/themes/bobby/bobby.theme.bash b/themes/bobby/bobby.theme.bash
index bea85ef..e719995 100644
--- a/themes/bobby/bobby.theme.bash
+++ b/themes/bobby/bobby.theme.bash
@@ -1,26 +1,19 @@
 #!/bin/bash
-
-# prompt themeing
-
-#added TITLEBAR for updating the tab and window titles with the pwd
-case $TERM in
-	xterm*)
-	TITLEBAR='\[\033]0;\w\007\]'
-	;;
-	*)
-	TITLEBAR=""
-	;;
-esac
-PROMPT="${TITLEBAR}${bold_blue}\$(prompt_char)\$(git_prompt_info) ${orange}\h ${reset_color}in ${green}\w ${reset_color}→ "
+SCM_THEME_PROMPT_DIRTY=" ${red}✗"
+SCM_THEME_PROMPT_CLEAN=" ${bold_green}✓"
+SCM_THEME_PROMPT_PREFIX=" |"
+SCM_THEME_PROMPT_SUFFIX="${green}|"
 
 
-# git themeing
-# GIT_THEME_PROMPT_DIRTY=" ${red}✗"
-# GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓"
-# GIT_THEME_PROMPT_PREFIX=" ${green}|"
-# GIT_THEME_PROMPT_SUFFIX="${green}|"
+PROMPT="\[${bold_blue}\]\[\$(scm_char)\]\[${green}\]\[\$(scm_prompt_info)\]\[${blue}\]\[\$(rvm_version_prompt)\] \[${orange}\]\h \[${reset_color}\]in \[${green}\]\w \[${reset_color}\]\[\n\[${green}\]→\[${reset_color}\] "
 
-GIT_THEME_PROMPT_DIRTY=" ✗"
-GIT_THEME_PROMPT_CLEAN=" ✓"
-GIT_THEME_PROMPT_PREFIX=" |"
-GIT_THEME_PROMPT_SUFFIX="|"
+
+# git theming
+GIT_THEME_PROMPT_DIRTY=" ${red}✗"
+GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓"
+GIT_THEME_PROMPT_PREFIX=" ${green}|"
+GIT_THEME_PROMPT_SUFFIX="${green}|"
+
+RVM_THEME_PROMPT_PREFIX=" |"
+RVM_THEME_PROMPT_SUFFIX="|"
+
diff --git a/themes/candy/candy.theme.bash b/themes/candy/candy.theme.bash
index f2a5db2..ef0ba26 100644
--- a/themes/candy/candy.theme.bash
+++ b/themes/candy/candy.theme.bash
@@ -1,2 +1,2 @@
 #!/bin/bash
-PROMPT='${green}\u@\h ${blue}\T ${reset_color}${white}\w${reset_color}$(git_prompt_info)${blue} →${bold_blue} \$${reset_color} '
\ No newline at end of file
+PROMPT="${green}\u@\h ${blue}\T ${reset_color}${white}\w${reset_color}\[\$(scm_prompt_info)\]${blue} →${bold_blue} \$${reset_color} "
\ No newline at end of file
diff --git a/themes/clean/clean.theme.bash b/themes/clean/clean.theme.bash
index e84c2e0..2fc418f 100644
--- a/themes/clean/clean.theme.bash
+++ b/themes/clean/clean.theme.bash
@@ -1,6 +1,6 @@
 if [ "$(whoami)" = root ]; then no_color=$red; else no_color=$white; fi
 
-PROMPT='${no_color}\u${reset_color}:${blue}\W/${reset_color} $(git_prompt_info)$ '
+PROMPT="${no_color}\u${reset_color}:${blue}\W/${reset_color} \[\$(scm_prompt_info)\]$ "
 RPROMPT='[\t]'
 
 
diff --git a/themes/colors.theme.bash b/themes/colors.theme.bash
index 1211f4b..9aa253f 100644
--- a/themes/colors.theme.bash
+++ b/themes/colors.theme.bash
@@ -1,79 +1,44 @@
 #!/bin/bash
 
-# green=$'\e[0;32m'
-# red=$'\e[0;31m'
-# blue=$'\e[0;34m'
-# white=$'\e[1;37m'
-# black=$'\e[0;30m'
-# yellow=$'\e[0;33m'
-# purple=$'\e[0;35m'
-# cyan=$'\e[0;36m'
-# orange=$'\e[33;40m'
-# 
-# 
-# bold_green=$'\e[1;32m'
-# bold_red=$'\e[1;31m'
-# bold_blue=$'\e[1;34m'
-# bold_yellow=$'\e[1;33m'
-# bold_purple=$'\e[1;35m'
-# bold_cyan=$'\e[1;36m'
-# bold_orange=$'\e[1;33;40m'
-# 
-# normal=$'\e[00m'
-# reset_color=$'\e[39m'
+black=$'\e[0;30m'
+red=$'\e[0;31m'
+green=$'\e[0;32m'
+yellow=$'\e[0;33m'
+blue=$'\e[0;34m'
+purple=$'\e[0;35m'
+cyan=$'\e[0;36m'
+white=$'\e[1;37m'
+orange=$'\e[33;40m'
+
+bold_black=$'\e[1;30m'
+bold_red=$'\e[1;31m'
+bold_green=$'\e[1;32m'
+bold_yellow=$'\e[1;33m'
+bold_blue=$'\e[1;34m'
+bold_purple=$'\e[1;35m'
+bold_cyan=$'\e[1;36m'
+bold_white=$'\e[1;37m'
+bold_orange=$'\e[1;33;40m'
+
+underline_black=$'\e[4;30m'
+underline_red=$'\e[4;31m'
+underline_green=$'\e[4;32m'
+underline_yellow=$'\e[4;33m'
+underline_blue=$'\e[4;34m'
+underline_purple=$'\e[4;35m'
+underline_cyan=$'\e[4;36m'
+underline_white=$'\e[4;37m'
+underline_orange=$'\e[4;33;40m'
+
+background_black=$'\e[40m'
+background_red=$'\e[41m'
+background_green=$'\e[42m'
+background_yellow=$'\e[43m'
+background_blue=$'\e[44m'
+background_purple=$'\e[45m'
+background_cyan=$'\e[46m'
+background_white=$'\e[47m'
 
 
-
-ESC="\033"
-NON_BOLD=0
-BOLD=1
-
-# Foreground
-FG_BLACK=30
-FG_RED=31
-FG_GREEN=32
-FG_YELLOW=33
-FG_BLUE=34
-FG_VIOLET=35
-FG_CYAN=36
-FG_WHITE=37
-FG_ORANGE='33;40'
-FG_NULL=00
-
-# Background
-BG_BLACK=40
-BG_RED=41
-BG_GREEN=42
-BG_YELLOW=43
-BG_BLUE=44
-BG_VIOLET=45
-BG_CYAN=46
-BG_WHITE=47
-BG_NULL=00
-
-
-normal="\[$ESC[m\]"
-reset_color="\[$ESC[${NON_BOLD};${FG_WHITE};${BG_NULL}m\]"
-
-# Non-bold
-black="\[$ESC[${NON_BOLD};${FG_BLACK}m\]"
-red="\[$ESC[${NON_BOLD};${FG_RED}m\]"
-green="\[$ESC[${NON_BOLD};${FG_GREEN}m\]"
-yellow="\[$ESC[${NON_BOLD};${FG_YELLOW}m\]"
-blue="\[$ESC[${NON_BOLD};${FG_BLUE}m\]"
-purple="\[$ESC[${NON_BOLD};${FG_VIOLET}m\]"
-cyan="\[$ESC[${NON_BOLD};${FG_CYAN}m\]"
-white="\[$ESC[${NON_BOLD};${FG_WHITE}m\]"
-orange="\[$ESC[${NON_BOLD};${FG_ORANGE}m\]"
-
-
-# Bold
-bold_black="\[$ESC[${BOLD};${FG_BLACK}m\]"
-bold_red="\[$ESC[${BOLD};${FG_RED}m\]"
-bold_green="\[$ESC[${BOLD};${FG_GREEN}m\]"
-bold_yellow="\[$ESC[${BOLD};${FG_YELLOW}m\]"
-bold_blue="\[$ESC[${BOLD};${FG_BLUE}m\]"
-bold_purple="\[$ESC[${BOLD};${FG_VIOLET}m\]"
-bold_cyan="\[$ESC[${BOLD};${FG_CYAN}m\]"
-bold_white="\[$ESC[${BOLD};${FG_WHITE}m\]"
-bold_orange="\[$ESC[${BOLD};${FG_ORANGE}m\]"
\ No newline at end of file
+normal=$'\e[00m'
+reset_color=$'\e[39m'
\ No newline at end of file
diff --git a/themes/minimal/minimal.theme.bash b/themes/minimal/minimal.theme.bash
new file mode 100644
index 0000000..a94c453
--- /dev/null
+++ b/themes/minimal/minimal.theme.bash
@@ -0,0 +1,21 @@
+prompt_setter() {
+	if [[ $? -eq 0 ]]; then
+		if [ ! $VIMRUNTIME = "" ]
+		then
+			PS1="{vim} \W "
+		else
+			PS1="\W "
+		fi
+	else
+		if [ ! $VIMRUNTIME = "" ]
+		then
+			PS1="{vim} ${bold_red}\W ${normal}"
+		else
+			PS1="${bold_red}\W ${normal}"
+		fi
+	fi
+}
+
+PROMPT_COMMAND=prompt_setter
+
+export PS3=">> "
diff --git a/themes/modern/modern.theme.bash b/themes/modern/modern.theme.bash
new file mode 100644
index 0000000..f0dbccc
--- /dev/null
+++ b/themes/modern/modern.theme.bash
@@ -0,0 +1,35 @@
+SCM_THEME_PROMPT_PREFIX=""
+SCM_THEME_PROMPT_SUFFIX=""
+
+SCM_THEME_PROMPT_DIRTY=' ${bold_red}✗${normal}'
+SCM_THEME_PROMPT_CLEAN=' ${bold_green}✓${normal}'
+SCM_GIT_CHAR='${bold_green}±${normal}'
+SCM_SVN_CHAR='${bold_cyan}⑆${normal}'
+SCM_HG_CHAR='${bold_red}☿${normal}'
+
+modern_scm_prompt() {
+	CHAR=$(scm_char)
+	if [ $CHAR = $SCM_NONE_CHAR ]
+	then
+		return
+	else
+		echo "[$(scm_char)][$(scm_prompt_info)]"
+	fi
+}
+
+prompt() {
+	if [ $? -ne 0 ]
+	then
+		PS1="${bold_red}┌─${reset_color}$(modern_scm_prompt)[${cyan}\W${normal}]
+${bold_red}└─▪${normal} "
+	else
+		PS1="┌─$(modern_scm_prompt)[${cyan}\W${normal}]
+└─▪ "
+	fi
+}
+
+PS2="└─▪ "
+
+
+
+PROMPT_COMMAND=prompt
diff --git a/themes/n0qorg/n0qorg.theme.bash b/themes/n0qorg/n0qorg.theme.bash
new file mode 100644
index 0000000..fcaca43
--- /dev/null
+++ b/themes/n0qorg/n0qorg.theme.bash
@@ -0,0 +1,22 @@
+#!/bin/bash
+# n0qorg theme by Florian Baumann <flo@noqqe.de>
+
+## look-a-like
+# host directory (branch*)»
+# for example:
+# ananas ~/Code/bash-it/themes (master*)»
+PROMPT="${bold_blue}\[\$(hostname)\]${normal} \w${normal} ${bold_white}\[\$(git_prompt_info)\]${normal}» "
+
+## git-theme
+# feel free to change git chars.
+GIT_THEME_PROMPT_DIRTY="${bold_blue}*${bold_white}"
+GIT_THEME_PROMPT_CLEAN=""
+GIT_THEME_PROMPT_PREFIX="${bold_blue}(${bold_white}"
+GIT_THEME_PROMPT_SUFFIX="${bold_blue})"
+
+## alternate chars
+# 
+SCM_THEME_PROMPT_DIRTY="*"
+SCM_THEME_PROMPT_CLEAN=""
+SCM_THEME_PROMPT_PREFIX="("
+SCM_THEME_PROMPT_SUFFIX=")"
diff --git a/themes/pete/pete.theme.bash b/themes/pete/pete.theme.bash
new file mode 100644
index 0000000..95f243a
--- /dev/null
+++ b/themes/pete/pete.theme.bash
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+prompt_setter() {
+  # Save history
+  history -a
+  history -c
+  history -r
+  PS1="(\t) $(scm_char) [\[$blue\]\u\[$reset_color\]@\[$green\]\H\[$reset_color\]] \[$yellow\]\w\[$reset_color\]$(scm_prompt_info)$(rvm_version_prompt) $\[$reset_color\] "
+  PS2='> '
+  PS4='+ '
+}
+
+PROMPT_COMMAND=prompt_setter
+
+SCM_THEME_PROMPT_DIRTY=" ✗"
+SCM_THEME_PROMPT_CLEAN=" ✓"
+SCM_THEME_PROMPT_PREFIX=" ("
+SCM_THEME_PROMPT_SUFFIX=")"
+RVM_THEME_PROMPT_PREFIX=" ("
+RVM_THEME_PROMPT_SUFFIX=")"
diff --git a/themes/simple/simple.theme.bash b/themes/simple/simple.theme.bash
index be28af5..2dcd7e7 100644
--- a/themes/simple/simple.theme.bash
+++ b/themes/simple/simple.theme.bash
@@ -11,16 +11,11 @@
 	TITLEBAR=""
 	;;
 esac
-PROMPT="${TITLEBAR}${orange}${reset_color}${green}\w${bold_blue}\$(git_prompt_info)${reset_color} "
+PROMPT="${TITLEBAR}${orange}${reset_color}${green}\w${bold_blue}\[\$(scm_prompt_info)\]${reset_color} "
 
 
-# git themeing
-# GIT_THEME_PROMPT_DIRTY=" ${red}✗"
-# GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓"
-# GIT_THEME_PROMPT_PREFIX=" ${green}|"
-# GIT_THEME_PROMPT_SUFFIX="${green}|"
-
-GIT_THEME_PROMPT_DIRTY=" ✗"
-GIT_THEME_PROMPT_CLEAN=" ✓"
-GIT_THEME_PROMPT_PREFIX="("
-GIT_THEME_PROMPT_SUFFIX=")"
+# scm themeing
+SCM_THEME_PROMPT_DIRTY=" ✗"
+SCM_THEME_PROMPT_CLEAN=" ✓"
+SCM_THEME_PROMPT_PREFIX="("
+SCM_THEME_PROMPT_SUFFIX=")"
diff --git a/themes/sirup/sirup.theme.bash b/themes/sirup/sirup.theme.bash
new file mode 100644
index 0000000..5066587
--- /dev/null
+++ b/themes/sirup/sirup.theme.bash
@@ -0,0 +1,18 @@
+# For unstaged(*) and staged(+) values next to branch name in __git_ps1
+GIT_PS1_SHOWDIRTYSTATE="enabled"
+
+function rvm_version_prompt {
+  local gemset=$(echo $GEM_HOME | awk -F'@' '{print $2}')
+
+  [ "$gemset" != "" ] && gemset="@$gemset"
+  local version=$(echo $MY_RUBY_HOME | awk -F'-' '{print $2}')
+
+  [ "$version" == "1.9.2" ] && version=""
+
+  local full="$version$gemset"
+
+  [ "$full" != "" ] && echo "$full"
+}
+
+# Check http://github.com/Sirupsen/dotfiles for screenshot
+PS1='\[$blue\]\W/\[$bold_blue\]$(rvm_version_prompt)\[$bold_green\]$(__git_ps1 " (%s)") \[${normal}\]$ '
diff --git a/themes/standard/standard.theme.bash b/themes/standard/standard.theme.bash
index ce99709..5ba288c 100644
--- a/themes/standard/standard.theme.bash
+++ b/themes/standard/standard.theme.bash
@@ -1,9 +1,22 @@
 PROMPT='\[${green}\]\u\[${normal}\]@\[${green}\]\h\[${normal}\]:\[${blue}\]\w\[${normal}\]\[${red}\]$(prompt_char)$(git_prompt_info)\[${normal}\]\$ '
 
-# git themeing
-GIT_THEME_PROMPT_DIRTY="×"
-GIT_THEME_PROMPT_CLEAN="✓"
-GIT_THEME_PROMPT_PREFIX=""
-GIT_THEME_PROMPT_SUFFIX=""
 
-# ${debian_chroot:+($debian_chroot)}
\ No newline at end of file
+
+# scm themeing
+SCM_THEME_PROMPT_DIRTY="×"
+SCM_THEME_PROMPT_CLEAN="✓"
+SCM_THEME_PROMPT_PREFIX=""
+SCM_THEME_PROMPT_SUFFIX=""
+
+# TODO: need a check for OS before adding this to the prompt
+# ${debian_chroot:+($debian_chroot)}
+
+#added TITLEBAR for updating the tab and window titles with the pwd
+case $TERM in
+	xterm*)
+	TITLEBAR='\[\033]0;\w\007\]'
+	;;
+	*)
+	TITLEBAR=""
+	;;
+esac
\ No newline at end of file
diff --git a/themes/zitron/zitron.theme.bash b/themes/zitron/zitron.theme.bash
new file mode 100644
index 0000000..c072686
--- /dev/null
+++ b/themes/zitron/zitron.theme.bash
@@ -0,0 +1,20 @@
+#!/bin/bash
+# zitron theme by Florian Baumann <flo@noqqe.de>
+
+## look-a-like
+# user:host:pwd git-branch(*)$
+# for example:
+# noqqe:deathstar:themes master*$
+PROMPT="${no_color}\u:\[\$(hostname)\]${normal}:${bold_yellow}\W/${normal} \[\$(git_prompt_info)\]${reset_color}$ "
+
+## git-theme
+# feel free to change git chars.
+GIT_THEME_PROMPT_DIRTY="${bold_yellow}*${normal}"
+GIT_THEME_PROMPT_CLEAN=""
+GIT_THEME_PROMPT_PREFIX=""
+GIT_THEME_PROMPT_SUFFIX=""
+
+## ls colors
+# thanks a lot to http://geoff.greer.fm/lscolors/
+export LSCOLORS="Gxfxcxdxbxegedabagacad"
+export LS_COLORS="no=00:fi=00:di=01;33:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;34:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:"
