Author: Liang, Guanghan.