рабочий вариант, добавлены исключения