better use of generics in pluginability Infrastructure