add State monad