also make PluginId typesafe and add some initial discovery code