evalStateT m s = liftM fst (runStateT m s)
execStateT m s = liftM snd (runStateT m s)
runStateT (mapStateT f m) = f . runStateT m
withStateT f m = modify f >> m