docs: private ParsedPreview read(Preview p) {
  
  		// find measure columns
  		String[] measureNames = p.getMeasurementNames();
  		int numMeasures = p.getMeasurementNameCount();
  
  		int processFrequencyColumn = -1;
  		int accuracyColumn = -1;
  		int kappaColumn = -1;
  		int kappaTempColumn = -1;
  		int ramColumn = -1;
  		int timeColumn = -1;
  		int memoryColumn = -1;
  		int budgetColumn = -1;
  
  		for (int i = 0; i < numMeasures; i++) {
  			switch (measureNames[i]) {
  			case "learning evaluation instances":
  				processFrequencyColumn = i;
  				break;
  			case "classifications correct (percent)":
  			case "[avg] classifications correct (percent)":
  			case "[std] classifications correct (percent)":
  				accuracyColumn = i; 
  				break;
  			case "Kappa Statistic (percent)":
  			case "[avg] Kappa Statistic (percent)":
  			case "[std] Kappa Statistic (percent)":
  				kappaColumn = i;
  				break;
  			case "Kappa Temporal Statistic (percent)":
  			case "[avg] Kappa Temporal Statistic (percent)":
  			case "[std] Kappa Temporal Statistic (percent)":
  				kappaTempColumn = i;
  				break;
  			case "model cost (RAM-Hours)":
  			case "[std] model cost (RAM-Hours)":
  				ramColumn = i;
  				break;
  			case "evaluation time (cpu seconds)":
  			case "total train time":
  			case "[std] evaluation time (cpu seconds)":
  				timeColumn = i;
  				break;
  			case "model serialized size (bytes)":
  			case "[std] model serialized size (bytes)":
  				memoryColumn = i;
  				break;
  			case "Rel Number of Label Acquisitions":
  			case "[std] Rel Number of Label Acquisitions":
  				budgetColumn = i;
  				break;
  			default:
  				break;
  			}
  		}
  
  		List<double[]> data = p.getData();
  
  		MeasureCollection m = new ALMeasureCollection();
  
  		// set entries
  		// TODO: obviously this should be changed into a dict
  		for (double[] entry: data) {
  			m.addValue(0, entry[accuracyColumn]);
  			m.addValue(1, entry[kappaColumn]);
  			m.addValue(2, entry[kappaTempColumn]);
  			m.addValue(3, Math.abs(entry[ramColumn]));
  			m.addValue(4, entry[timeColumn]);
  			m.addValue(5, entry[memoryColumn] / (1024 * 1024));
  			m.addValue(6, entry[budgetColumn]);
      	}
  
  		// determine process frequency
  		int processFrequency = (int) data.get(0)[processFrequencyColumn];
  
  		ParsedPreview pp = new ParsedPreview();
  		pp.addMeasureCollection(m);
  		pp.addProcessFrequency(processFrequency);
  		return pp;
  	}