Author: Nguyen-quoc-Dinh.