Author: Bai, Guoliang.