use kleisli composition of monads