ticket:3
unit tests
ticket:3
implementation finished