code: public void add(final Metric metric) {
  		Preconditions.checkNotNull(metric);
  		
  		// get the aggregate for this minute
  		
  		MetricAggregate aggregate = getAggregate(metric.getIdentity());
  		
  		// add the current metric into the aggregate
  		
  		switch (metric.getIdentity().getType()) {
  			case COUNTER: 
  			case TIMER: 
  			case AVERAGE:
  				aggregate.setCount(aggregate.getCount() + 1);
  				aggregate.setValue(aggregate.getValue() + metric.getValue());
  			    break;
  			case GAUGE:
  				aggregate.setCount(1);
  				if (metric.isIncrement()) {
  					aggregate.setValue(aggregate.getValue() + metric.getValue());
  				} else {
  					aggregate.setValue(metric.getValue());
  				}
  			    break;	
  			default:
  				LOGGER.info("Unable to aggregate {} metric type", metric.getIdentity().getType());
  				break;
  		}
  	}
docs: Aggregates a single metric into the collection of aggregates
  @param metric The metric