Changed to TDD interface. Added composite pattern and tests