void convertFacets(BrowseFacet[] facets) {
   int i = 0;
   for (BrowseFacet facet : facets) {
     int hit = facet.getHitCount();
     String val = facet.getValue();
     RangeFacet rangeFacet = new RangeFacet();
     rangeFacet.setValues(val, val);
     rangeFacet.setHitCount(hit);
     facets[i++] = rangeFacet;
   }
 }
  // this is really crappy, need to fix it
  private BrowseFacet[] foldChoices(BrowseFacet[] choices, int max) {
    if (max == 0 || choices.length <= max) return choices;
    ArrayList<RangeFacet> list = new ArrayList<RangeFacet>();

    for (int i = 0; i < choices.length; i += 2) {
      RangeFacet rangeChoice = new RangeFacet();
      if ((i + 1) < choices.length) {
        if (choices instanceof RangeFacet[]) {
          RangeFacet[] rChoices = (RangeFacet[]) choices;
          String val1 = rChoices[i]._lower;
          String val2 = rChoices[i + 1]._upper;
          rangeChoice.setValues(val1, val2);
          rangeChoice.setHitCount(choices[i].getHitCount() + choices[i + 1].getHitCount());
        } else {
          rangeChoice.setValues(choices[i].getValue(), choices[i + 1].getValue());
          rangeChoice.setHitCount(choices[i].getHitCount() + choices[i + 1].getHitCount());
        }

      } else {
        if (choices instanceof RangeFacet[]) {
          RangeFacet[] rChoices = (RangeFacet[]) choices;
          rangeChoice.setValues(rChoices[i]._lower, rChoices[i]._upper);
        } else {
          rangeChoice.setValues(choices[i].getValue(), choices[i].getValue());
        }
        rangeChoice.setHitCount(choices[i].getHitCount());
      }
      list.add(rangeChoice);
    }

    RangeFacet[] result = new RangeFacet[list.size()];
    result = (RangeFacet[]) list.toArray(result);
    return foldChoices(result, max);
  }