more DI and TDD