重构一些代码结构