broke away error monad and reader monad into their own files