Author: Jin Li etc