Почти реализовано, осталось отладить