Index: /branches/autoquest-core-tasktrees-alignment-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWatermanRepeatedTest.java
===================================================================
--- /branches/autoquest-core-tasktrees-alignment-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWatermanRepeatedTest.java	(revision 1655)
+++ /branches/autoquest-core-tasktrees-alignment-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWatermanRepeatedTest.java	(revision 1656)
@@ -68,6 +68,5 @@
 		assertNotNull(testalignment1);
 		testalignment1.align(ns1, ns2,submat,4);
-		testalignment1.printDPMatrix();
-		testalignment1.printAlignment();
+
 		
 		//testalignment1.getMatches().get(0).getFirstSequence().printSequence();
@@ -96,5 +95,7 @@
 		assertNotNull(testalignment1);
 		testalignment1.align(ns1, ns2,submat,3);
-		assertTrue(testalignment1.getAlignmentScore()==1.0);
+		testalignment1.printDPMatrix();
+		testalignment1.printAlignment();
+		assertTrue(testalignment1.getAlignmentScore()==4.0);
 		
 		}
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 1655)
+++ /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/RuleUtils.java	(revision 1656)
@@ -17,6 +17,9 @@
 import java.util.Iterator;
 
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptionalInstance;
+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;
@@ -103,25 +106,56 @@
 		ISequenceInstance subsequence = taskFactory
 				.createNewTaskInstance(model);
+		
+		for (int i=0; i<subsequence.getSequence().getChildren().size();i++) {
+			System.out.println(subsequence.getSequence().getChildren().get(i));	
+		}
+		System.out.println();
 
 		int modelindex=0;
 		for (int i = startIndex; i <= endIndex; i++) {
-			System.out.println("Trying to add " + parent.get(startIndex)
-					+ " to the model instance");
+			
 			ITask tempTask = model.getChildren().get(modelindex);
+			//System.out.println("Trying to add " + parent.get(startIndex)
+			//	+ " to the model instance " + tempTask.getType());
 			if (tempTask.getType() == "optionality") {
-					IOptionalInstance optional = taskFactory.createNewTaskInstance((IOptional) tempTask);
+						
+					if(((IMarkingTemporalRelationship) tempTask).getMarkedTask() == parent.get(startIndex).getTask()) {
+						System.out.println("Adding OptionalInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+						IOptionalInstance optional = taskFactory.createNewTaskInstance((IOptional) tempTask);
+						taskBuilder.setChild(optional, parent.get(startIndex));
+						taskBuilder.addChild(subsequence, optional);
+					}
+					else {
+						System.out.println("Adding Empty optional, not deleting anything from the input sequence");
+						IOptionalInstance optional = taskFactory.createNewTaskInstance((IOptional) tempTask);
+						taskBuilder.addChild(subsequence, optional);
+						modelindex++;
+						i++;
+						continue;
+					}				
 			} else if (tempTask.getType() == "selection") {
+				System.out.println("Adding SelectionInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+				ISelectionInstance selection = taskFactory.createNewTaskInstance((ISelection) tempTask);
+				taskBuilder.setChild(selection, parent.get(startIndex) );
+				taskBuilder.addChild(subsequence,selection);
 
 			} else if (tempTask.getType() == "sequence") {
+				System.out.println("Adding SequenceInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+				
+			} else if (tempTask.getType() == "iteration") {
+				System.out.println("Adding IterationInstance " + parent.get(startIndex) + " to " + tempTask.getType());
+			} else {
+				System.out.println("Adding EventInstance " + parent.get(startIndex) + " to " + tempTask.getType());
 				taskBuilder.addChild(subsequence, parent.get(startIndex));
-			} else if (tempTask.getType() == "iteration") {
-
-			} else {
-
 			}
 			taskBuilder.removeTaskInstance(parent, startIndex);
 			modelindex++;
 		}
-
+		
+		System.out.println("Sequence instance:");
+		for(Iterator<ITaskInstance> it = subsequence.iterator();it.hasNext();) {
+			System.out.println(it.next());
+		}
+		
 		taskBuilder.addTaskInstance(parent, startIndex, subsequence);
 
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 1655)
+++ /branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java	(revision 1656)
@@ -282,12 +282,14 @@
 					matchseqs.get(i).getSecondSequence().printSequence();
 					System.out.println(" in session number: " + (oc.getSequenceId()+1) + " at position " + (oc.getStartindex()) + "-" + (oc.getStartindex()+matchseqs.get(i).getFirstSequence().size()));
+					System.out.println();
+					/*
 					System.out.println("Printing session: ");
 					for(int j=0;j<sessions.get(oc.getSequenceId()).size();j++) {
 						System.out.println(j+ ": " + sessions.get(oc.getSequenceId()).get(j));
-					}
+					}*/
 					List<ISequenceInstance> sequenceInstances = new LinkedList<ISequenceInstance>();
-					RuleUtils.createNewSubSequenceInRange(sessions.get(oc.getSequenceId()), oc.getStartindex(), oc.getStartindex()+matchseqs.get(i).getFirstSequence().size()-1, task,	taskFactory, taskBuilder);
-	}
-				System.out.println(task);
+					RuleUtils.createNewSubSequenceInRange(sessions.get(oc.getSequenceId()), oc.getStartindex(), oc.getStartindex()+matchseqs.get(i).getFirstSequence().size(), task,	taskFactory, taskBuilder);
+	}
+				//System.out.println(task);
 				//matchseqs.get(i).getFirstSequence().printSequence();
 				//matchseqs.get(i).getSecondSequence().printSequence();
@@ -568,4 +570,5 @@
 	    	
 	    	//TODO: Debug output
+	    	/*
 	    	for (int i =0;i<sequence.getChildren().size();i++) {
 	    		System.out.println(sequence.getChildren().get(i));
@@ -577,4 +580,5 @@
 	    		}
 	    	}
+	    	*/
 			return sequence;
 		}
