begining of entity component system