完成基本功能，重构代码