add by weilin(3)