TransM monad