Index: /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/matrix/ObjectDistanceSubstitionMatrix.java
===================================================================
--- /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/matrix/ObjectDistanceSubstitionMatrix.java	(revision 1686)
+++ /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/matrix/ObjectDistanceSubstitionMatrix.java	(revision 1687)
@@ -49,4 +49,6 @@
 		int index2=-1;
 		float distance=0;
+		
+		//TODO: Nicht ueber Symbols sondern ueber values, wenn Eventtask -> getInstances()->get(0)
 		for (Iterator<ITaskInstance> it = uniqueTasks.getSymbols().iterator(); it
 				.hasNext();) {
@@ -156,10 +158,11 @@
 		} 
 		else {
-			//System.out.println("Firsttask: " +taskId1);
-			//System.out.println("Secondtask: " + taskId2);
-			int first = idmapping.get(taskId1);
-			int second = idmapping.get(taskId2);
-			//System.out.println("First: " + first + " Second: " + second);
-			//System.out.println("Matrix: " + matrix.get(first, second));
+			System.out.println("Firsttask: " +taskId1);
+			System.out.println("Secondtask: " + taskId2);
+			System.out.println(idmapping);
+			Integer first = idmapping.get(taskId1);
+			Integer second = idmapping.get(taskId2);
+			System.out.println("First: " + first + " Second: " + second);
+			System.out.println("Matrix: " + matrix.get(first, second));
 			return matrix.get(first,second);	
 		}
Index: /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java
===================================================================
--- /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java	(revision 1686)
+++ /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java	(revision 1687)
@@ -148,10 +148,10 @@
 	public RuleApplicationResult apply(List<IUserSession> sessions) {
 		RuleApplicationData appData = new RuleApplicationData(sessions);
-
+		harmonizeEventTaskInstancesModel(appData);
 		
 		do {
 			iteration++;
 			appData.detectedAndReplacedTasks = false;
-			harmonizeEventTaskInstancesModel(appData);
+			
 			appData.getStopWatch().start("whole loop"); 
 			detectAndReplaceIterations(appData);
@@ -363,5 +363,5 @@
 								.createNewTaskInstance(iteration);
 						iterationInstances.get(iteration)
-								.add(iterationInstance);
+								.add(iterationInstance);//TODO:: Don't create TaskInstances here, use a set of tasks instead
 						taskBuilder.addTaskInstance(session, index,
 								iterationInstance);
@@ -379,9 +379,4 @@
 			}
 		}
-
-		for (Map.Entry<IIteration, List<IIterationInstance>> entry : iterationInstances
-				.entrySet()) {
-			harmonizeIterationInstancesModel(entry.getKey(), entry.getValue());
-		}
 	}
 
@@ -412,4 +407,5 @@
 				IOptional optional = taskFactory.createNewOptional();
 				appData.uniqueTasks.addSymbol(
+						//TODO:: Don't create TaskInstances here, use a set of tasks instead
 						taskFactory.createNewTaskInstance(optional), optional);
 				appData.number2task.put(optional.getId(), optional);
@@ -422,4 +418,5 @@
 			else if (first[i] != -1 && second[i] == -1) {
 				IOptional optional = taskFactory.createNewOptional();
+				//TODO:: Don't create TaskInstances here, use a set of tasks instead
 				appData.uniqueTasks.addSymbol(
 						taskFactory.createNewTaskInstance(optional), optional);
@@ -434,4 +431,5 @@
 				//System.out.println("First: " + first[i] + " Second: " + second[i]);
 				ISelection selection = taskFactory.createNewSelection();
+				//TODO:: Don't create TaskInstances here, use a set of tasks instead
 				ISelectionInstance temp = taskFactory.createNewTaskInstance(selection);
 				appData.uniqueTasks
@@ -460,69 +458,6 @@
 	}
 
-	/**
-	 * <p>
-	 * TODO clarify why this is done
-	 * </p>
-	 */
-	private void harmonizeIterationInstancesModel(IIteration iteration,
-			List<IIterationInstance> iterationInstances) {
-		List<ITask> iteratedTaskVariants = new LinkedList<ITask>();
-		TaskInstanceComparator comparator = preparationTaskHandlingStrategy
-				.getTaskComparator();
-
-		// merge the lexically different variants of iterated task to a unique
-		// list
-		for (IIterationInstance iterationInstance : iterationInstances) {
-			for (ITaskInstance executionVariant : iterationInstance) {
-				ITask candidate = executionVariant.getTask();
-
-				boolean found = false;
-				for (ITask taskVariant : iteratedTaskVariants) {
-					if (comparator.areLexicallyEqual(taskVariant, candidate)) {
-						taskBuilder.setTask(executionVariant, taskVariant);
-						found = true;
-						break;
-					}
-				}
-
-				if (!found) {
-					iteratedTaskVariants.add(candidate);
-				}
-			}
-		}
-
-		// if there are more than one lexically different variant of iterated
-		// tasks, adapt the
-		// iteration model to be a selection of different variants. In this case
-		// also adapt
-		// the generated iteration instances to correctly contain selection
-		// instances. If there
-		// is only one variant of an iterated task, simply set this as the
-		// marked task of the
-		// iteration. In this case, the instances can be preserved as is
-		if (iteratedTaskVariants.size() > 1) {
-			ISelection selection = taskFactory.createNewSelection();
-
-			for (ITask variant : iteratedTaskVariants) {
-				taskBuilder.addChild(selection, variant);
-			}
-
-			taskBuilder.setMarkedTask(iteration, selection);
-
-			for (IIterationInstance instance : iterationInstances) {
-				for (int i = 0; i < instance.size(); i++) {
-					ISelectionInstance selectionInstance = taskFactory
-							.createNewTaskInstance(selection);
-					taskBuilder.setChild(selectionInstance, instance.get(i));
-					taskBuilder.setTaskInstance(instance, i, selectionInstance);
-				}
-			}
-		} else {
-			taskBuilder.setMarkedTask(iteration, iteratedTaskVariants.get(0));
-		}
-	}
-
-	/**
-	 * TODO go on commenting
+
+	/**
 	 * 
 	 * @param appData
@@ -705,73 +640,5 @@
 	}
 
-	/**
-     *
-     */
-	private void harmonizeSequenceInstancesModel(ISequence sequence,
-			List<ISequenceInstance> sequenceInstances, int sequenceLength) {
-		TaskInstanceComparator comparator = preparationTaskHandlingStrategy
-				.getTaskComparator();
-
-		// ensure for each subtask that lexically different variants are
-		// preserved
-		for (int subTaskIndex = 0; subTaskIndex < sequenceLength; subTaskIndex++) {
-			List<ITask> subTaskVariants = new LinkedList<ITask>();
-
-			for (ISequenceInstance sequenceInstance : sequenceInstances) {
-				ITask candidate = sequenceInstance.get(subTaskIndex).getTask();
-
-				boolean found = false;
-
-				for (int i = 0; i < subTaskVariants.size(); i++) {
-					if (comparator.areLexicallyEqual(subTaskVariants.get(i),
-							candidate)) {
-						taskBuilder.setTask(sequenceInstance.get(subTaskIndex),
-								subTaskVariants.get(i));
-
-						found = true;
-						break;
-					}
-				}
-
-				if (!found) {
-					subTaskVariants.add(candidate);
-				}
-			}
-
-			// if there are more than one lexically different variant of the sub
-			// task at
-			// the considered position, adapt the sequence model at that
-			// position to have
-			// a selection of the different variants. In this case also adapt
-			// the
-			// generated sequence instances to correctly contain selection
-			// instances. If
-			// there is only one variant of sub tasks at the given position,
-			// simply set
-			// this variant as the sub task of the selection. In this case, the
-			// instances
-			// can be preserved as is
-			if (subTaskVariants.size() > 1) {
-				ISelection selection = taskFactory.createNewSelection();
-
-				for (ITask variant : subTaskVariants) {
-					taskBuilder.addChild(selection, variant);
-				}
-
-				taskBuilder.addChild(sequence, selection);
-
-				for (ISequenceInstance instance : sequenceInstances) {
-					ISelectionInstance selectionInstance = taskFactory
-							.createNewTaskInstance(selection);
-					taskBuilder.setChild(selectionInstance,
-							instance.get(subTaskIndex));
-					taskBuilder.setTaskInstance(instance, subTaskIndex,
-							selectionInstance);
-				}
-			} else if (subTaskVariants.size() == 1) {
-				taskBuilder.addChild(sequence, subTaskVariants.get(0));
-			}
-		}
-	}
+	
 
 	/**
