整合了一部分代码