re-architect the game with custom system