wrote functions for everything except zsh. that is for tomorrow"