Author: Yingcheng Huang
Dates: active 1607