Функционал выделен в отдельные классы, добавлен таймер