# IT:AD:Patterns:Reference Downward Only #
* [[../|(UP)]]
{{indexmenu>.#2|nsort tsort}}
Software Circular Dependencies between modules are problematic due to the tight coupling of the mutually dependent modules which renders the separate re-use and testability of a single module impossible.
Circular Dependencies may also cause memory leaks by preventing certain very primitive automatic garbage collectors (those that use reference counting) from deallocating unused objects.
## Recipe ##
After applying the recommendated [[IT/AD/Patterns/Minimal Dependency Cardinality/]] pattern -- to minimize circular dependencies -- the same guidelines apply to [[IT//AD/Development/Patterns/DDD/]] based applications as older architecture patterns:
Assembllies must reference Assemblies in the same or lower layers -- never higher layers.
## Resources ##
* [http://en.wikipedia.org/wiki/Circular_dependency](http://en.wikipedia.org/wiki/Circular_dependency)