Author: Yen-liang.  c Liu