This is the dependency graph I created from this patch:
The data module is found in the middle right, and still a few modules depend on it. These modules, like pdb and libiomd, often have classes extending classes from the data module. These are much harder to make independent.
The patches do a few things, including:
- make Elements use a custom (immutable) IElement
- introduce a new fragment module allowing removal of some last dependencies on extra