添加新代码，有待继续完善