Author: Zhang, Weiquan.