code: function fetch_object(data, config) {
  				var prop, fields;
  
  				if(is_object(config)) {
  					prop = config.prop;
  					fields = config.fields;
  				} else if(is_string(config)) {
  					prop = config;
  				}
  
  				if(!is_string(prop)) {
  					return error('property is not valid: ' + prop);
  				}
  
  				fields = fields ? fields : [{'query':'*'}];
  
  				if(!is_array(fields)) {
  					return error('fields are not valid: ' + fields);
  				}
  
  				var exp_start = prop.indexOf('{');
  				var exp_end = prop.length-1;
  				if( (exp_start >= 0) && (prop[exp_end] === '}') ) {
  					return fetch_objects_by_expression(data, prop.substr(0, exp_start), fields, prop.substr(exp_start+1, exp_end-(exp_start+1)) );
  				}
  
  				var uuid = get_property(data, prop);
  
  				if(is_array(uuid)) {
  					// FIXME: This could be implemented with one query
  					return uuid.forEach(fetch_object_by_uuid.bind(undefined, data, prop, fields));
  				}
  
  				return fetch_object_by_uuid(data, prop, fields, uuid);
  			}
docs: /*