update by ling