使用namespace重构了大部分代码。