Оптимизация

Некоторые повторяющиеся конструкции выведены в отдельные функции