Author: Huiyuan.