I've started browsing the ZPatterns code, and here are the questions that came up for me while reading PlugsIns.py... Is zope-dev a good place for this? Would somewhere in the ZPatterns wiki be better? The PlugInBase.manage_afterAdd() and manage_beforeDelete() methods dynamically checks if their container has the _addPlugIn() and _removePlugIn() methods before calling them. Could this code be simplified by requiring containers support an add/remove PlugIn interface, with a default do-nothing implementation? The PlugInContainer._addPlugIn() and _removePlugIn() will register a plugin with multiple groups. However _findGroupFor() appears to assume that a plugin is associated with one plugin group. What would be an example of a plugin that registered itself with multiple plugin groups? The PlugInContainer directly accesses the __plugin_kind__ attribute of a plugin. Could we have a plugin.kind() method instead? PlugIns.py patches the Zope ProductContext class to add the _registerPlugInClass method. Could we instead update the Zope implementation to provide a _registerPlugInClass method, that called the ZPatterns product if it was installed?