We use dynamic Dependency Structure Matrices. Rearranging these without requiring recompilation helps us quickly untangle large codebase cycles. We can parse JVM and GraphViz graphs quickly; most languages support conversion of their dependency graph to GraphViz. This allows complex code to be understood in one pass in small incremental steps.