各种重构... ~_~