MonadState protocol