重构，不完善版本