update by linwu