game logic is monad-agnostic, added configurable game dimensions