I assume you do write tests. To test system boundaries, you have to find out whether methods are called. Usually, people reach out for mocks to verify behavior. If you use a lot of mocks, though, the tests can reveal high coupling in your code. Use the feedback of these hard-to-write tests to make your code simpler.