Monads: compose with a simpler interface