overhauled the entity system to allow for any type