As a program grows in size it's important to split it into modules, so that you don't need to understand all of it to make a small modification. Often these modules can be supplied by different teams and combined dynamically. In this refactoring essay I split a small program using Presentation-Domain-Data layering. I then refactor the dependencies between these modules to introduce the Service Loc
![Refactoring Module Dependencies](https://cdn-ak-scissors.b.st-hatena.com/image/square/15ca161db2003c2f3153552c394f73927de708bf/height=288;version=1;width=512/https%3A%2F%2Fmartinfowler.com%2Farticles%2Frefactoring-dependencies%2Fref-dep_sl.png)