environment is a monad