Переделал с учётом всех замечаний