# Classes [](/../../#glossary)
#### Entities
[How to create an entity](Manual-CreatingEntities.md)
Entities are containers with **ID** and **Generation**.
**ID** - unique entity identifier in the world.
**Generation** - unique entity generation identifier, increase when entity creates from the pool.
**GetVersion()** - method to return unique version of the entity, increase when entity changed.
#### Components (```IComponent```, ```ICopyable<>```, etc.)
[How to create a component](Manual-CreatingComponents.md)
Components are storing data. In ME.ECS there are 2 component types: IStructCopyable<> and IStructComponent.
IStructCopyable<> could be stored only once. it could store any types (including managed data) and must implement CopyFrom and OnRecycle methods.
IStructComponent could store just simple types or StackArray.
#### Systems (```ISystem```)
[How to create a system](Manual-CreatingSystems.md)
Systems do visual update at the end of the frame and on the ending of every tick.
#### Features (```Feature```)
[How to create a feature](Manual-CreatingFeature.md)
Features are introduced for grouping systems and modules into one block. Features are ScriptableObjects and could be ordered in Initializer on your scene
#### Modules (```IModule```)
[How to create a module](Manual-CreatingModules.md)
Modules do visual update on the beginning of the frame and on the beginning of every tick. Here you can get controller input and create some markers.
#### Markers (```IMarker```)
[How to create a marker](Manual-CreatingMarkers.md)
Markers needed to implement Controller/UI events or something that doesn't exist in game state.
## Interfaces
| Type | Description |
| ----- | ----- |
| ISystem | Default System behaviour. |
| IModule | Default Module behaviour. |
| IAdvanceTick | Use this interface in System or Module to get an update every tick. |
| IAdvanceTickPre | Use this interface in System to get an update every tick before IAdvanceTick. |
| IAdvanceTickPost | Use this interface in System to get an update every tick after IAdvanceTick. |
| ISystemFilter | Use this interface in System to get an iteration through the filter. |
| IAdvanceTickStep | Use this interface in System to get an update every X tick. |
| IUpdate | Use this interface in System or Module to get an update every frame in World::Update. |
| IUpdateLate | Use this interface in System to get an update every frame after IUpdate in World::Update. |
| IUpdatePost | Use this interface in System to get an update every frame in World::LateUpdate. |
## Flow
[](/../../#glossary)