the dependency objects (```CORE```, ```OWNED```, etc) need to be hashable for dependency tracking, the default hash is based on object ```id```, but i need two instances of ```CORE(dat)``` to have the same hash, i could use the hash of the dat as the hash of the ```Dependency``` object but i also need the hash of ```CORE(dat)``` and ```HALO(dat)``` to differ.