public boolean setInputFormat(Instances instanceInfo) throws Exception {

    super.setInputFormat(instanceInfo);

    m_DeltaCols.setUpper(getInputFormat().numAttributes() - 1);
    int selectedCount = 0;
    for (int i = getInputFormat().numAttributes() - 1; i >= 0; i--) {
      if (m_DeltaCols.isInRange(i)) {
        selectedCount++;
        if (!getInputFormat().attribute(i).isNumeric()) {
          throw new UnsupportedAttributeTypeException("Selected attributes must be all numeric");
        }
      }
    }
    if (selectedCount == 1) {
      throw new Exception("Cannot select only one attribute.");
    }

    // Create the output buffer
    FastVector newAtts = new FastVector();
    boolean inRange = false;
    String foName = null;
    int clsIndex = -1;
    for(int i = 0; i < instanceInfo.numAttributes(); i++) {
      if (m_DeltaCols.isInRange(i) && (i != instanceInfo.classIndex())) {
	if (inRange) {
	  Attribute newAttrib = new Attribute(foName);
          newAtts.addElement(newAttrib);
	}
        foName = instanceInfo.attribute(i).name();
        foName = "'FO " + foName.replace('\'', ' ').trim() + '\'';
        inRange = true;
      } else {
	newAtts.addElement((Attribute)instanceInfo.attribute(i).copy());
	if ((i == instanceInfo.classIndex()))
	  clsIndex = newAtts.size() - 1;
      }      
    }
    Instances data = new Instances(instanceInfo.relationName(), newAtts, 0);
    data.setClassIndex(clsIndex);
    setOutputFormat(data);
    return true;
  }