Thanks for all the answers. After struggling with a lot of different ways, I found it best to create interfaces for everything. This allowed me to freely change the design, and I just broke the assembly into a day (a day, because the project was large, and I need to fix so many links and unit tests + some refactoring).
.
, , , .