docs: function (request, xhr, callback) {
  
              var model = request.model;
  
              var cb = function (err) {
                  if (callback) {
                      callback(err, model, request.options);
                  }
              };
  
              var self = this;
  
              try { // get location header
                  var location = xhr.getResponseHeader('Location');
  
                  if (location) {
  
                      if (self._parsePayloadOnCreate(request, xhr)) {
                          self._parseModelPayload(xhr, model, request.options);
                      }
  
                      // extract id
                      var id = this.extractIdFromLocation(location, request);
  
                      if (id || id === 0) {
                          model.set(model.idField, id);
                          if (model.hrefField) {
                              model.set(model.hrefField, location);
                          }
                          var schema = model.schema, schemaType;
                          for (var schemaKey in schema) {
                              if (schema.hasOwnProperty(schemaKey)) {
                                  schemaType = schema[schemaKey];
                                  if (schemaType.classof && schemaType.classof(Collection)) {
                                      var contextForChildren = model.getContextForChild(schemaType);
                                      model.set(schemaKey, contextForChildren.createCollection(schemaType, null));
                                  }
  
                              }
                          }
  
                          model.$context.addEntityToCache(model);
  
                          // TODO: ask processor if i should call save again to put content
                          cb(null);
                      } else {
                          cb("Id couldn't be extracted");
                      }
  
                  } else {
                      cb('Location header not found');
                  }
  
              } catch (e) {
                  cb(e || true);
              }
          }