entity and component base classes first pass