ticket:10 tests
ticket:10 implementation