def __call__(self, call):
         class ConcreteHook(Hook):
-            def __call__(self, dispatcher, instance):
-                return call(self=dispatcher, instance=instance)
+            def __call__(self, dispatcher, instance, *args, **kwargs):
+                return call(self=dispatcher, instance=instance,
+                    *args, **kwargs)
 
         return ConcreteHook(*tuple(self))
 
 
 
 class Dispatcher(metaclass=DispatcherMeta):
-    def __call__(self, instance):
+    def __call__(self, instance, *args, **kwargs):
         for typeid in instance.__class__.__mro__:
             hook = self.__class__.dispatch(typeid=typeid)
             if hook is not None:
                 break
         if hook is None:
             hook = self.__class__.dispatch()
-        return hook(dispatcher=self, instance=instance)
+        return hook(dispatcher=self, instance=instance, *args, **kwargs)
 
     @Hook(object)
-    def dispatch_object(self, instance):
+    def dispatch_object(self, instance, *args, **kwargs):
         raise NotImplementedError()