add monad discussion and clean up code to match more beautiful monad names