改造接近完成，除了TODO注释里面的内容