Author: Albert Shiryaev,Andrey Sarychev,Manuel Guerra