def METHOD_NAME(self, name, fn, *args, **kwargs):
    try:
        tup = (fn, args, kwargs)
        if tup not in self.cb[name]:
            self.cb[name].append(tup)
    except KeyError:
        raise CallbackError("No callback category of '%s'" % (
            name))