重构完成，未测试