Author: Daojian.