Index: trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskInstanceTrieTest.java
===================================================================
--- trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskInstanceTrieTest.java	(revision 1845)
+++ trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskInstanceTrieTest.java	(revision 1846)
@@ -26,7 +26,7 @@
 import de.ugoe.cs.autoquest.tasktrees.TaskTreeDecoder;
 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession;
 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder;
@@ -114,20 +114,24 @@
         fixture.trainSessions(Arrays.asList(session), 2);
         
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2))));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2).getTask())));
         
         // subsequences of length 1 are not trained. So for the single item sequence of the last
         // task, the count must be 0
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(3))));
-        
-        
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2), session.get(3))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(3).getTask())));
+        
+        
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // this must return 0 as we only trained shorter sequences
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask())));
         
         // subsequences of length 1 are not trained. So the single item sequence of the last
@@ -153,14 +157,16 @@
             // subsequences of length 1 are not trained. So the single item sequence of the last
             // task is not counted. Therefore, the result must be 3
-            assertEquals(3, fixture.getCount(Arrays.asList(session.get(i))));
+            assertEquals(3, fixture.getCount(Arrays.asList(session.get(i).getTask())));
             
             for (int j = 0; j < session.size(); j++) {
-                assertEquals(3, fixture.getCount(Arrays.asList(session.get(i), session.get(j))));
+                assertEquals(3, fixture.getCount(Arrays.asList(session.get(i).getTask(),
+                                                               session.get(j).getTask())));
             }
         }
             
         // this must return 0 as we only trained shorter sequences
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask())));
         
         assertEquals(1, fixture.getNumSymbols());
@@ -183,16 +189,20 @@
         // subsequences of length 1 are not trained. So the single item sequence of the last
         // task is not counted. Therefore, the result must be 3
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1))));
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(3))));
-        
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0), session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2))));
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2), session.get(3))));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask())));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(3).getTask())));
+        
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // this must return 0 as we only trained shorter sequences
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask())));
         
         assertEquals(2, fixture.getNumSymbols());
@@ -213,25 +223,32 @@
         fixture.trainSessions(Arrays.asList(session), 3);
         
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2))));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2).getTask())));
         
         // subsequences of length 1 are not trained. So for the single item sequence of the last
         // task, the count must be 0
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(3))));
-        
-        
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2), session.get(3))));
-        
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2),
-                                                       session.get(3))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(3).getTask())));
+        
+        
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2).getTask(),
+                                                       session.get(3).getTask())));
+        
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // we only trained shorter sequences, so we expect a count of 0 for longer ones
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2), session.get(3))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // subsequences of length 1 are not trained. So the single item sequence of the last
@@ -257,12 +274,14 @@
             // subsequences of length 1 are not trained. So the single item sequence of the last
             // task is not counted. Therefore, the result must be 3
-            assertEquals(3, fixture.getCount(Arrays.asList(session.get(i))));
+            assertEquals(3, fixture.getCount(Arrays.asList(session.get(i).getTask())));
             
             for (int j = 0; j < session.size(); j++) {
-                assertEquals(3, fixture.getCount(Arrays.asList(session.get(i), session.get(j))));
+                assertEquals(3, fixture.getCount(Arrays.asList(session.get(i).getTask(),
+                                                               session.get(j).getTask())));
                 
                 for (int k = 0; k < session.size(); k++) {
-                    assertEquals(2, fixture.getCount(Arrays.asList(session.get(i), session.get(j),
-                                                                   session.get(k))));                    
+                    assertEquals(2, fixture.getCount(Arrays.asList(session.get(i).getTask(),
+                                                                   session.get(j).getTask(),
+                                                                   session.get(k).getTask())));                    
                 }
             }
@@ -270,6 +289,8 @@
             
         // we only trained shorter sequences, so we expect a count of 0 for longer ones
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2), session.get(3))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         assertEquals(1, fixture.getNumSymbols());
@@ -292,21 +313,28 @@
         // subsequences of length 1 are not trained. So the single item sequence of the last
         // task is not counted. Therefore, the result must be 3
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1))));
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(3))));
-        
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0), session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2))));
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2), session.get(3))));
-        
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2),
-                                                       session.get(3))));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask())));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(3).getTask())));
+        
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2).getTask(),
+                                                       session.get(3).getTask())));
+        
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // we only trained shorter sequences, so we expect a count of 0 for longer ones
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2), session.get(3))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         assertEquals(2, fixture.getNumSymbols());
@@ -327,25 +355,32 @@
         fixture.trainSessions(Arrays.asList(session), 4);
         
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2))));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2).getTask())));
         
         // subsequences of length 1 are not trained. So for the single item sequence of the last
         // task, the count must be 0
-        assertEquals(0, fixture.getCount(Arrays.asList(session.get(3))));
-        
-        
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2), session.get(3))));
-        
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2),
-                                                       session.get(3))));
+        assertEquals(0, fixture.getCount(Arrays.asList(session.get(3).getTask())));
+        
+        
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(2).getTask(),
+                                                       session.get(3).getTask())));
+        
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // we only trained shorter sequences, so we expect a count of 0 for longer ones
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2), session.get(3))));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // subsequences of length 1 are not trained. So the single item sequence of the last
@@ -371,12 +406,14 @@
             // subsequences of length 1 are not trained. So the single item sequence of the last
             // task is not counted. Therefore, the result must be 3
-            assertEquals(3, fixture.getCount(Arrays.asList(session.get(i))));
+            assertEquals(3, fixture.getCount(Arrays.asList(session.get(i).getTask())));
             
             for (int j = 0; j < session.size(); j++) {
-                assertEquals(3, fixture.getCount(Arrays.asList(session.get(i), session.get(j))));
+                assertEquals(3, fixture.getCount(Arrays.asList(session.get(i).getTask(),
+                                                               session.get(j).getTask())));
                 
                 for (int k = 0; k < session.size(); k++) {
-                    assertEquals(2, fixture.getCount(Arrays.asList(session.get(i), session.get(j),
-                                                                   session.get(k))));                    
+                    assertEquals(2, fixture.getCount(Arrays.asList(session.get(i).getTask(),
+                                                                   session.get(j).getTask(),
+                                                                   session.get(k).getTask())));                    
                 }
             }
@@ -384,6 +421,8 @@
             
         // we only trained shorter sequences, so we expect a count of 0 for longer ones
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2), session.get(3))));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         assertEquals(1, fixture.getNumSymbols());
@@ -406,21 +445,28 @@
         // subsequences of length 1 are not trained. So the single item sequence of the last
         // task is not counted. Therefore, the result must be 3
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1))));
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(3))));
-        
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0), session.get(1))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2))));
-        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2), session.get(3))));
-        
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2))));
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1), session.get(2),
-                                                       session.get(3))));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask())));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(3).getTask())));
+        
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(2, fixture.getCount(Arrays.asList(session.get(2).getTask(),
+                                                       session.get(3).getTask())));
+        
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask())));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         // we only trained shorter sequences, so we expect a count of 0 for longer ones
-        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0), session.get(1),
-                                                       session.get(2), session.get(3))));
+        assertEquals(1, fixture.getCount(Arrays.asList(session.get(0).getTask(),
+                                                       session.get(1).getTask(),
+                                                       session.get(2).getTask(),
+                                                       session.get(3).getTask())));
         
         assertEquals(2, fixture.getNumSymbols());
@@ -435,12 +481,12 @@
 
         // get all sequences with a minimal length of one that occur most often
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(1, 0);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(1, 0);
 
         assertEquals(1, result.size());
         
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(0));
-        
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(0).getTask());
+        
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -452,60 +498,60 @@
 
         // get all sequences with a minimal length of one that occur exactly once
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(1, 1);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(1, 1);
 
         assertEquals(11, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(2)); //r
-        expected.add(session.get(0)); //a
-        expected.add(session.get(4)); //c
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(2).getTask()); //r
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(4).getTask()); //c
         // rac
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(4)); //c
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(4).getTask()); //c
         // ac
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // aca
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(4)); //c
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(4).getTask()); //c
         // c
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // ca
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(6)); //d
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(6).getTask()); //d
         // cad
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(6)); //d
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(6).getTask()); //d
         // ad
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // ada
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(6)); //d
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(6).getTask()); //d
         // d
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // da
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(1)); //b
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(1).getTask()); //b
         // dab
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -517,39 +563,39 @@
 
         // get all sequences with a minimal length of one that occur exactly twice
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(1, 2);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(1, 2);
 
         assertEquals(7, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(1)); //b
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(1).getTask()); //b
         // ab
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(2)); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(2).getTask()); //r
         // abr
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(1)); //b
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(1).getTask()); //b
         // b
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(2)); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(2).getTask()); //r
         // br
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // bra
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(2)); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(2).getTask()); //r
         // r
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // ra
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -561,5 +607,5 @@
 
         // get all sequences with a minimal length of one that occur exactly three times
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(1, 3);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(1, 3);
 
         assertEquals(0, result.size());
@@ -573,12 +619,12 @@
 
         // get all sequences with a minimal length of one that occur exactly four times
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(1, 4);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(1, 4);
 
         // as we did not train the last single action, we may expect the "a" action only 4 times
         assertEquals(1, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(0)); //a
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(0).getTask()); //a
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -590,5 +636,5 @@
 
         // get all sequences with a minimal length of one that occur exactly five times
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(1, 5);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(1, 5);
 
         // as we did not train the last single action, we may expect the "a" action only 4 times
@@ -603,28 +649,28 @@
 
         // get all sequences with a minimal length of two that occur most often
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(2, 0);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(2, 0);
 
         assertEquals(5, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(1)); //b
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(2)); //r
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(1)); //b
-        expected.add(session.get(2)); //r
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(2)); //r
-        expected.add(session.get(0)); //a
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(1).getTask()); //b
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(2).getTask()); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(1).getTask()); //b
+        expected.add(session.get(2).getTask()); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(2).getTask()); //r
+        expected.add(session.get(0).getTask()); //a
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -636,54 +682,54 @@
 
         // get all sequences with a minimal length of two that occur exactly once
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(2, 1);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(2, 1);
 
         assertEquals(9, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(2)); //r
-        expected.add(session.get(0)); //a
-        expected.add(session.get(4)); //c
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(2).getTask()); //r
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(4).getTask()); //c
         // rac
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(4)); //c
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(4).getTask()); //c
         // ac
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // aca
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(4)); //c
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(4).getTask()); //c
+        expected.add(session.get(0).getTask()); //a
         // ca
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(6)); //d
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(6).getTask()); //d
         // cad
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(6)); //d
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(6).getTask()); //d
         // ad
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // ada
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(6)); //d
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(6).getTask()); //d
+        expected.add(session.get(0).getTask()); //a
         // da
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(1)); //b
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(1).getTask()); //b
         // dab
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -695,33 +741,33 @@
 
         // get all sequences with a minimal length of two that occur exactly twice
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(2, 2);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(2, 2);
 
         assertEquals(5, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(1)); //b
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(1).getTask()); //b
         // ab
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(2)); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(2).getTask()); //r
         // abr
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(1)); //b
-        expected.add(session.get(2)); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(1).getTask()); //b
+        expected.add(session.get(2).getTask()); //r
         // br
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.add(session.get(0).getTask()); //a
         // bra
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(2)); //r
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(2).getTask()); //r
+        expected.add(session.get(0).getTask()); //a
         // ra
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -733,5 +779,5 @@
 
         // get all sequences with a minimal length of two that occur exactly three times
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(2, 3);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(2, 3);
 
         assertEquals(0, result.size());
@@ -745,19 +791,19 @@
 
         // get all sequences with a minimal length of three that occur most often
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(3, 0);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(3, 0);
 
         assertEquals(2, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(1)); //b
-        expected.add(session.get(2)); //r
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(1)); //b
-        expected.add(session.get(2)); //r
-        expected.add(session.get(0)); //a
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(1).getTask()); //b
+        expected.add(session.get(2).getTask()); //r
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(1).getTask()); //b
+        expected.add(session.get(2).getTask()); //r
+        expected.add(session.get(0).getTask()); //a
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -769,42 +815,42 @@
 
         // get all sequences with a minimal length of three that occur exactly once
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(3, 1);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(3, 1);
 
         assertEquals(5, result.size());
 
-        List<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(2)); //r
-        expected.add(session.get(0)); //a
-        expected.add(session.get(4)); //c
+        List<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(2).getTask()); //r
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(4).getTask()); //c
         // rac
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(4)); //c
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(4).getTask()); //c
+        expected.add(session.get(0).getTask()); //a
         // aca
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(4)); //c
-        expected.add(session.get(0)); //a
-        expected.add(session.get(6)); //d
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(4).getTask()); //c
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(6).getTask()); //d
         // cad
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(0)); //a
-        expected.add(session.get(6)); //d
-        expected.add(session.get(0)); //a
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(6).getTask()); //d
+        expected.add(session.get(0).getTask()); //a
         // ada
-        assertContains((List<List<ITaskInstance>>) result, expected);
-
-        expected.clear();
-        expected.add(session.get(6)); //d
-        expected.add(session.get(0)); //a
-        expected.add(session.get(1)); //b
+        assertContains((List<List<ITask>>) result, expected);
+
+        expected.clear();
+        expected.add(session.get(6).getTask()); //d
+        expected.add(session.get(0).getTask()); //a
+        expected.add(session.get(1).getTask()); //b
         // dab
-        assertContains((List<List<ITaskInstance>>) result, expected);
+        assertContains((List<List<ITask>>) result, expected);
     }
 
@@ -816,5 +862,5 @@
 
         // get all sequences with a minimal length of four that occur most often
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(4, 0);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(4, 0);
 
         // none of these exist, as the tree is only trained with sequences of length 3
@@ -829,5 +875,5 @@
 
         // get all sequences with a minimal length of four that occur exactly once
-        Collection<List<ITaskInstance>> result = fixture.getSequencesWithOccurrenceCount(4, 1);
+        Collection<List<ITask>> result = fixture.getSequencesWithOccurrenceCount(4, 1);
 
         // none of these exist, as the tree is only trained with sequences of length 3
@@ -841,6 +887,6 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-        subSequence.add(session.get(0)); //a
+        List<ITask> subSequence = new ArrayList<ITask>();
+        subSequence.add(session.get(0).getTask()); //a
 
         int result = fixture.getCount(subSequence);
@@ -856,7 +902,7 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-        subSequence.add(session.get(0)); //a
-        subSequence.add(session.get(1)); //b
+        List<ITask> subSequence = new ArrayList<ITask>();
+        subSequence.add(session.get(0).getTask()); //a
+        subSequence.add(session.get(1).getTask()); //b
 
         int result = fixture.getCount(subSequence);
@@ -871,6 +917,6 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-        subSequence.add(taskFactory.createNewTaskInstance(taskFactory.createNewSequence()));
+        List<ITask> subSequence = new ArrayList<ITask>();
+        subSequence.add(taskFactory.createNewSequence());
 
         int result = fixture.getCount(subSequence);
@@ -885,7 +931,7 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-
-        int result = fixture.getCount(subSequence, session.get(0)); //a
+        List<ITask> subSequence = new ArrayList<ITask>();
+
+        int result = fixture.getCount(subSequence, session.get(0).getTask()); //a
 
         // as we did not train the last single action, we may expect the "a" action only 4 times
@@ -899,9 +945,9 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-        subSequence.add(session.get(0)); //a
-        subSequence.add(session.get(1)); //b
-
-        int result = fixture.getCount(subSequence, session.get(2)); //r
+        List<ITask> subSequence = new ArrayList<ITask>();
+        subSequence.add(session.get(0).getTask()); //a
+        subSequence.add(session.get(1).getTask()); //b
+
+        int result = fixture.getCount(subSequence, session.get(2).getTask()); //r
 
         assertEquals(2, result);
@@ -914,8 +960,8 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
+        List<ITask> subSequence = new ArrayList<ITask>();
 
         int result = fixture.getCount
-            (subSequence, taskFactory.createNewTaskInstance(taskFactory.createNewSequence()));
+            (subSequence, taskFactory.createNewSequence());
 
         assertEquals(0, result);
@@ -928,12 +974,12 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-        subSequence.add(session.get(0)); //a
-        Collection<ITaskInstance> expected = new ArrayList<ITaskInstance>();
-        expected.add(session.get(1)); //b
-        expected.add(session.get(4)); //c
-        expected.add(session.get(6)); //d
-
-        Collection<ITaskInstance> result = fixture.getFollowingSymbols(subSequence);
+        List<ITask> subSequence = new ArrayList<ITask>();
+        subSequence.add(session.get(0).getTask()); //a
+        Collection<ITask> expected = new ArrayList<ITask>();
+        expected.add(session.get(1).getTask()); //b
+        expected.add(session.get(4).getTask()); //c
+        expected.add(session.get(6).getTask()); //d
+
+        Collection<ITask> result = fixture.getFollowingSymbols(subSequence);
 
         assertCollectionContent(expected, result);
@@ -946,10 +992,10 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-        subSequence.add(session.get(0)); //a
-        subSequence.add(session.get(1)); //b
-        subSequence.add(session.get(2)); //r
-
-        Collection<ITaskInstance> result = fixture.getFollowingSymbols(subSequence);
+        List<ITask> subSequence = new ArrayList<ITask>();
+        subSequence.add(session.get(0).getTask()); //a
+        subSequence.add(session.get(1).getTask()); //b
+        subSequence.add(session.get(2).getTask()); //r
+
+        Collection<ITask> result = fixture.getFollowingSymbols(subSequence);
 
         assertEquals(0, result.size());
@@ -962,8 +1008,8 @@
         fixture.trainSessions(Arrays.asList(session), 3);
 
-        List<ITaskInstance> subSequence = new ArrayList<ITaskInstance>();
-        subSequence.add(taskFactory.createNewTaskInstance(taskFactory.createNewSequence()));
-
-        Collection<ITaskInstance> result = fixture.getFollowingSymbols(subSequence);
+        List<ITask> subSequence = new ArrayList<ITask>();
+        subSequence.add(taskFactory.createNewSequence());
+
+        Collection<ITask> result = fixture.getFollowingSymbols(subSequence);
 
         assertEquals(0, result.size());
@@ -1010,5 +1056,5 @@
         int order = 2;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 50, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 50, order);
 
         long start = System.currentTimeMillis();
@@ -1030,5 +1076,5 @@
         int order = 2;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1050,5 +1096,5 @@
         int order = 2;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(30, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(30, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1070,5 +1116,5 @@
         int order = 2;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(300, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(300, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1090,5 +1136,5 @@
         int order = 2;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(1000, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(1000, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1110,5 +1156,5 @@
         int order = 3;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 50, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 50, order);
 
         long start = System.currentTimeMillis();
@@ -1130,5 +1176,5 @@
         int order = 3;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1150,5 +1196,5 @@
         int order = 3;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(30, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(30, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1170,5 +1216,5 @@
         int order = 3;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(300, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(300, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1190,5 +1236,5 @@
         int order = 3;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(1000, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(1000, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1210,5 +1256,5 @@
         int order = 4;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 50, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 50, order);
 
         long start = System.currentTimeMillis();
@@ -1230,5 +1276,5 @@
         int order = 4;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1250,5 +1296,5 @@
         int order = 4;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(30, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(30, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1270,5 +1316,5 @@
         int order = 4;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(300, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(300, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1290,5 +1336,5 @@
         int order = 4;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(1000, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(1000, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1310,5 +1356,5 @@
         int order = 5;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 50, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 50, order);
 
         long start = System.currentTimeMillis();
@@ -1330,5 +1376,5 @@
         int order = 5;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1350,5 +1396,5 @@
         int order = 5;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(30, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(30, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1370,5 +1416,5 @@
         int order = 5;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(300, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(300, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1390,5 +1436,5 @@
         int order = 5;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(1000, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(1000, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1410,5 +1456,5 @@
         int order = 6;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 50, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 50, order);
 
         long start = System.currentTimeMillis();
@@ -1430,5 +1476,5 @@
         int order = 6;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(3, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(3, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1450,5 +1496,5 @@
         int order = 6;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(30, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(30, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1470,5 +1516,5 @@
         int order = 6;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(300, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(300, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1490,5 +1536,5 @@
         int order = 6;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(1000, 10000, order);
+        TaskTrieTester tester = new TaskTrieTester(1000, 10000, order);
 
         long start = System.currentTimeMillis();
@@ -1510,5 +1556,5 @@
         int order = 3;
         
-        TaskInstanceTrieTester tester = new TaskInstanceTrieTester(1000, 100000, order);
+        TaskTrieTester tester = new TaskTrieTester(1000, 100000, order);
 
         long start = System.currentTimeMillis();
@@ -1527,9 +1573,9 @@
      * 
      */
-    private void assertContains(List<List<ITaskInstance>> listOfList,
-                                List<ITaskInstance>       containedList)
+    private void assertContains(List<List<ITask>> listOfList,
+                                List<ITask>       containedList)
     {
         boolean found = false;
-        for (List<ITaskInstance> candidate : listOfList) {
+        for (List<ITask> candidate : listOfList) {
             if (candidate.size() == containedList.size()) {
                 found = true;
@@ -1561,10 +1607,10 @@
      * @author Patrick Harms
      */
-    private class TaskInstanceTrieTester implements TrieProcessor<ITaskInstance> {
+    private class TaskTrieTester implements TrieProcessor<ITask> {
         
         /**
          * the symbols used for testing the trie
          */
-        private Map<Integer, ITaskInstance> symbols = new HashMap<Integer, ITaskInstance>();
+        private Map<Integer, ITask> symbols = new HashMap<Integer, ITask>();
 
         /**
@@ -1596,5 +1642,5 @@
          * trie calculated the count correctly and if it did not create too many nodes.
          */
-        public TaskInstanceTrieTester(int noOfSymbols, int sequenceLength, int maxOrder) {
+        public TaskTrieTester(int noOfSymbols, int sequenceLength, int maxOrder) {
             if (noOfSymbols > 1024) {
                 throw new IllegalArgumentException("too large number of symbols");
@@ -1616,5 +1662,5 @@
             
             for (int i = 0; i < dummySession.size(); i++) {
-                this.symbols.put(i, dummySession.get(i));
+                this.symbols.put(i, dummySession.get(i).getTask());
             }
             
@@ -1675,11 +1721,11 @@
          */
         @Override
-        public TrieProcessor.Result process(List<ITaskInstance> sequence, int count) {
+        public TrieProcessor.Result process(List<ITask> sequence, int count) {
             long key = 0;
             
-            for (ITaskInstance symbol : sequence) {
+            for (ITask symbol : sequence) {
                 int symbolIndex = -1;
                 
-                for (Map.Entry<Integer, ITaskInstance> entry : symbols.entrySet()) {
+                for (Map.Entry<Integer, ITask> entry : symbols.entrySet()) {
                     if (strategy.getTaskComparator().equals(entry.getValue(), symbol)) {
                         symbolIndex = entry.getKey();
Index: trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskSymbolBucketedMapTest.java
===================================================================
--- trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskSymbolBucketedMapTest.java	(revision 1845)
+++ trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskSymbolBucketedMapTest.java	(revision 1846)
@@ -34,5 +34,4 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance;
 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory;
 import de.ugoe.cs.autoquest.test.DummyGUIElement;
@@ -63,6 +62,6 @@
     @Test
     public void testSymbolMap_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         
         assertNotNull(symbolMap);
@@ -73,13 +72,13 @@
     public void testSymbolMap_2() {
         TaskSymbolBucketedMap<String> symbolMap1 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        ITaskInstance taskInstance = createTaskInstance("symbol");
-        symbolMap1.addSymbol(taskInstance, "value");
-        
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolBucketedMap<String>(symbolMap1);
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        ITask task = createTask("symbol");
+        symbolMap1.addSymbol(task, "value");
+        
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolBucketedMap<String>(symbolMap1);
         
         assertNotNull(symbolMap2);
-        assertSymbolMapEntries(symbolMap2, new ITaskInstance[] { taskInstance },
+        assertSymbolMapEntries(symbolMap2, new ITask[] { task },
                                new String[] { "value" });
     }
@@ -92,12 +91,12 @@
     @Test
     public void testAddSymbol_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        ITaskInstance taskInstance = createTaskInstance("symbol");
-        symbolMap.addSymbol(taskInstance, "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        ITask task = createTask("symbol");
+        symbolMap.addSymbol(task, "value1");
         
         assertNotNull(symbolMap);
-        assertSymbolMapEntries(symbolMap, new ITaskInstance[] { taskInstance },
+        assertSymbolMapEntries(symbolMap, new ITask[] { task },
                                new String[] { "value1" });
     }
@@ -105,14 +104,14 @@
     @Test
     public void testAddSymbol_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        ITaskInstance[] symbols = new ITaskInstance[entryCount];
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        ITask[] symbols = new ITask[entryCount];
         String[] values = new String[entryCount];
         
         for (int i = 0; i < entryCount; i++) {
-            symbols[i] = createTaskInstance("symbol" + i);
+            symbols[i] = createTask("symbol" + i);
             symbolMap.addSymbol(symbols[i], "value" + i);
             values[i] = "value" + i;
@@ -125,14 +124,14 @@
     @Test
     public void testAddSymbol_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        ITaskInstance[] symbols = new ITaskInstance[entryCount];
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        ITask[] symbols = new ITask[entryCount];
         String[] values = new String[entryCount];
         
         for (int i = 0; i < entryCount; i++) {
-            symbols[i] = createTaskInstance("symbol" + i);
+            symbols[i] = createTask("symbol" + i);
             if (i % 7 == 0) {
                 values[i] = "value" + i;
@@ -151,6 +150,6 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testAddSymbol_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         symbolMap.addSymbol(null, null);
@@ -159,6 +158,6 @@
     @Test
     public void testSize_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         assertEquals(0, symbolMap.size());
@@ -167,8 +166,8 @@
     @Test
     public void testSize_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         assertEquals(1, symbolMap.size());
@@ -177,11 +176,11 @@
     @Test
     public void testSize_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
         }
         
@@ -191,15 +190,15 @@
     @Test
     public void testSize_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
             }
         }
@@ -210,15 +209,15 @@
     @Test
     public void testSize_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
@@ -228,6 +227,6 @@
     @Test
     public void testIsEmpty_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         assertTrue(symbolMap.isEmpty());
@@ -236,8 +235,8 @@
     @Test
     public void testIsEmpty_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         assertFalse(symbolMap.isEmpty());
@@ -246,11 +245,11 @@
     @Test
     public void testIsEmpty_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
         }
         
@@ -260,15 +259,15 @@
     @Test
     public void testIsEmpty_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
             }
         }
@@ -279,15 +278,15 @@
     @Test
     public void testIsEmpty_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
@@ -297,33 +296,33 @@
     @Test
     public void testContainsSymbol_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        assertFalse(symbolMap.containsSymbol(createTaskInstance("symbol")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        assertFalse(symbolMap.containsSymbol(createTask("symbol")));
     }
     
     @Test
     public void testContainsSymbol_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
-        
-        assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
+        
+        assertTrue(symbolMap.containsSymbol(createTask("symbol1")));
     }
     
     @Test
     public void testContainsSymbol_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
     }
@@ -331,20 +330,20 @@
     @Test
     public void testContainsSymbol_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
-            }
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
+            }
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
     }
@@ -352,27 +351,27 @@
     @Test
     public void testContainsSymbol_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
         for (int i = 0; i < 150; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            assertFalse(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            assertFalse(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
         
         for (int i = (entryCount - 150); i < entryCount; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
     }
@@ -380,6 +379,6 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testContainsSymbol_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         symbolMap.containsSymbol(null);
@@ -388,43 +387,43 @@
     @Test
     public void testGetValue_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        assertNull(symbolMap.getValue(createTaskInstance("symbol")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        assertNull(symbolMap.getValue(createTask("symbol")));
     }
     
     @Test
     public void testGetValue_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
-        
-        assertNotNull(symbolMap.getValue(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
+        
+        assertNotNull(symbolMap.getValue(createTask("symbol1")));
     }
     
     @Test
     public void testGetValue_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
-        
-        assertNull(symbolMap.getValue(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
+        
+        assertNull(symbolMap.getValue(createTask("symbol1")));
     }
     
     @Test
     public void testGetValue_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
         }
     }
@@ -432,24 +431,24 @@
     @Test
     public void testGetValue_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
-            }
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
-            }
-            else {
-                assertNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
+            }
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
+            }
+            else {
+                assertNull(symbolMap.getValue(createTask("symbol" + i)));
             }
         }
@@ -458,27 +457,27 @@
     @Test
     public void testGetValue_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
         for (int i = 0; i < 150; i++) {
-            assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            assertNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            assertNull(symbolMap.getValue(createTask("symbol" + i)));
         }
         
         for (int i = (entryCount - 150); i < entryCount; i++) {
-            assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
         }
     }
@@ -486,6 +485,6 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testGetValue_7() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         symbolMap.getValue(null);
@@ -494,18 +493,18 @@
     @Test
     public void testRemoveSymbol_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        assertNull(symbolMap.removeSymbol(createTaskInstance("symbol")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        assertNull(symbolMap.removeSymbol(createTask("symbol")));
     }
     
     @Test
     public void testRemoveSymbol_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
-        
-        assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
+        
+        assertNotNull(symbolMap.removeSymbol(createTask("symbol1")));
         assertEquals(0, symbolMap.size());
     }
@@ -513,10 +512,10 @@
     @Test
     public void testRemoveSymbol_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
-        
-        assertNull(symbolMap.removeSymbol(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
+        
+        assertNull(symbolMap.removeSymbol(createTask("symbol1")));
         assertEquals(0, symbolMap.size());
     }
@@ -524,15 +523,15 @@
     @Test
     public void testRemoveSymbol_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
         }
         
@@ -542,24 +541,24 @@
     @Test
     public void testRemoveSymbol_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
-            }
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
-            }
-            else {
-                assertNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
+            }
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
+            }
+            else {
+                assertNull(symbolMap.removeSymbol(createTask("symbol" + i)));
             }
         }
@@ -570,27 +569,27 @@
     @Test
     public void testRemoveSymbol_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
         for (int i = 0; i < 150; i++) {
-            assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            assertNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            assertNull(symbolMap.removeSymbol(createTask("symbol" + i)));
         }
         
         for (int i = (entryCount - 150); i < entryCount; i++) {
-            assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
         }
         
@@ -600,6 +599,6 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testRemoveSymbol_7() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         symbolMap.removeSymbol(null);
@@ -608,6 +607,6 @@
     @Test
     public void testGetSymbols_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         assertNotNull(symbolMap.getSymbols());
@@ -617,8 +616,8 @@
     @Test
     public void testGetSymbols_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
          
-        ITaskInstance task = createTaskInstance("symbol1");
+        ITask task = createTask("symbol1");
         symbolMap.addSymbol(task, "value1");
         
@@ -630,8 +629,8 @@
     @Test
     public void testGetSymbols_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        ITaskInstance task = createTaskInstance("symbol1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        ITask task = createTask("symbol1");
         symbolMap.addSymbol(task, null);
         
@@ -643,12 +642,12 @@
     @Test
     public void testGetSymbols_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        Set<ITaskInstance> expectedSymbols = new HashSet<ITaskInstance>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        Set<ITask> expectedSymbols = new HashSet<ITask>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
             symbolMap.addSymbol(task, "value" + i);
             expectedSymbols.add(task);
@@ -658,5 +657,5 @@
         assertEquals(entryCount, symbolMap.getSymbols().size());
         
-        Iterator<ITaskInstance> iterator = symbolMap.getSymbols().iterator();
+        Iterator<ITask> iterator = symbolMap.getSymbols().iterator();
         for (int i = 0; i < entryCount; i++) {
             assertTrue(iterator.hasNext());
@@ -670,12 +669,12 @@
     @Test
     public void testGetSymbols_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        Set<ITaskInstance> expectedSymbols = new HashSet<ITaskInstance>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        Set<ITask> expectedSymbols = new HashSet<ITask>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
             
             if (i % 7 == 0) {
@@ -692,5 +691,5 @@
         assertEquals(entryCount, symbolMap.getSymbols().size());
         
-        Iterator<ITaskInstance> iterator = symbolMap.getSymbols().iterator();
+        Iterator<ITask> iterator = symbolMap.getSymbols().iterator();
         for (int i = 0; i < entryCount; i++) {
             assertTrue(iterator.hasNext());
@@ -704,12 +703,12 @@
     @Test
     public void testGetSymbols_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        List<ITaskInstance> expectedSymbols = new ArrayList<ITaskInstance>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        List<ITask> expectedSymbols = new ArrayList<ITask>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
             symbolMap.addSymbol(task, "value" + i);
             expectedSymbols.add(task);
@@ -723,5 +722,5 @@
         assertEquals(2 * 150, symbolMap.getSymbols().size());
         
-        Iterator<ITaskInstance> iterator = symbolMap.getSymbols().iterator();
+        Iterator<ITask> iterator = symbolMap.getSymbols().iterator();
         for (int i = 0; i < 2 * 150; i++) {
             assertTrue(iterator.hasNext());
@@ -735,6 +734,6 @@
     @Test
     public void testGetValues_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
             
         assertNotNull(symbolMap.getValues());
@@ -744,8 +743,8 @@
     @Test
     public void testGetValues_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         assertNotNull(symbolMap.getValues());
@@ -756,8 +755,8 @@
     @Test
     public void testGetValues_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
         
         assertNotNull(symbolMap.getValues());
@@ -768,6 +767,6 @@
     @Test
     public void testGetValues_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         Set<String> expectedValues = new HashSet<String>();
         
@@ -775,5 +774,5 @@
         
         for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
             expectedValues.add("value" + i);
         }
@@ -794,6 +793,6 @@
     @Test
     public void testGetValues_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         Set<String> expectedValues = new HashSet<String>();
         
@@ -802,9 +801,9 @@
         for (int i = 0; i < entryCount; i++) {
             if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
                 expectedValues.add("value" + i);
             }
             else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+                symbolMap.addSymbol(createTask("symbol" + i), null);
                 expectedValues.add(null);
             }
@@ -826,6 +825,6 @@
     @Test
     public void testGetValues_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         Set<String> expectedValues = new HashSet<String>();
         
@@ -833,10 +832,10 @@
         
         for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
             expectedValues.add("value" + i);
         }
         
         for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+            symbolMap.removeSymbol(createTask("symbol" + i));
             expectedValues.remove("value" + i);
         }
@@ -857,6 +856,6 @@
     @Test
     public void testClear_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         
         symbolMap.clear();
@@ -866,8 +865,8 @@
     @Test
     public void testClear_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         symbolMap.clear();
@@ -877,8 +876,8 @@
     @Test
     public void testClear_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
         
         symbolMap.clear();
@@ -888,11 +887,11 @@
     @Test
     public void testClear_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
         }
         
@@ -903,15 +902,15 @@
     @Test
     public void testClear_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
             }
         }
@@ -923,15 +922,15 @@
     @Test
     public void testClear_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
@@ -942,9 +941,9 @@
     @Test
     public void testEquals_1() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         
         assertTrue(symbolMap1.equals(symbolMap2));
@@ -953,11 +952,11 @@
     @Test
     public void testEquals_2() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        symbolMap1.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        symbolMap1.addSymbol(createTask("symbol1"), "value1");
         
         assertFalse(symbolMap1.equals(symbolMap2));
@@ -966,11 +965,11 @@
     @Test
     public void testEquals_3() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-            
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
-        
-        ITaskInstance task = createTaskInstance("symbol1");
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+            
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        
+        ITask task = createTask("symbol1");
         symbolMap1.addSymbol(task, "value1");
         symbolMap2.addSymbol(task, "value1");
@@ -981,14 +980,14 @@
     @Test
     public void testEquals_4() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
                 
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         
         int entryCount = 1000;
         
         for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol1");
+            ITask task = createTask("symbol1");
             symbolMap1.addSymbol(task, "value" + i);
             assertFalse(symbolMap1.equals(symbolMap2));
@@ -1000,14 +999,14 @@
     @Test
     public void testEquals_5() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
                
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         
         int entryCount = 1000;
         
         for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+            ITask task = createTask("symbol" + i);
             if (i % 7 == 0) {
                 symbolMap1.addSymbol(task, "value" + i);
@@ -1027,17 +1026,17 @@
     @Test
     public void testEquals_6() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
                 
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolBucketedMap<String>
-            (new TaskInstanceComparator(TaskEquality.SEMANTICALLY_EQUAL));
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolBucketedMap<String>
+            (new TaskComparator(TaskEquality.SEMANTICALLY_EQUAL));
         
         int entryCount = 1000;
         
-        ITaskInstance[] taskInstances = new ITaskInstance[entryCount];
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
-            taskInstances[i] = task;
+        ITask[] tasks = new ITask[entryCount];
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
+            tasks[i] = task;
             symbolMap1.addSymbol(task, "value" + i);
             assertFalse(symbolMap1.equals(symbolMap2));
@@ -1047,7 +1046,7 @@
         
         for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap1.removeSymbol(taskInstances[i]);
+            symbolMap1.removeSymbol(tasks[i]);
             assertFalse(symbolMap1.equals(symbolMap2));
-            symbolMap2.removeSymbol(taskInstances[i]);
+            symbolMap2.removeSymbol(tasks[i]);
             assertTrue(symbolMap1.equals(symbolMap2));
         }
@@ -1057,5 +1056,5 @@
      *
      */
-    private ITaskInstance createTaskInstance(String id) {
+    private ITask createTask(String id) {
         ITask task = tasks.get(id);
         Event event = null;
@@ -1071,10 +1070,12 @@
         }
        
-        return taskFactory.createNewTaskInstance((IEventTask) task, event);
-    }
-
-    private void assertSymbolMapEntries(SymbolMap<ITaskInstance, String> symbolMap,
-                                        ITaskInstance[]                  symbols,
-                                        String[]                         values)
+        taskFactory.createNewTaskInstance((IEventTask) task, event);
+        
+        return task;
+    }
+
+    private void assertSymbolMapEntries(SymbolMap<ITask, String> symbolMap,
+                                        ITask[]                  symbols,
+                                        String[]                 values)
     {
         assertEquals(symbols.length, symbolMap.size());
Index: trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskSymbolIdentityMapTest.java
===================================================================
--- trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskSymbolIdentityMapTest.java	(revision 1845)
+++ trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskSymbolIdentityMapTest.java	(revision 1846)
@@ -33,5 +33,4 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance;
 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory;
 import de.ugoe.cs.autoquest.test.DummyGUIElement;
@@ -62,5 +61,5 @@
     @Test
     public void testSymbolMap_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
         
         assertNotNull(symbolMap);
@@ -72,11 +71,11 @@
         TaskSymbolIdentityMap<String> symbolMap1 = new TaskSymbolIdentityMap<String>();
         
-        ITaskInstance taskInstance = createTaskInstance("symbol");
-        symbolMap1.addSymbol(taskInstance, "value");
-        
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolIdentityMap<String>(symbolMap1);
+        ITask task = createTask("symbol");
+        symbolMap1.addSymbol(task, "value");
+        
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolIdentityMap<String>(symbolMap1);
         
         assertNotNull(symbolMap2);
-        assertSymbolMapEntries(symbolMap2, new ITaskInstance[] { taskInstance },
+        assertSymbolMapEntries(symbolMap2, new ITask[] { task },
                                new String[] { "value" });
     }
@@ -89,11 +88,11 @@
     @Test
     public void testAddSymbol_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        ITaskInstance taskInstance = createTaskInstance("symbol");
-        symbolMap.addSymbol(taskInstance, "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        ITask task = createTask("symbol");
+        symbolMap.addSymbol(task, "value1");
         
         assertNotNull(symbolMap);
-        assertSymbolMapEntries(symbolMap, new ITaskInstance[] { taskInstance },
+        assertSymbolMapEntries(symbolMap, new ITask[] { task },
                                new String[] { "value1" });
     }
@@ -101,13 +100,13 @@
     @Test
     public void testAddSymbol_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        ITaskInstance[] symbols = new ITaskInstance[entryCount];
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        ITask[] symbols = new ITask[entryCount];
         String[] values = new String[entryCount];
         
         for (int i = 0; i < entryCount; i++) {
-            symbols[i] = createTaskInstance("symbol" + i);
+            symbols[i] = createTask("symbol" + i);
             symbolMap.addSymbol(symbols[i], "value" + i);
             values[i] = "value" + i;
@@ -120,13 +119,13 @@
     @Test
     public void testAddSymbol_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        ITaskInstance[] symbols = new ITaskInstance[entryCount];
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        ITask[] symbols = new ITask[entryCount];
         String[] values = new String[entryCount];
         
         for (int i = 0; i < entryCount; i++) {
-            symbols[i] = createTaskInstance("symbol" + i);
+            symbols[i] = createTask("symbol" + i);
             if (i % 7 == 0) {
                 values[i] = "value" + i;
@@ -145,5 +144,5 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testAddSymbol_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         symbolMap.addSymbol(null, null);
@@ -152,5 +151,5 @@
     @Test
     public void testSize_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         assertEquals(0, symbolMap.size());
@@ -159,7 +158,7 @@
     @Test
     public void testSize_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         assertEquals(1, symbolMap.size());
@@ -168,10 +167,10 @@
     @Test
     public void testSize_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
         }
         
@@ -181,14 +180,14 @@
     @Test
     public void testSize_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
             }
         }
@@ -199,14 +198,14 @@
     @Test
     public void testSize_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
@@ -216,5 +215,5 @@
     @Test
     public void testIsEmpty_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         assertTrue(symbolMap.isEmpty());
@@ -223,7 +222,7 @@
     @Test
     public void testIsEmpty_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         assertFalse(symbolMap.isEmpty());
@@ -232,10 +231,10 @@
     @Test
     public void testIsEmpty_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
         }
         
@@ -245,14 +244,14 @@
     @Test
     public void testIsEmpty_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
             }
         }
@@ -263,14 +262,14 @@
     @Test
     public void testIsEmpty_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
@@ -280,30 +279,30 @@
     @Test
     public void testContainsSymbol_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        assertFalse(symbolMap.containsSymbol(createTaskInstance("symbol")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        assertFalse(symbolMap.containsSymbol(createTask("symbol")));
     }
     
     @Test
     public void testContainsSymbol_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
-        
-        assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
+        
+        assertTrue(symbolMap.containsSymbol(createTask("symbol1")));
     }
     
     @Test
     public void testContainsSymbol_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
     }
@@ -311,19 +310,19 @@
     @Test
     public void testContainsSymbol_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
-            }
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
+            }
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
     }
@@ -331,26 +330,26 @@
     @Test
     public void testContainsSymbol_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
         for (int i = 0; i < 150; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            assertFalse(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            assertFalse(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
         
         for (int i = (entryCount - 150); i < entryCount; i++) {
-            assertTrue(symbolMap.containsSymbol(createTaskInstance("symbol" + i)));
+            assertTrue(symbolMap.containsSymbol(createTask("symbol" + i)));
         }
     }
@@ -358,5 +357,5 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testContainsSymbol_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         symbolMap.containsSymbol(null);
@@ -365,39 +364,39 @@
     @Test
     public void testGetValue_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        assertNull(symbolMap.getValue(createTaskInstance("symbol")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        assertNull(symbolMap.getValue(createTask("symbol")));
     }
     
     @Test
     public void testGetValue_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
-        
-        assertNotNull(symbolMap.getValue(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
+        
+        assertNotNull(symbolMap.getValue(createTask("symbol1")));
     }
     
     @Test
     public void testGetValue_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
-        
-        assertNull(symbolMap.getValue(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
+        
+        assertNull(symbolMap.getValue(createTask("symbol1")));
     }
     
     @Test
     public void testGetValue_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
         }
     }
@@ -405,23 +404,23 @@
     @Test
     public void testGetValue_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
-            }
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
-            }
-            else {
-                assertNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
+            }
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
+            }
+            else {
+                assertNull(symbolMap.getValue(createTask("symbol" + i)));
             }
         }
@@ -430,26 +429,26 @@
     @Test
     public void testGetValue_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
         for (int i = 0; i < 150; i++) {
-            assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            assertNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            assertNull(symbolMap.getValue(createTask("symbol" + i)));
         }
         
         for (int i = (entryCount - 150); i < entryCount; i++) {
-            assertNotNull(symbolMap.getValue(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.getValue(createTask("symbol" + i)));
         }
     }
@@ -457,5 +456,5 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testGetValue_7() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         symbolMap.getValue(null);
@@ -464,16 +463,16 @@
     @Test
     public void testRemoveSymbol_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        assertNull(symbolMap.removeSymbol(createTaskInstance("symbol")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        assertNull(symbolMap.removeSymbol(createTask("symbol")));
     }
     
     @Test
     public void testRemoveSymbol_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
-        
-        assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
+        
+        assertNotNull(symbolMap.removeSymbol(createTask("symbol1")));
         assertEquals(0, symbolMap.size());
     }
@@ -481,9 +480,9 @@
     @Test
     public void testRemoveSymbol_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
-        
-        assertNull(symbolMap.removeSymbol(createTaskInstance("symbol1")));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
+        
+        assertNull(symbolMap.removeSymbol(createTask("symbol1")));
         assertEquals(0, symbolMap.size());
     }
@@ -491,14 +490,14 @@
     @Test
     public void testRemoveSymbol_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
         }
         
@@ -508,23 +507,23 @@
     @Test
     public void testRemoveSymbol_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
-            }
-        }
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
-            }
-            else {
-                assertNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
+            }
+        }
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
+            }
+            else {
+                assertNull(symbolMap.removeSymbol(createTask("symbol" + i)));
             }
         }
@@ -535,26 +534,26 @@
     @Test
     public void testRemoveSymbol_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
         for (int i = 0; i < 150; i++) {
-            assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            assertNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            assertNull(symbolMap.removeSymbol(createTask("symbol" + i)));
         }
         
         for (int i = (entryCount - 150); i < entryCount; i++) {
-            assertNotNull(symbolMap.removeSymbol(createTaskInstance("symbol" + i)));
+            assertNotNull(symbolMap.removeSymbol(createTask("symbol" + i)));
         }
         
@@ -564,5 +563,5 @@
     @Test(expected = java.lang.IllegalArgumentException.class)
     public void testRemoveSymbol_7() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         symbolMap.removeSymbol(null);
@@ -571,5 +570,5 @@
     @Test
     public void testGetSymbols_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         assertNotNull(symbolMap.getSymbols());
@@ -579,7 +578,7 @@
     @Test
     public void testGetSymbols_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
          
-        ITaskInstance task = createTaskInstance("symbol1");
+        ITask task = createTask("symbol1");
         symbolMap.addSymbol(task, "value1");
         
@@ -591,7 +590,7 @@
     @Test
     public void testGetSymbols_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        ITaskInstance task = createTaskInstance("symbol1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        ITask task = createTask("symbol1");
         symbolMap.addSymbol(task, null);
         
@@ -603,11 +602,11 @@
     @Test
     public void testGetSymbols_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        Set<ITaskInstance> expectedSymbols = new HashSet<ITaskInstance>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        Set<ITask> expectedSymbols = new HashSet<ITask>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
             symbolMap.addSymbol(task, "value" + i);
             expectedSymbols.add(task);
@@ -617,5 +616,5 @@
         assertEquals(entryCount, symbolMap.getSymbols().size());
         
-        Iterator<ITaskInstance> iterator = symbolMap.getSymbols().iterator();
+        Iterator<ITask> iterator = symbolMap.getSymbols().iterator();
         for (int i = 0; i < entryCount; i++) {
             assertTrue(iterator.hasNext());
@@ -629,11 +628,11 @@
     @Test
     public void testGetSymbols_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        Set<ITaskInstance> expectedSymbols = new HashSet<ITaskInstance>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        Set<ITask> expectedSymbols = new HashSet<ITask>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
             
             if (i % 7 == 0) {
@@ -650,5 +649,5 @@
         assertEquals(entryCount, symbolMap.getSymbols().size());
         
-        Iterator<ITaskInstance> iterator = symbolMap.getSymbols().iterator();
+        Iterator<ITask> iterator = symbolMap.getSymbols().iterator();
         for (int i = 0; i < entryCount; i++) {
             assertTrue(iterator.hasNext());
@@ -662,11 +661,11 @@
     @Test
     public void testGetSymbols_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        List<ITaskInstance> expectedSymbols = new ArrayList<ITaskInstance>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        List<ITask> expectedSymbols = new ArrayList<ITask>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
             symbolMap.addSymbol(task, "value" + i);
             expectedSymbols.add(task);
@@ -680,5 +679,5 @@
         assertEquals(2 * 150, symbolMap.getSymbols().size());
         
-        Iterator<ITaskInstance> iterator = symbolMap.getSymbols().iterator();
+        Iterator<ITask> iterator = symbolMap.getSymbols().iterator();
         for (int i = 0; i < 2 * 150; i++) {
             assertTrue(iterator.hasNext());
@@ -692,5 +691,5 @@
     @Test
     public void testGetValues_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
             
         assertNotNull(symbolMap.getValues());
@@ -700,7 +699,7 @@
     @Test
     public void testGetValues_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         assertNotNull(symbolMap.getValues());
@@ -711,7 +710,7 @@
     @Test
     public void testGetValues_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
         
         assertNotNull(symbolMap.getValues());
@@ -722,5 +721,5 @@
     @Test
     public void testGetValues_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
         Set<String> expectedValues = new HashSet<String>();
         
@@ -728,5 +727,5 @@
         
         for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
             expectedValues.add("value" + i);
         }
@@ -747,5 +746,5 @@
     @Test
     public void testGetValues_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
         Set<String> expectedValues = new HashSet<String>();
         
@@ -754,9 +753,9 @@
         for (int i = 0; i < entryCount; i++) {
             if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
                 expectedValues.add("value" + i);
             }
             else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+                symbolMap.addSymbol(createTask("symbol" + i), null);
                 expectedValues.add(null);
             }
@@ -778,5 +777,5 @@
     @Test
     public void testGetValues_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
         Set<String> expectedValues = new HashSet<String>();
         
@@ -784,10 +783,10 @@
         
         for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
             expectedValues.add("value" + i);
         }
         
         for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+            symbolMap.removeSymbol(createTask("symbol" + i));
             expectedValues.remove("value" + i);
         }
@@ -808,5 +807,5 @@
     @Test
     public void testClear_1() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
         
         symbolMap.clear();
@@ -816,7 +815,7 @@
     @Test
     public void testClear_2() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), "value1");
         
         symbolMap.clear();
@@ -826,7 +825,7 @@
     @Test
     public void testClear_3() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap.addSymbol(createTaskInstance("symbol1"), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap.addSymbol(createTask("symbol1"), null);
         
         symbolMap.clear();
@@ -836,10 +835,10 @@
     @Test
     public void testClear_4() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
         }
         
@@ -850,14 +849,14 @@
     @Test
     public void testClear_5() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            if (i % 7 == 0) {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-            }
-            else {
-                symbolMap.addSymbol(createTaskInstance("symbol" + i), null);
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            if (i % 7 == 0) {
+                symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+            }
+            else {
+                symbolMap.addSymbol(createTask("symbol" + i), null);
             }
         }
@@ -869,14 +868,14 @@
     @Test
     public void testClear_6() {
-        SymbolMap<ITaskInstance, String> symbolMap = new TaskSymbolIdentityMap<String>();
-        
-        int entryCount = 2000;
-        
-        for (int i = 0; i < entryCount; i++) {
-            symbolMap.addSymbol(createTaskInstance("symbol" + i), "value" + i);
-        }
-        
-        for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap.removeSymbol(createTaskInstance("symbol" + i));
+        SymbolMap<ITask, String> symbolMap = new TaskSymbolIdentityMap<String>();
+        
+        int entryCount = 2000;
+        
+        for (int i = 0; i < entryCount; i++) {
+            symbolMap.addSymbol(createTask("symbol" + i), "value" + i);
+        }
+        
+        for (int i = 150; i < (entryCount - 150); i++) {
+            symbolMap.removeSymbol(createTask("symbol" + i));
         }
         
@@ -887,7 +886,7 @@
     @Test
     public void testEquals_1() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
-        
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+        
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
         
         assertTrue(symbolMap1.equals(symbolMap2));
@@ -896,9 +895,9 @@
     @Test
     public void testEquals_2() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
-            
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
-            
-        symbolMap1.addSymbol(createTaskInstance("symbol1"), "value1");
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+            
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
+            
+        symbolMap1.addSymbol(createTask("symbol1"), "value1");
         
         assertFalse(symbolMap1.equals(symbolMap2));
@@ -907,9 +906,9 @@
     @Test
     public void testEquals_3() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
-            
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
-        
-        ITaskInstance task = createTaskInstance("symbol1");
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+            
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
+        
+        ITask task = createTask("symbol1");
         symbolMap1.addSymbol(task, "value1");
         symbolMap2.addSymbol(task, "value1");
@@ -920,12 +919,12 @@
     @Test
     public void testEquals_4() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
                 
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
         
         int entryCount = 1000;
         
         for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol1");
+            ITask task = createTask("symbol1");
             symbolMap1.addSymbol(task, "value" + i);
             assertFalse(symbolMap1.equals(symbolMap2));
@@ -937,12 +936,12 @@
     @Test
     public void testEquals_5() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
                
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
         
         int entryCount = 1000;
         
         for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
+            ITask task = createTask("symbol" + i);
             if (i % 7 == 0) {
                 symbolMap1.addSymbol(task, "value" + i);
@@ -962,15 +961,15 @@
     @Test
     public void testEquals_6() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
                 
-        SymbolMap<ITaskInstance, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap2 = new TaskSymbolIdentityMap<String>();
         
         int entryCount = 1000;
         
-        ITaskInstance[] taskInstances = new ITaskInstance[entryCount];
-        
-        for (int i = 0; i < entryCount; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
-            taskInstances[i] = task;
+        ITask[] tasks = new ITask[entryCount];
+        
+        for (int i = 0; i < entryCount; i++) {
+            ITask task = createTask("symbol" + i);
+            tasks[i] = task;
             symbolMap1.addSymbol(task, "value" + i);
             assertFalse(symbolMap1.equals(symbolMap2));
@@ -980,7 +979,7 @@
         
         for (int i = 150; i < (entryCount - 150); i++) {
-            symbolMap1.removeSymbol(taskInstances[i]);
+            symbolMap1.removeSymbol(tasks[i]);
             assertFalse(symbolMap1.equals(symbolMap2));
-            symbolMap2.removeSymbol(taskInstances[i]);
+            symbolMap2.removeSymbol(tasks[i]);
             assertTrue(symbolMap1.equals(symbolMap2));
         }
@@ -989,13 +988,13 @@
     @Test
     public void testPerformance_Contains_1() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
         int mapSize = 100000;
         int noOfLookups = 1000000;
         
-        ITaskInstance[] taskInstances = new ITaskInstance[mapSize];
+        ITask[] tasks = new ITask[mapSize];
         
         for (int i = 0; i < mapSize; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
-            taskInstances[i] = task;
+            ITask task = createTask("symbol" + i);
+            tasks[i] = task;
             symbolMap1.addSymbol(task, "value" + i);
         }
@@ -1003,5 +1002,5 @@
         long start = System.currentTimeMillis();
         for (int i = 0; i < noOfLookups; i++) {
-            symbolMap1.containsSymbol(taskInstances[noOfLookups % mapSize]);
+            symbolMap1.containsSymbol(tasks[noOfLookups % mapSize]);
         }
         
@@ -1012,13 +1011,13 @@
     @Test
     public void testPerformance_GetValue_1() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
         int mapSize = 100000;
         int noOfLookups = 1000000;
         
-        ITaskInstance[] taskInstances = new ITaskInstance[mapSize];
+        ITask[] tasks = new ITask[mapSize];
         
         for (int i = 0; i < mapSize; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
-            taskInstances[i] = task;
+            ITask task = createTask("symbol" + i);
+            tasks[i] = task;
             symbolMap1.addSymbol(task, "value" + i);
         }
@@ -1026,5 +1025,5 @@
         long start = System.currentTimeMillis();
         for (int i = 0; i < noOfLookups; i++) {
-            symbolMap1.getValue(taskInstances[noOfLookups % mapSize]);
+            symbolMap1.getValue(tasks[noOfLookups % mapSize]);
         }
         
@@ -1036,13 +1035,13 @@
     @Test
     public void testPerformance_AddRemove_1() {
-        SymbolMap<ITaskInstance, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
+        SymbolMap<ITask, String> symbolMap1 = new TaskSymbolIdentityMap<String>();
         int mapSize = 100000;
         int noOfLookups = 1000000;
         
-        ITaskInstance[] taskInstances = new ITaskInstance[mapSize];
+        ITask[] tasks = new ITask[mapSize];
         
         for (int i = 0; i < mapSize; i++) {
-            ITaskInstance task = createTaskInstance("symbol" + i);
-            taskInstances[i] = task;
+            ITask task = createTask("symbol" + i);
+            tasks[i] = task;
             symbolMap1.addSymbol(task, "value" + i);
         }
@@ -1050,5 +1049,5 @@
         long start = System.currentTimeMillis();
         for (int i = 0; i < noOfLookups; i++) {
-            ITaskInstance task = taskInstances[noOfLookups % mapSize];
+            ITask task = tasks[noOfLookups % mapSize];
             symbolMap1.addSymbol(task, symbolMap1.removeSymbol(task));
         }
@@ -1061,5 +1060,5 @@
      *
      */
-    private ITaskInstance createTaskInstance(String id) {
+    private ITask createTask(String id) {
         ITask task = tasks.get(id);
         Event event = null;
@@ -1075,10 +1074,12 @@
         }
         
-        return taskFactory.createNewTaskInstance((IEventTask) task, event);
-    }
-
-    private void assertSymbolMapEntries(SymbolMap<ITaskInstance, String> symbolMap,
-                                        ITaskInstance[]                  symbols,
-                                        String[]                         values)
+        taskFactory.createNewTaskInstance((IEventTask) task, event);
+        
+        return task;
+    }
+
+    private void assertSymbolMapEntries(SymbolMap<ITask, String> symbolMap,
+                                        ITask[]                  symbols,
+                                        String[]                 values)
     {
         assertEquals(symbols.length, symbolMap.size());
