Упрощён код, изменена структура функций