Converting everything from State GameState _ to (Monad m) => StateT GameState m _ made everything SO much easier to deal with in the main game loop