code: func (ds *datastore) PutObject(kvObject KVObject) error {
  	if ds.sequential {
  		ds.Lock()
  		defer ds.Unlock()
  	}
  
  	if kvObject == nil {
  		return types.BadRequestErrorf("invalid KV Object : nil")
  	}
  
  	if kvObject.Skip() {
  		goto add_cache
  	}
  
  	if err := ds.putObjectWithKey(kvObject, kvObject.Key()...); err != nil {
  		return err
  	}
  
  add_cache:
  	if ds.cache != nil {
  		// If persistent store is skipped, sequencing needs to
  		// happen in cache.
  		return ds.cache.add(kvObject, kvObject.Skip())
  	}
  
  	return nil
  }
docs: // PutObject adds a new Record based on an object into the datastore