framework for plugin