Скопирован пример из лекций (часть 2, стр 108 - 111)