Работающая реализация (не хватает Ко)