Refactor to use (mutated) observer pattern for game objects