implement the plugin system
integration with plugin system