update by zj three