docs: function _ann_dispatch(entity, entity_type, entity_op, model_id,
  			   ann_key, ann_val){
  
  	// We start by getting ready to check on the special case of
  	// "evidence" psuedo-annotations.
  	var is_ev_p = false;
  	if( ann_key == 'evidence' ){
  	    is_ev_p = true;
  	}
  
  	// Prepare args for ye olde dispatch.
  	var args = {};
  	if( entity_type == 'individual' ){
  	    args['id'] = entity_id;
  	}else if( entity_type == 'fact' ){
  	    args['source'] = entity.source();
  	    args['target'] = entity.target();
  	    args['relation'] = entity.relation();
  	}else{
  	    // Model.
  	    // TODO: would like a debug msg here.
  	}
  
  	// All evidence psuedo-annotations are handled one way, the
  	// rest of the annotations another way.
  	if( is_ev_p ){ // in the case of evidence...
  
  	    if( entity_op == 'add' ){
  		// Ensure that the argument is of the right type when
  		// attempting to add evidence.
  		if( ! ann_val['evidence_id'] || ! ann_val['source_ids'] ){
  		    throw new Error('bad evidence ann args');
  		}
  				
  		// Evidence addition is only defined for individuals
  		// and facts.
  		if( entity_type == 'individual' ){
  		    manager.add_individual_evidence(model_id, args['id'],
  						    ann_val['evidence_id'],
  						    ann_val['source_ids']);
  		}else if( entity_type == 'fact' &&  entity_op == 'add' ){
  		    manager.add_fact_evidence(model_id,
  					      args['source'],
  					      args['target'],
  					      args['relation'],
  					      ann_val['evidence_id'],
  					      ann_val['source_ids']);
  		}else{
  		    throw new Error('only fact and individual for evidence add');
  		}
  
  	    }else{
  		// Removing evidence is all the same (ann_val as a
  		// string referenceing the evidence individual to be
  		// removed).
  		manager.remove_evidence(model_id, ann_val);
  	    }
  	    
  	}else{
  
  	    // All add/remove operations run with the same arguments.
  	    if( entity_type == 'individual' ){
  		if( entity_op == 'remove' ){
  		    manager.remove_individual_annotation(
  			model_id, args['id'], ann_key, ann_val);
  		}else{
  		    manager.add_individual_annotation(
  			model_id, args['id'], ann_key, ann_val);
  		}
  	    }else if( entity_type == 'fact' ){
  		if( entity_op == 'remove' ){
  		    manager.remove_fact_annotation(
  			model_id,
  			args['source'], args['target'], args['relation'],
  			ann_key, ann_val);
  		}else{
  		    manager.add_fact_annotation(
  			model_id,
  			args['source'], args['target'], args['relation'],
  			ann_key, ann_val);
  		}
  	    }else{
  		// Models are a wee bit different, and more simple.
  		if( entity_op == 'remove' ){
  		    manager.remove_model_annotation(model_id, ann_key, ann_val);
  		}else{
  		    manager.add_model_annotation(model_id, ann_key, ann_val);
  		}
  	    }
  	}
      }