Author: Ramzi Valievich Shamsutdinov