[x] Component - structs with data and minimal logic (all logic is in systems), but logic like serialization may be exist in components.
[x] Generic ComponentPool
[x] Generic ComponentSystem
[x] For the case when unique Component need extra logic, that isn't covered in the ComponentSystem, then there is a BehaviorsSystem. As I've decided to avoid scripting in my engine, Behavior's system is useful for the case when scripts would be used.