Port twisted/python/modules.py to use implementer