modify by zhangws