Seperation of Concepts
Inversion Of Control
They are all trying to tell you one common thing.
Please Make It Simple and Organized
No matter what size is your project and how many teams/developers involved, the complexity if the code has tendency to be more complex. And after awhile it turn in to a YET another OLD piece of CRAP.
Refactoring is the only way to avoid this fate. Here is some tools and practices that would help you