Implement a component collection.
Add Initialize() method to the entity system.
Rename component "collection" to "system" and make it responsible for creating and managing component pools.
Rename component system method CreatePool() to Declare() and handle multiple calls for the same component types.
Fix compile error.
Don't categorize systems.
Replace receivers/dispatchers with an event system for game events.
Reduce global state accessing in system classes.