提取了重复的函数