adding support for plugin architecture