重构了一些代码