code: def load(self, callback=None, errback=None, reload=False):
          
          if not reload and self.data:
              raise ScopegroupException('Scope Group already loaded')
  
          def success(result, *args):
              self.data = result
              self.id = result['id']
              self.dhcp4 = result['dhcp4']
              self.dhcp6 = result['dhcp6']
              self.name = result['name']
              self.service_group_id = result['service_group_id']
              if callback:
                  return callback(self)
              else:
                  return self
  
          if self.id is None:
              if self.dhcp4 is None or self.dhcp6 is None or self.name is None or self.service_group_id is None:
                  raise AddressException('Must at least specify an id or name and service_group_id')
              else:
                  try:
                      self.id = [scope_group for scope_group in self._rest.list() if scope_group['name'] == self.name and
                                 scope_group['service_group_id'] == self.service_group_id][0]['id']
                  except IndexError:
                      raise AddressException("Could not find Scope Group by name and service_group_id. It may not exist")
  
          return self._rest.retrieve(self.id, callback=success,
                                     errback=errback)
docs: Load Scopegroup data from the API.