Исправлены замечания, добавлена реализация