add a new plugin system