modified by zhao jie