mostly implemented PluginManager class