add state monad