having fun with monads