Index: trunk/CrossPare/src/de/ugoe/cs/cpdp/ExperimentConfiguration.java
===================================================================
--- trunk/CrossPare/src/de/ugoe/cs/cpdp/ExperimentConfiguration.java	(revision 64)
+++ trunk/CrossPare/src/de/ugoe/cs/cpdp/ExperimentConfiguration.java	(revision 65)
@@ -42,4 +42,5 @@
 import de.ugoe.cs.cpdp.training.ISetWiseTestdataAwareTrainingStrategy;
 import de.ugoe.cs.cpdp.training.ISetWiseTrainingStrategy;
+import de.ugoe.cs.cpdp.training.ITestAwareTrainingStrategy;
 import de.ugoe.cs.cpdp.training.ITrainingStrategy;
 import de.ugoe.cs.cpdp.versions.IVersionFilter;
@@ -139,4 +140,9 @@
      */
     private List<ITrainingStrategy> trainers;
+    
+    /**
+     * normal trainers, i.e., trainers that require the selected training data in a single data set
+     */
+    private List<ITestAwareTrainingStrategy> testAwareTrainers;
 
     /**
@@ -376,4 +382,13 @@
         return trainers;
     }
+    
+    /**
+     * returns the test aware training algorithms
+     * 
+     * @return normal training algorithms
+     */
+    public List<ITestAwareTrainingStrategy> getTestAwareTrainers() {
+        return testAwareTrainers;
+    }
 
     /**
@@ -524,4 +539,12 @@
                 trainer.setParameter(attributes.getValue("param"));
                 trainers.add(trainer);
+            }
+            else if (qName.equals("testawaretrainer")) {
+                final ITestAwareTrainingStrategy trainer =
+                    (ITestAwareTrainingStrategy) Class.forName("de.ugoe.cs.cpdp.training." +
+                                                          attributes.getValue("name"))
+                        .newInstance();
+                trainer.setParameter(attributes.getValue("param"));
+                testAwareTrainers.add(trainer);
             }
             else if (qName.equals("eval")) {
Index: trunk/CrossPare/src/de/ugoe/cs/cpdp/execution/CrossProjectExperiment.java
===================================================================
--- trunk/CrossPare/src/de/ugoe/cs/cpdp/execution/CrossProjectExperiment.java	(revision 64)
+++ trunk/CrossPare/src/de/ugoe/cs/cpdp/execution/CrossProjectExperiment.java	(revision 65)
@@ -33,4 +33,5 @@
 import de.ugoe.cs.cpdp.training.ISetWiseTestdataAwareTrainingStrategy;
 import de.ugoe.cs.cpdp.training.ISetWiseTrainingStrategy;
+import de.ugoe.cs.cpdp.training.ITestAwareTrainingStrategy;
 import de.ugoe.cs.cpdp.training.ITrainer;
 import de.ugoe.cs.cpdp.training.ITrainingStrategy;
@@ -206,4 +207,11 @@
                     trainer.apply(traindata);
                 }
+                for (ITestAwareTrainingStrategy trainer : config.getTestAwareTrainers()) {
+                    Console.traceln(Level.FINE, String
+                        .format("[%s] [%02d/%02d] %s: applying trainer %s",
+                                config.getExperimentName(), versionCount, testVersionCount,
+                                testVersion.getVersion(), trainer.getName()));
+                    trainer.apply(testdata, traindata);
+                }
                 File resultsDir = new File(config.getResultsPath());
                 if (!resultsDir.exists()) {
@@ -223,4 +231,7 @@
                     }
                     for (ITrainingStrategy trainer : config.getTrainers()) {
+                        allTrainers.add(trainer);
+                    }
+                    for (ITestAwareTrainingStrategy trainer : config.getTestAwareTrainers()) {
                         allTrainers.add(trainer);
                     }
Index: trunk/CrossPare/src/de/ugoe/cs/cpdp/execution/RelaxedCrossProjectExperiment.java
===================================================================
--- trunk/CrossPare/src/de/ugoe/cs/cpdp/execution/RelaxedCrossProjectExperiment.java	(revision 64)
+++ trunk/CrossPare/src/de/ugoe/cs/cpdp/execution/RelaxedCrossProjectExperiment.java	(revision 65)
@@ -33,4 +33,5 @@
 import de.ugoe.cs.cpdp.training.ISetWiseTestdataAwareTrainingStrategy;
 import de.ugoe.cs.cpdp.training.ISetWiseTrainingStrategy;
+import de.ugoe.cs.cpdp.training.ITestAwareTrainingStrategy;
 import de.ugoe.cs.cpdp.training.ITrainer;
 import de.ugoe.cs.cpdp.training.ITrainingStrategy;
@@ -211,4 +212,11 @@
                     trainer.apply(traindata);
                 }
+                for (ITestAwareTrainingStrategy trainer : config.getTestAwareTrainers()) {
+                    Console.traceln(Level.FINE, String
+                        .format("[%s] [%02d/%02d] %s: applying trainer %s",
+                                config.getExperimentName(), versionCount, testVersionCount,
+                                testVersion.getVersion(), trainer.getName()));
+                    trainer.apply(testdata, traindata);
+                }
                 File resultsDir = new File(config.getResultsPath());
                 if (!resultsDir.exists()) {
@@ -224,5 +232,11 @@
                         allTrainers.add(setwiseTrainer);
                     }
+                    for (ISetWiseTestdataAwareTrainingStrategy setwiseTrainer : config.getSetWiseTestdataAwareTrainers()) {
+                        allTrainers.add(setwiseTrainer);
+                    }
                     for (ITrainingStrategy trainer : config.getTrainers()) {
+                        allTrainers.add(trainer);
+                    }
+                    for (ITestAwareTrainingStrategy trainer : config.getTestAwareTrainers()) {
                         allTrainers.add(trainer);
                     }
Index: trunk/CrossPare/src/de/ugoe/cs/cpdp/training/ITestAwareTrainingStrategy.java
===================================================================
--- trunk/CrossPare/src/de/ugoe/cs/cpdp/training/ITestAwareTrainingStrategy.java	(revision 65)
+++ trunk/CrossPare/src/de/ugoe/cs/cpdp/training/ITestAwareTrainingStrategy.java	(revision 65)
@@ -0,0 +1,10 @@
+package de.ugoe.cs.cpdp.training;
+
+import weka.core.Instances;
+
+public interface ITestAwareTrainingStrategy extends ITrainer {
+    
+    void apply(Instances testdata, Instances traindata);
+
+    String getName();
+}
