add eval and monad