ticket:13 tests
ticket:13 implementation