started working on monads: TODO