разбито на отдельные функции