code: function annotation(kv_set){
      this._id = bbop.uuid();
      
      this._properties = {};
      
      if( kv_set && bbop.what_is(kv_set) === 'object' ){
  	
  	// Attempt to convert
  	if( kv_set['key'] && kv_set['value'] ){
  	    // var key = kv_set['key'];
  	    // var val = kv_set['value'];
  	    // var adj_set = {};
  	    // adj_set[key] = val;
  	    // Silently pass in value-type if there.
  	    this._properties = bbop.clone(kv_set);
  	}else{
  	    // TODO: Replace this at some point with the logger.
  	    console.log('bad annotation k/v set: ', kv_set);
  	}
      }
  }
docs: / / New stuff: annotations. / 
  Edit annotations.
  Everything can take annotations.
  
  This structure of the raw key-value set has been updated in the
  wire protocol. It now looks like:
  
  : {"key": "contributor", "value": "GOC:kltm" }
  
  or:
  
  : {"key": "contributor", "value": "GOC:kltm", "value-type":"foo"}
  
  @constructor
  @param {Object} [kv_set] - optional a set of keys and values; a simple object
  @returns {this} new instance