code: def _populate(self, json):
          if not json:
              return
          self._set('_raw_json', json)
          for key in json:
              if key in (k for k in type(self).properties.keys()
                      if not type(self).properties[k].identifier):
                  if type(self).properties[key].relationship \
                      and not json[key] is None:
                      if isinstance(json[key], list):
                          objs = []
                          for d in json[key]:
                              if not 'id' in d:
                                  continue
                              new_class = type(self).properties[key].relationship
                              obj = new_class.make_instance(d['id'],
                                      getattr(self,'_client'))
                              if obj:
                                  obj._populate(d)
                              objs.append(obj)
                          self._set(key, objs)
                      else:
                          if isinstance(json[key], dict):
                              related_id = json[key]['id']
                          else:
                              related_id = json[key]
                          new_class = type(self).properties[key].relationship
                          obj = new_class.make_instance(related_id, getattr(self,'_client'))
                          if obj and isinstance(json[key], dict):
                              obj._populate(json[key])
                          self._set(key, obj)
                  elif  type(self).properties[key].slug_relationship \
                          and not json[key] is None:
                      self._set(key, type(self).properties[key].slug_relationship(self._client, json[key]))
                  elif type(json[key]) is dict:
                      self._set(key, MappedObject(**json[key]))
                  elif type(json[key]) is list:
                      mapping = MappedObject(_list=json[key])
                      self._set(key, mapping._list)
                  elif type(self).properties[key].is_datetime:
                      try:
                          t = time.strptime(json[key], DATE_FORMAT)
                          self._set(key, datetime.fromtimestamp(time.mktime(t)))
                      except:
                          self._set(key, json[key])
                  else:
                      self._set(key, json[key])
          self._set('_populated', True)
          self._set('_last_updated', datetime.now())