实现自己的模块