ticket: 8 Реализация + тесты.