Author: Nguyen-quang-Nhac.