各种完善~代码精简了很多。。。