plugin interface refactoring