Index: /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleUtils.java
===================================================================
--- /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleUtils.java	(revision 1689)
+++ /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleUtils.java	(revision 1690)
@@ -15,7 +15,4 @@
 package de.ugoe.cs.autoquest.tasktrees.temporalrelation;
 
-import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.NumberSequence;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.IIterationInstance;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
@@ -128,5 +125,5 @@
 						
 					if(((IMarkingTemporalRelationship) tempTask).getMarkedTask() == parent.get(startIndex).getTask()) {
-						System.out.println("Adding OptionalInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+						//System.out.println("Adding OptionalInstance " + parent.get(startIndex) + " to " + tempTask.getType());
 						IOptionalInstance optional = taskFactory.createNewTaskInstance((IOptional) tempTask);
 						taskBuilder.setChild(optional, parent.get(startIndex));
@@ -134,5 +131,5 @@
 					}
 					else {
-						System.out.println("Adding Empty optional, not deleting anything from the input sequence");
+						//System.out.println("Adding Empty optional, not deleting anything from the input sequence");
 						IOptionalInstance optional = taskFactory.createNewTaskInstance((IOptional) tempTask);
 						taskBuilder.addChild(subsequence, optional);
@@ -142,5 +139,5 @@
 					}				
 			} else if (tempTask.getType() == "selection") {
-				System.out.println("Adding SelectionInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+				//System.out.println("Adding SelectionInstance " + parent.get(startIndex) + " to " + tempTask.getType());
 				ISelectionInstance selection = taskFactory.createNewTaskInstance((ISelection) tempTask);
 				taskBuilder.setChild(selection, parent.get(startIndex) );
@@ -148,13 +145,11 @@
 
 			} else if (tempTask.getType() == "sequence") {
-				System.out.println("Adding SequenceInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+				//System.out.println("Adding SequenceInstance " + parent.get(startIndex) + " to " + tempTask.getType());
 				taskBuilder.addChild(subsequence,parent.get(startIndex));
 			} else if (tempTask.getType() == "iteration") {
-				//IIterationInstance iteration = taskFactory.createNewTaskInstance((IIteration) tempTask);
-				//taskBuilder.addChild(iteration,parent.get(startIndex));
 				taskBuilder.addChild(subsequence, parent.get(startIndex));
-				System.out.println("Adding IterationInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+				//System.out.println("Adding IterationInstance " + parent.get(startIndex) + " to " + tempTask.getType());
 			} else {
-				System.out.println("Adding EventInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+				//System.out.println("Adding EventInstance " + parent.get(startIndex) + " to " + tempTask.getType());
 				taskBuilder.addChild(subsequence, parent.get(startIndex));
 			}
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 1689)
+++ /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java	(revision 1690)
@@ -38,5 +38,4 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelectionInstance;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequenceInstance;
@@ -93,11 +92,4 @@
 	private TaskHandlingStrategy preparationTaskHandlingStrategy;
 
-	/**
-	 * <p>
-	 * the task handling strategy to be used for comparing tasks during
-	 * iteration detection i.e., after the tasks are harmonized
-	 * </p>
-	 */
-	private TaskHandlingStrategy identityTaskHandlingStrategy;
 
 	/**
@@ -123,6 +115,4 @@
 		this.preparationTaskHandlingStrategy = new TaskHandlingStrategy(
 				minimalTaskEquality);
-		this.identityTaskHandlingStrategy = new TaskHandlingStrategy(
-				TaskEquality.IDENTICAL);
 
 	}
@@ -153,5 +143,4 @@
 			iteration++;
 			appData.detectedAndReplacedTasks = false;
-			
 			appData.getStopWatch().start("whole loop"); 
 			detectAndReplaceIterations(appData);
@@ -188,8 +177,5 @@
 			for (int j = 0; j < session.size(); j++) {
 				ITaskInstance taskInstance = session.get(j);
-				//System.out.print(taskInstance.getTask().getId() + " ");
 				templist.getSequence()[j] = taskInstance.getTask().getId();
-				appData.getNumber2Task().put(templist.getSequence()[j],
-						taskInstance.getTask());
 			}
 			//System.out.println();
@@ -219,6 +205,5 @@
 				"harmonizing task model of event task instances");
 		appData.getStopWatch().start("harmonizing event tasks");
-
-		appData.uniqueTasks = preparationTaskHandlingStrategy.createSymbolMap();
+		SymbolMap<ITaskInstance, ITask> uniqueTasks = preparationTaskHandlingStrategy.createSymbolMap();
 
 		TaskInstanceComparator comparator = preparationTaskHandlingStrategy
@@ -233,9 +218,11 @@
 			for (int i = 0; i < session.size(); i++) {
 				ITaskInstance taskInstance = session.get(i);
-				task = appData.getUniqueTasks().getValue(taskInstance);
+				task = uniqueTasks.getValue(taskInstance);
 
 				if (task == null) {
-					appData.getUniqueTasks().addSymbol(taskInstance,
+					uniqueTasks.addSymbol(taskInstance,
 							taskInstance.getTask());
+							appData.getUniqueTasks().add(taskInstance.getTask());
+							appData.getNumber2Task().put(taskInstance.getTask().getId(),taskInstance.getTask());
 				} else {
 					taskBuilder.setTask(taskInstance, task);
@@ -333,8 +320,6 @@
 		for (ITask iteratedTask : iteratedTasks) {
 
-			// TODO: Check if this is correct
 			IIteration iteration = taskFactory.createNewIteration();
-			appData.getUniqueTasks().addSymbol(
-					taskFactory.createNewTaskInstance(iteration), iteration);
+			appData.getUniqueTasks().add( iteration);
 			appData.getNumber2Task().put(iteration.getId(), iteration);
 			iterations.put(iteratedTask, iteration);
@@ -384,4 +369,7 @@
 
 		ISequence sequence = taskFactory.createNewSequence();
+		appData.uniqueTasks.add(sequence);
+		appData.number2task.put(sequence.getId(), sequence);
+		
 
 		int[] first = m.getFirstSequence().getSequence();
@@ -406,7 +394,5 @@
 			else if (first[i] == -1 && second[i] != -1) {
 				IOptional optional = taskFactory.createNewOptional();
-				appData.uniqueTasks.addSymbol(
-						//TODO:: Don't create TaskInstances here, use a set of tasks instead
-						taskFactory.createNewTaskInstance(optional), optional);
+				appData.uniqueTasks.add(optional);
 				appData.number2task.put(optional.getId(), optional);
 				taskBuilder.setMarkedTask(optional, appData.getNumber2Task()
@@ -418,7 +404,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);
+				appData.uniqueTasks.add(optional);
 				appData.number2task.put(optional.getId(), optional);
 				taskBuilder.setMarkedTask(optional, appData.getNumber2Task()
@@ -428,11 +412,6 @@
 			// Both tasks are not equal, we need to insert a selection here
 			else {
-				//TODO: Debug output
-				//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
-						.addSymbol(temp,selection);
+				appData.getUniqueTasks().add(selection);
 				appData.number2task.put(selection.getId(), selection);
 				taskBuilder.addChild(selection,
@@ -649,5 +628,6 @@
 		private HashMap<Integer, ITask> number2task;
 
-		private SymbolMap<ITaskInstance, ITask> uniqueTasks;
+		//TODO: We Actually just need number2task here
+		private HashSet<ITask> uniqueTasks;
 
 		private ArrayList<NumberSequence> numberseqs;
@@ -679,4 +659,5 @@
 			this.sessions = sessions;
 			numberseqs = new ArrayList<NumberSequence>();
+			uniqueTasks = new HashSet<ITask>();
 			number2task = new HashMap<Integer, ITask>();
 			stopWatch = new StopWatch();
@@ -691,5 +672,5 @@
 		}
 
-		private SymbolMap<ITaskInstance, ITask> getUniqueTasks() {
+		private HashSet<ITask> getUniqueTasks() {
 			return uniqueTasks;
 		}
