anchor.diff:      ..append(new LIElement()..text = staticTreeMean)
       ..append(new LIElement()..text = largeTableMean)
       ..append(new LIElement()..text = naiveInfiniteScrollMean)
  -    ..append(new LIElement()..text = totalMean));
  +    ..append(new LIElement()..text = totalMean)
  +    ..append(new LIElement()..text = cpsJsMean)
  +    ..append(new LIElement()..text = cpsSsaMean));
   }
   
  -String showMean(String name, Set<String> benchmarks) {
  +// XXX: rename denom and numer
  +String showMean(String name, Set<String> benchmarks, {int denom: 2, int numer: 1}) {
     var mean = geoMean(
  -      rawRows.where((x) => benchmarks.contains(x[0])).map((x) => x[2] / x[1]));
  +      rawRows.where((x) => benchmarks.contains(x[0])).map((x) => x[denom] / x[numer]));
     return 'Average performance on $name benchmarks: $mean';
   }
   
  
positive.code: 
  List parseToRows(Map json) {
    var jsScores = {};
    var dartScores = {};
    for (var result in json['js']) {
      jsScores[result['benchmark']] = result['score'];
    }
    for (var result in json['dart2js']) {
      dartScores[result['benchmark']] = result['score'];
    }
    var rows = [];
    for (var benchmark in jsScores.keys) {
      rows.add([benchmark, jsScores[benchmark], dartScores[benchmark]]);
    }
    return rows;
  }
  
negative.code: 
  Set<String> largetableBenchmarks = new Set.from([
    'ng2.largetable.interpolation',
    'ng2.largetable.interpolation.plain',
    'ng2.largetable.interpolationAttr',
    'ng2.largetable.interpolationFn',
  ]);
  
  Set<String> naiveInfiniteScrollBenchmarks = new Set.from([
  