def METHOD_NAME(self, name, args, kwargs):
    result = False
    for tup in self.cb[name]:
        method = tup[0]
        # Extend callback args and keyword args by saved parameters
        cb_args = [self]
        cb_args.extend(args)
        cb_args.extend(tup[1])
        cb_kwargs = kwargs.copy()
        cb_kwargs.update(tup[2])
        try:
            # print("calling %s(%s, %s)" % (method, cb_args, cb_kwargs))
            res = method(*cb_args, **cb_kwargs)
            if res:
                result = True
        except Exception as e:
            # Catch exception because we need to iterate to the other
            # callbacks
            try:
                (type, value, tb) = sys.exc_info()
                tb_str = "\n".join(traceback.format_tb(tb))
            except Exception:
                tb_str = "Traceback information unavailable."
            if hasattr(self, 'logger'):
                self.logger.error("Error making callback '%s': %s" % (
                    name, str(e)))
                self.logger.error("Traceback:\n%s" % (tb_str))
            else:
                print("Error making callback '%s': %s" % (
                    name, str(e)))
                print("Traceback:\n%s" % (tb_str))
    return result