diff --git a/lib/completion.zsh b/lib/completion.zsh
index b58612d..b627ef8 100644
--- a/lib/completion.zsh
+++ b/lib/completion.zsh
@@ -1,11 +1,11 @@
 ## fixme - the load process here seems a bit bizarre
 
-setopt noautomenu
+unsetopt menu_complete   # do not autoselect the first completion entry
+unsetopt flowcontrol
+setopt auto_menu         # show completion menu on succesive tab press
 setopt complete_in_word
 setopt always_to_end
 
-unsetopt flowcontrol
-
 WORDCHARS=''
 
 autoload -U compinit
@@ -23,14 +23,10 @@ fi
 
 zstyle ':completion:*' list-colors ''
 
-
-unsetopt MENU_COMPLETE
-#setopt AUTO_MENU
-
 # should this be in keybindings?
 bindkey -M menuselect '^o' accept-and-infer-next-history
 
-zstyle ':completion:*:*:*:*:*' menu yes select
+zstyle ':completion:*:*:*:*:*' menu select
 # zstyle ':completion:*:*:*:*:processes' force-list always
 
 zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
diff --git a/lib/git.zsh b/lib/git.zsh
index 629a08b..1d1d24d 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -5,7 +5,7 @@ function git_prompt_info() {
 }
 
 parse_git_dirty () {
-  if [[ $((git status 2> /dev/null) | tail -n1) != "nothing to commit (working directory clean)" ]]; then
+  if [[ -n $(git status -s 2> /dev/null) ]]; then
     echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
   else
     echo "$ZSH_THEME_GIT_PROMPT_CLEAN"
diff --git a/lib/rake_completion.zsh b/lib/rake_completion.zsh
index c425a62..8336182 100644
--- a/lib/rake_completion.zsh
+++ b/lib/rake_completion.zsh
@@ -1,24 +1,3 @@
-_rake_does_task_list_need_generating () {
-  if [ ! -f .rake_tasks~ ]; then return 0;
-  else
-    accurate=$(stat -f%m .rake_tasks~)
-    changed=$(stat -f%m Rakefile)
-    return $(expr $accurate '>=' $changed)
-  fi
-}
-
-_rake () {
-  if [ -f Rakefile ]; then
-    if _rake_does_task_list_need_generating; then
-      echo "\nGenerating .rake_tasks~..." > /dev/stderr
-      rake --silent --tasks | cut -d " " -f 2 > .rake_tasks~
-    fi
-    compadd `cat .rake_tasks~`
-  fi
-}
-
-compctl -K _rake rake
-
 function _cap_does_task_list_need_generating () {
   if [ ! -f .cap_tasks~ ]; then return 0;
   else
diff --git a/lib/spectrum.zsh b/lib/spectrum.zsh
new file mode 100644
index 0000000..4006a7f
--- /dev/null
+++ b/lib/spectrum.zsh
@@ -0,0 +1,20 @@
+#! /bin/zsh
+# A script to make using 256 colors in zsh less painful.
+# P.C. Shyamshankar <sykora@lucentbeing.com>
+# Copied from http://github.com/sykora/etc/blob/master/zsh/functions/spectrum/
+
+typeset -Ag FX FG BG
+
+FX=(
+    reset     "%{%}"
+    bold      "%{%}" no-bold      "%{%}"
+    italic    "%{%}" no-italic    "%{%}"
+    underline "%{%}" no-underline "%{%}"
+    blink     "%{%}" no-blink     "%{%}"
+    reverse   "%{%}" no-reverse   "%{%}"
+)
+
+for color in {000..255}; do
+    FG[$color]="%{[38;5;${color}m%}"
+    BG[$color]="%{[48;5;${color}m%}"
+done
diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh
index fa2738e..a41f3d8 100644
--- a/oh-my-zsh.sh
+++ b/oh-my-zsh.sh
@@ -17,3 +17,5 @@ then
 else
   /usr/bin/env zsh $ZSH/tools/check_for_upgrade.sh
 fi
+
+unset config_file
\ No newline at end of file
diff --git a/themes/dallas.zsh-theme b/themes/dallas.zsh-theme
new file mode 100644
index 0000000..eef32e9
--- /dev/null
+++ b/themes/dallas.zsh-theme
@@ -0,0 +1,26 @@
+# Personalized!
+
+# Grab the current date (%D) and time (%T) wrapped in {}: {%D %T}
+DALLAS_CURRENT_TIME_="%{$fg[white]%}{%{$fg[yellow]%}%D %T%{$fg[white]%}}%{$reset_color%}"
+# Grab the current version of ruby in use (via RVM): [ruby-1.8.7]
+DALLAS_CURRENT_RUBY_="%{$fg[white]%}[%{$fg[magenta]%}\$(~/.rvm/bin/rvm-prompt i v)%{$fg[white]%}]%{$reset_color%}"
+# Grab the current machine name: muscato
+DALLAS_CURRENT_MACH_="%{$fg[green]%}%m%{$fg[white]%}:%{$reset_color%}"
+# Grab the current filepath, use shortcuts: ~/Desktop
+# Append the current git branch, if in a git repository: ~aw@master
+DALLAS_CURRENT_LOCA_="%{$fg[cyan]%}%~\$(git_prompt_info)%{$reset_color%}"
+# Grab the current username: dallas
+DALLAS_CURRENT_USER_="%{$fg[red]%}%n%{$reset_color%}"
+# Use a % for normal users and a # for privelaged (root) users.
+DALLAS_PROMPT_CHAR_="%{$fg[white]%}%(!.#.%%)%{$reset_color%}"
+# For the git prompt, use a white @ and blue text for the branch name
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%}@%{$fg[blue]%}"
+# Close it all off by resetting the color and styles.
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+# Do nothing if the branch is clean (no changes).
+ZSH_THEME_GIT_PROMPT_CLEAN=""
+# Add 3 cyan ✗s if this branch is diiirrrty! Dirty branch!
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[cyan]%}✗✗✗"
+
+# Put it all together!
+PROMPT="$DALLAS_CURRENT_TIME_$DALLAS_CURRENT_RUBY_$DALLAS_CURRENT_MACH_$DALLAS_CURRENT_LOCA_ $DALLAS_CURRENT_USER_$DALLAS_PROMPT_CHAR_ "
diff --git a/themes/sporty_256.zsh-theme b/themes/sporty_256.zsh-theme
new file mode 100644
index 0000000..db0fc42
--- /dev/null
+++ b/themes/sporty_256.zsh-theme
@@ -0,0 +1,13 @@
+# zsh theme requires 256 color enabled terminal
+# i.e TERM=xterm-256color
+# Preview - http://www.flickr.com/photos/adelcampo/4556482563/sizes/o/
+# based on robbyrussell's shell but louder!
+
+PROMPT='%{$fg_bold[blue]%}$(git_prompt_info) %F{208}%c%f
+%{$fg_bold[white]%}%# %{$reset_color%}'
+RPROMPT='%B%F{208}%n%f%{$fg_bold[white]%}@%F{039}%m%f%{$reset_color%}'
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%F{154}±|%f%F{124}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}%B✘%b%F{154}|%f%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_CLEAN=" %{$fg[green]%}✔%F{154}|"