changed design to TDD