尝试各种完善，模块化