refactored to StateT so its a full game