部分细节改动，去冗余。