-# Path to your oh-my-zsh configuration.
-ZSH=$HOME/.zsh
+# Path to config files
+ZSH=$XDG_CONFIG_HOME/zsh
+[[ ! -d "$ZSH" ]] && echo "Missing config dir: '$ZSH'" && return
 
 # Load all of the config files in $ZSH/lib that end in .zsh
 for config_file ($ZSH/lib/*.zsh); do
 [[ -d ~/.zsh/functions ]] && fpath=(~/.zsh/functions $fpath)
 autoload -U ${fpath[1]}/*(:t)   # loads all functions in the first element of fpath
 
-autoload -U compinit; compinit
+# initialise completion
+[[ -d "$XDG_CACHE_HOME/zsh" ]] || mkdir -p "$XDG_CACHE_HOME/zsh"
+autoload -U compinit; compinit -d "$XDG_CACHE_HOME/zsh/zcompdump"
 
 # miscelaneous options
 setopt extendedglob
 done
 
 # vim stuff
+[[ -d "$XDG_CACHE_HOME/vim" ]] || mkdir -p "$XDG_CACHE_HOME/vim"
+export VIMINIT='let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" | source $MYVIMRC'
 export EDITOR=vim
 export VISUAL=vim
+
+# default browser
 export BROWSER=dwb
 
 # set up a few named directories