Переделано с использованием классов