Author: Valentin Dmitrievich Skugarev