entity hierarchy
reimplementing Gravity to be more generic