稍微调整了一下函数的顺序