game logic seems fine