完成大部分代码量，还需要实现IP接口