Author: Nguyen-khanh-Toan.