Author: Shen, Guoliang.