modify by zhangyu