Rework how entities and components are handled