code: def register(self, name, *slots):
          
          # setdefault initializes the object even if it exists. This is more efficient
          if name not in self:
              self[name] = Signal()
  
          for slot in slots:
              self[name].connect(slot)
docs: Registers a given signal
          :param name: the signal to register