Author: Vincent Shen and others