Author: Menglong.