manual update by zhf