Author: Qigang Chen.