支持插件，并调整代码