Extract game logic event firing and handling to separate classes