Author: Nguyen-Nghe.