修改了大部分功能