Author: Hu, Guoliang.