refactoring of the plugin interface