public CondClassDistribution info_attr(Domain attr_domain) {

    Domain target_domain = insts_by_target.getClassDomain();

    // flog.debug("What is the attributeToSplit? " + attr_domain);

    /* initialize the hashtable */
    CondClassDistribution insts_by_attr = new CondClassDistribution(attr_domain, target_domain);
    insts_by_attr.setTotal(insts_by_target.getSum());

    // flog.debug("Cond distribution for "+ attr_domain + " \n"+ insts_by_attr);

    for (int category = 0; category < target_domain.getCategoryCount(); category++) {
      Object targetCategory = target_domain.getCategory(category);

      for (Instance inst : insts_by_target.getSupportersFor(targetCategory)) {
        Object inst_attr_category = inst.getAttrValue(attr_domain.getFReferenceName());

        Object inst_class = inst.getAttrValue(target_domain.getFReferenceName());

        if (!targetCategory.equals(inst_class)) {
          if (flog.error() != null)
            flog.error()
                .log("How the f**k they are not the same ? " + targetCategory + " " + inst_class);
          System.exit(0);
        }
        insts_by_attr.change(inst_attr_category, targetCategory, inst.getWeight()); // +1
      }
    }

    return insts_by_attr;
  }
  // public static double info_contattr(InstanceList data, Domain targetDomain, QuantitativeDomain
  // splitDomain) {
  public CondClassDistribution info_contattr(Categorizer visitor) {

    List<Instance> data = visitor.getSortedInstances();
    QuantitativeDomain splitDomain = visitor.getSplitDomain();
    Domain targetDomain = insts_by_target.getClassDomain();
    String targetAttr = targetDomain.getFReferenceName();

    CondClassDistribution instances_by_attr = new CondClassDistribution(splitDomain, targetDomain);
    instances_by_attr.setTotal(data.size());

    int index = 0;
    int split_index = 0;
    Object attr_key = splitDomain.getCategory(split_index);
    for (Instance i : data) {

      if (index == splitDomain.getSplit(split_index).getIndex() + 1) {
        attr_key = splitDomain.getCategory(split_index + 1);
        split_index++;
      }
      Object targetKey = i.getAttrValue(targetAttr);
      instances_by_attr.change(attr_key, targetKey, i.getWeight()); // +1

      index++;
    }

    return instances_by_attr;
    //		double sum = calc_info_attr(instances_by_attr);
    //		return sum;

  }