完成了8个函数