Author: Valeriy Skorokhod