started implementation StateMaybe monad