introduced listeners
moved all logic to game listeners