DDD and TDD
Implement #54, fixes #54