split out collision detection logic from main game logic, added message bus