Сделан рефакторинг кода + добавлены некоторые тесты