Author: Rinat M. Nugayev