Author: Bai, Weiliang.