Index: /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsAndEndsWithEventTest.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsAndEndsWithEventTest.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsAndEndsWithEventTest.java	(revision 1152)
@@ -17,7 +17,7 @@
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.MOUSE_CLICK;
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.ITERATION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SELECTION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SEQUENCE;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.ITERATION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SELECTION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SEQUENCE;
 import static org.fest.assertions.api.Assertions.assertThat;
 
Index: /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsEventTest.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsEventTest.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsEventTest.java	(revision 1152)
@@ -16,7 +16,7 @@
 
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.ITERATION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SELECTION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SEQUENCE;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.ITERATION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SELECTION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SEQUENCE;
 import static org.fest.assertions.api.Assertions.assertThat;
 
Index: /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsPatternTest.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsPatternTest.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/contains/ContainsPatternTest.java	(revision 1152)
@@ -16,7 +16,7 @@
 
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.ITERATION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SELECTION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SEQUENCE;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.ITERATION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SELECTION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SEQUENCE;
 import static org.fest.assertions.api.Assertions.assertThat;
 
Index: /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/endswith/EndsWithEventTest.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/endswith/EndsWithEventTest.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/endswith/EndsWithEventTest.java	(revision 1152)
@@ -16,7 +16,7 @@
 
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.ITERATION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SELECTION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SEQUENCE;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.ITERATION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SELECTION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SEQUENCE;
 import static org.fest.assertions.api.Assertions.assertThat;
 
Index: /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/endswith/EndsWithPatternTest.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/endswith/EndsWithPatternTest.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/endswith/EndsWithPatternTest.java	(revision 1152)
@@ -17,7 +17,7 @@
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.MOUSE_CLICK;
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.ITERATION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SELECTION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SEQUENCE;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.ITERATION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SELECTION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SEQUENCE;
 import static org.fest.assertions.api.Assertions.assertThat;
 
Index: /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/testutil/GenerateTaskTreeUtil.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/testutil/GenerateTaskTreeUtil.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation-test/src/main/java/de/ugoe/cs/autoquest/usability/testutil/GenerateTaskTreeUtil.java	(revision 1152)
@@ -24,5 +24,5 @@
 import de.ugoe.cs.autoquest.commands.usability.CMDgenerateTaskTree;
 import de.ugoe.cs.autoquest.plugin.jfc.commands.CMDparseJFC;
-import de.ugoe.cs.autoquest.tasktrees.TaskTreeInstantiator;
+import de.ugoe.cs.autoquest.tasktrees.TaskTreeDecoder;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
@@ -48,5 +48,5 @@
     public static ITaskTree getTaskTreeFromSpec(String spec) {
         TaskTreeNodeFactory factory = new TaskTreeNodeFactory();
-        ITaskTreeNode taskTree = new TaskTreeInstantiator(new TaskTreeNodeFactory(), new TaskTreeBuilder()).instantiateTaskTree(spec);
+        ITaskTreeNode taskTree = new TaskTreeDecoder(new TaskTreeNodeFactory(), new TaskTreeBuilder()).instantiateTaskTree(spec);
         return factory.createTaskTree(taskTree);
     }
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/CMDperformUsabilityEvaluation.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/CMDperformUsabilityEvaluation.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/CMDperformUsabilityEvaluation.java	(revision 1152)
@@ -20,5 +20,5 @@
 
 import de.ugoe.cs.autoquest.CommandHelpers;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.rules.EmptyRuleset;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityResult;
@@ -50,8 +50,8 @@
     public void run(List<Object> parameters) {
         String nameOfTaskTree = getTaskTreeParameter(parameters);
-        Optional<ITaskTree> taskTree = getTaskTreeFromDataContainer(nameOfTaskTree);
-        if(taskTree.isPresent()) {
+        Optional<ITaskModel> taskModel = getTaskModelFromDataContainer(nameOfTaskTree);
+        if (taskModel.isPresent()) {
             UsabilityRuleset ruleset = getUsabilityRuleset();
-            UsabilityResult result = UsabilityEvaluator.evaluate(taskTree.get()).using(ruleset);
+            UsabilityResult result = UsabilityEvaluator.evaluate(taskModel.get()).using(ruleset);
             String evaluationResultParameterName = getEvaluationResultParameter(parameters);
             storeUsabilityResultInDataContainer(evaluationResultParameterName, result);
@@ -99,12 +99,12 @@
      * @return
      */
-    private Optional<ITaskTree> getTaskTreeFromDataContainer(String nameOfTaskTree) {
+    private Optional<ITaskModel> getTaskModelFromDataContainer(String nameOfTaskTree) {
         Object dataObject = GlobalDataContainer.getInstance().getData(nameOfTaskTree);
         if(dataObject != null) {
-            if(dataObject instanceof ITaskTree) {
-                ITaskTree taskTree = (ITaskTree) dataObject;
+            if(dataObject instanceof ITaskModel) {
+                ITaskModel taskTree = (ITaskModel) dataObject;
                 return Optional.of(taskTree);
             } else {
-                CommandHelpers.objectNotType(nameOfTaskTree, "ITaskTree");
+                CommandHelpers.objectNotType(nameOfTaskTree, "ITaskModel");
                 return Optional.absent();
             }
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/UsabilityEvaluator.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/UsabilityEvaluator.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/UsabilityEvaluator.java	(revision 1152)
@@ -19,5 +19,5 @@
 import com.google.common.base.Optional;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.result.UsabilityDefect;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityResult;
@@ -35,8 +35,8 @@
 public class UsabilityEvaluator {
     
-    private ITaskTree taskTree;
+    private ITaskModel taskModel;
 
-    private UsabilityEvaluator(ITaskTree taskTree) {
-        this.taskTree = taskTree;
+    private UsabilityEvaluator(ITaskModel taskTree) {
+        this.taskModel = taskTree;
     }
     
@@ -49,5 +49,5 @@
      * @return
      */
-    public static UsabilityEvaluator evaluate(ITaskTree taskTree) {
+    public static UsabilityEvaluator evaluate(ITaskModel taskTree) {
         return new UsabilityEvaluator(taskTree);
     }
@@ -62,5 +62,5 @@
      */
     public UsabilityResult using(UsabilityRuleset ruleset) {
-        Console.traceln(Level.INFO, "evaluating usability of task tree " + this.taskTree);
+        Console.traceln(Level.INFO, "evaluating usability of task tree " + this.taskModel);
         EvaluationMethodCaller evaluationMethodCaller = new EvaluationMethodCaller();
         UsabilityResult result = new UsabilityResult();
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/UsabilityMetricsRuleset.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/UsabilityMetricsRuleset.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/UsabilityMetricsRuleset.java	(revision 1152)
@@ -19,5 +19,5 @@
 import com.google.common.collect.Lists;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.rules.metrics.NoLetterOrDigitRatioMetric;
 import de.ugoe.cs.autoquest.usability.rules.metrics.TextInputEntryRepetitionsMetric;
@@ -41,9 +41,9 @@
      *
      */
-    private UsabilityMetricsRuleset(ITaskTree taskTree) {
+    private UsabilityMetricsRuleset(ITaskModel taskModel) {
         this.metrics = Lists.newArrayList();
-        metrics.add(new NoLetterOrDigitRatioMetric(taskTree));
-        metrics.add(new TextInputEntryRepetitionsMetric(taskTree));
-        metrics.add(new TextInputRatioMetric(taskTree));
+        metrics.add(new NoLetterOrDigitRatioMetric(taskModel));
+        metrics.add(new TextInputEntryRepetitionsMetric(taskModel));
+        metrics.add(new TextInputRatioMetric(taskModel));
     }
 
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/UsabilityRule.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/UsabilityRule.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/UsabilityRule.java	(revision 1152)
@@ -17,5 +17,5 @@
 import com.google.common.base.Optional;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
 import de.ugoe.cs.autoquest.usability.result.UsabilityDefect;
@@ -30,5 +30,5 @@
 public abstract class UsabilityRule {
     
-    protected final ITaskTree taskTree;
+    protected final ITaskModel taskModel;
     
     protected String name;
@@ -42,6 +42,6 @@
      *
      */
-    public UsabilityRule(ITaskTree taskTree) {
-        this.taskTree = taskTree;
+    public UsabilityRule(ITaskModel taskModel) {
+        this.taskModel = taskModel;
     }
     
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/NoLetterOrDigitRatioMetric.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/NoLetterOrDigitRatioMetric.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/NoLetterOrDigitRatioMetric.java	(revision 1152)
@@ -25,6 +25,6 @@
 import com.google.common.collect.Multiset;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
 import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver;
@@ -34,5 +34,5 @@
 import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
 import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter;
 
 /**
@@ -52,6 +52,6 @@
      * @param taskTree
      */
-    public NoLetterOrDigitRatioMetric(ITaskTree taskTree) {
-        super(taskTree);
+    public NoLetterOrDigitRatioMetric(ITaskModel taskModel) {
+        super(taskModel);
         this.name = "NoLetterOrDigitRatio";
         this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName());
@@ -64,14 +64,14 @@
     public Optional<UsabilityDefect> calculate() {
         FilterResult textInputEvents = extractNodesFromTaskTree();
-        float evaluationMetric = calculateEvaluationMetric(textInputEvents.nodesMatchedFilter());
+        float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter());
         return this.defect.isPresent(evaluationMetric);
     }
     
     private FilterResult extractNodesFromTaskTree() {
-        return new TaskTreeFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
-            .from(this.taskTree);
+        return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
+            .from(this.taskModel);
     }
     
-    private float calculateEvaluationMetric(List<ITaskTreeNode> textInputEvents) {
+    private float calculateEvaluationMetric(List<ITask> textInputEvents) {
         Multiset<String> enteredTextFragments =
             aggregateEnteredTextFromTextInputs(textInputEvents);
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java	(revision 1152)
@@ -25,6 +25,6 @@
 import com.google.common.collect.Multisets;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
 import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver;
@@ -34,5 +34,5 @@
 import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
 import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter;
 
 /**
@@ -52,6 +52,6 @@
      * @param taskTree
      */
-    public TextInputEntryRepetitionsMetric(ITaskTree taskTree) {
-        super(taskTree);
+    public TextInputEntryRepetitionsMetric(ITaskModel taskModel) {
+        super(taskModel);
         this.name = "TextInputEntryRepetitions";
         this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName());
@@ -64,14 +64,14 @@
     public Optional<UsabilityDefect> calculate() {
         FilterResult textInputEvents = extractNodesFromTaskTree();
-        float evaluationMetric = calculateEvaluationMetric(textInputEvents.nodesMatchedFilter());
+        float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter());
         return this.defect.isPresent(evaluationMetric);
     }
     
     private FilterResult extractNodesFromTaskTree() {
-        return new TaskTreeFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
-            .from(this.taskTree);
+        return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
+            .from(this.taskModel);
     }
     
-    private float calculateEvaluationMetric(List<ITaskTreeNode> textInputEvents) {
+    private float calculateEvaluationMetric(List<ITask> textInputEvents) {
         Multiset<String> enteredTextFragments =
             aggregateEnteredTextFromTextInputs(textInputEvents);
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputRatioMetric.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputRatioMetric.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputRatioMetric.java	(revision 1152)
@@ -23,6 +23,7 @@
 import com.google.common.collect.Iterables;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
 import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver;
@@ -32,5 +33,5 @@
 import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
 import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter;
 
 /**
@@ -50,6 +51,6 @@
      * @param taskTree
      */
-    public TextInputRatioMetric(ITaskTree taskTree) {
-        super(taskTree);
+    public TextInputRatioMetric(ITaskModel taskModel) {
+        super(taskModel);
         this.name = "TextInputRatio";
         this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName());
@@ -62,27 +63,26 @@
     public Optional<UsabilityDefect> calculate() {
         FilterResult textInputEvents = extractNodesFromTaskTree();
-        float evaluationMetric = calculateEvaluationMetric(textInputEvents.nodesMatchedFilter(), textInputEvents.nodesNotMatchedFilter());
+        float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter(), textInputEvents.tasksNotMatchedFilter());
         return this.defect.isPresent(evaluationMetric);
     }
     
     private FilterResult extractNodesFromTaskTree() {
-        return new TaskTreeFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
-            .from(this.taskTree);
+        return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
+            .from(this.taskModel);
     }
     
-    private float calculateEvaluationMetric(List<ITaskTreeNode> textInputEvents, List<ITaskTreeNode> nonTextInputEvents) {
+    private float calculateEvaluationMetric(List<ITask> textInputEvents, List<ITask> nonTextInputEvents) {
         float numberOfTextInputEvents = textInputEvents.size();
-        float numberOfNonTextInputEvents = nrOfEventNodesNotMatchedFilter(nonTextInputEvents);
+        float numberOfNonTextInputEvents = nrOfEventTasksNotMatchedFilter(nonTextInputEvents);
         return numberOfTextInputEvents / (numberOfTextInputEvents + numberOfNonTextInputEvents);
     }
 
-    private int nrOfEventNodesNotMatchedFilter(List<ITaskTreeNode> nonTextInputEvents) {
+    private int nrOfEventTasksNotMatchedFilter(List<ITask> nonTextInputEvents) {
         return Iterables.size(Iterables.filter(nonTextInputEvents,
-                                               new Predicate<ITaskTreeNode>() {
+                                               new Predicate<ITask>() {
 
                                                    @Override
-                                                   public boolean apply(ITaskTreeNode node) {
-                                                       return (node.getChildren() == null) ||
-                                                           (node.getChildren().size() == 0);
+                                                   public boolean apply(ITask task) {
+                                                       return task instanceof IEventTask;
                                                    }
                                                }));
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/LongFormUsageDefect.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/LongFormUsageDefect.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/LongFormUsageDefect.java	(revision 1152)
@@ -18,10 +18,10 @@
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.SCROLL;
 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.ITERATION;
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SEQUENCE;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.ITERATION;
+import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SEQUENCE;
 
 import com.google.common.base.Optional;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
 import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver;
@@ -48,6 +48,6 @@
      * @param taskTree
      */
-    public LongFormUsageDefect(ITaskTree taskTree) {
-        super(taskTree);
+    public LongFormUsageDefect(ITaskModel taskModel) {
+        super(taskModel);
         this.name = "LongFormUsagePattern";
         this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName());
@@ -73,5 +73,5 @@
     public Optional<UsabilityDefect> check() {
         Optional<UsabilityDefect> present = Optional.absent();
-        if(this.longFormUsagePattern.containedIn(taskTree)) {
+        if(this.longFormUsagePattern.containedIn(taskModel)) {
             present = Optional.of(this.defect);
         }
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePattern.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePattern.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePattern.java	(revision 1152)
@@ -22,9 +22,9 @@
 import com.google.common.collect.Iterables;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeFilter;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter;
 
 /**
@@ -37,7 +37,7 @@
 public class UsagePattern {
     
-    private TaskTreeFilter taskTreeFilter = new TaskTreeFilter(new IterativeDFSFilterStrategy());
+    private TaskModelFilter taskTreeFilter = new TaskModelFilter(new IterativeDFSFilterStrategy());
     
-    private TaskTreeNodeTypeFilter concernedNode;
+    private TaskTypeFilter concernedTask;
 
     private List<UsagePatternVisitor> patternVisitors;
@@ -53,15 +53,15 @@
      * @param eventType
      */
-    public UsagePattern(TaskTreeNodeTypeFilter concernedNode,
+    public UsagePattern(TaskTypeFilter concernedNode,
                         UsagePatternVisitor... patternVisitor)
     {
         this.patternVisitors = Arrays.asList(patternVisitor);
-        this.concernedNode = concernedNode;
+        this.concernedTask = concernedNode;
     }
 
-    public boolean containedIn(ITaskTree taskTree) {
-        List<ITaskTreeNode> allConcernedNodes = filterAllConcernedNodeFrom(taskTree);
-        for(ITaskTreeNode concernedNode : allConcernedNodes) {
-            applyAllVisitors(concernedNode);
+    public boolean containedIn(ITaskModel taskModel) {
+        List<ITask> allConcernedTasks = filterAllConcernedTasksFrom(taskModel);
+        for(ITask concernedTask : allConcernedTasks) {
+            applyAllVisitors(concernedTask);
             if(allVisitorsArePresent()) {
                 this.present = true;
@@ -75,14 +75,14 @@
     }
 
-    private void applyAllVisitors(ITaskTreeNode concernedNode) {
+    private void applyAllVisitors(ITask concernedTask) {
         Optional<UsagePatternVisitor> previousVisitor = Optional.absent();
         for(UsagePatternVisitor visitor : patternVisitors) {
             if(appliedOnSelectionNode(previousVisitor)) {
-                for(ITaskTreeNode selectionNode : previousVisitor.get().getRetainedSelectionNodes()) {
-                    selectionNode.accept(visitor);
+                for(ITask selection : previousVisitor.get().getRetainedSelectionNodes()) {
+                    selection.accept(visitor);
                 }
             } else {
                 previousVisitor = Optional.of(visitor);
-                concernedNode.accept(visitor);
+                concernedTask.accept(visitor);
             }
         }
@@ -101,6 +101,6 @@
      * @return
      */
-    private List<ITaskTreeNode> filterAllConcernedNodeFrom(ITaskTree taskTree) {
-        return this.taskTreeFilter.filterByNodeType(this.concernedNode).from(taskTree).nodesMatchedFilter();
+    private List<ITask> filterAllConcernedTasksFrom(ITaskModel taskModel) {
+        return this.taskTreeFilter.filterByNodeType(this.concernedTask).from(taskModel).tasksMatchedFilter();
     }
     
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternBuilder.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternBuilder.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternBuilder.java	(revision 1152)
@@ -22,5 +22,5 @@
 import de.ugoe.cs.autoquest.usability.rules.patterns.visitors.StartsWithPatternVisitor;
 import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter;
 
 /**
@@ -33,5 +33,5 @@
 public class UsagePatternBuilder {
 
-    protected TaskTreeNodeTypeFilter concernedNode;
+    protected TaskTypeFilter concernedNode;
     
     protected EventTypeFilter startsWithEvent;
@@ -55,5 +55,5 @@
      * @return
      */
-    public SpecifyPatternStep concernedNode(TaskTreeNodeTypeFilter concernedNode) {
+    public SpecifyPatternStep concernedNode(TaskTypeFilter concernedNode) {
         this.concernedNode = concernedNode;
         return new SpecifyPatternStep();
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternVisitor.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternVisitor.java	(revision 1152)
@@ -26,7 +26,6 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter;
 import de.ugoe.cs.autoquest.usability.util.PatternsVisitorUtil;
@@ -47,5 +46,5 @@
     protected boolean present = false;
     
-    protected List<ITaskTreeNode> retainedChildrenNodesFromSelectionNodes = Lists.newArrayList();
+    protected List<ITask> retainedChildrenTasksFromSelections = Lists.newArrayList();
     
     /* (non-Javadoc)
@@ -85,15 +84,15 @@
             this.present = patternIsPresent();
         } else {
-            ITaskTree taskTree = PatternsVisitorUtil.createTaskTreeFromNode(selection);
-            this.present = containedPattern.containedIn(taskTree);  
+            ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(selection);
+            this.present = containedPattern.containedIn(taskModel);  
         }
     }
 
-    protected void retainNodesWherePatternIsPresent(List<ITaskTreeNode> children) {
-        for(ITaskTreeNode node : children) {
+    protected void retainNodesWherePatternIsPresent(List<ITask> children) {
+        for(ITask task : children) {
             this.present = false;
-            node.accept(this);
+            task.accept(this);
             if(this.present) {
-                this.retainedChildrenNodesFromSelectionNodes.add(node);
+                this.retainedChildrenTasksFromSelections.add(task);
             }
         }
@@ -101,5 +100,5 @@
     
     private boolean patternIsPresent() {
-        return !this.retainedChildrenNodesFromSelectionNodes.isEmpty();
+        return !this.retainedChildrenTasksFromSelections.isEmpty();
     }
     
@@ -122,5 +121,5 @@
      */
     public void reset() {
-        this.retainedChildrenNodesFromSelectionNodes.clear();
+        this.retainedChildrenTasksFromSelections.clear();
         this.present = false;
     }
@@ -144,6 +143,6 @@
      * @return
      */
-    public List<ITaskTreeNode> getRetainedSelectionNodes() {
-        return this.retainedChildrenNodesFromSelectionNodes;
+    public List<ITask> getRetainedSelectionNodes() {
+        return this.retainedChildrenTasksFromSelections;
     }
     
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsEventVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsEventVisitor.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsEventVisitor.java	(revision 1152)
@@ -19,5 +19,5 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor;
 import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter;
@@ -47,5 +47,5 @@
      */
     public void visit(IIteration iteration) {
-        checkAllChildrenAndReturnIfPatternIsPresent(iteration.getChildren());
+        checkTaskAndReturnIfPatternIsPresent(iteration.getMarkedTask());
     }
 
@@ -57,8 +57,7 @@
     }
     
-    private void checkAllChildrenAndReturnIfPatternIsPresent(List<ITaskTreeNode> children) {
-        for(ITaskTreeNode node : children) {
-            node.accept(this);
-            if(this.present) {
+    private void checkAllChildrenAndReturnIfPatternIsPresent(List<ITask> children) {
+        for (ITask task : children) {
+            if (checkTaskAndReturnIfPatternIsPresent(task)) {
                 break;
             }
@@ -66,3 +65,10 @@
     }
 
+    /**
+     *
+     */
+    private boolean checkTaskAndReturnIfPatternIsPresent(ITask task) {
+        task.accept(this);
+        return this.present;
+    }
 }
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsPatternVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsPatternVisitor.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsPatternVisitor.java	(revision 1152)
@@ -15,8 +15,9 @@
 package de.ugoe.cs.autoquest.usability.rules.patterns.visitors;
 
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePattern;
 import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor;
@@ -47,5 +48,5 @@
      */
     public void visit(IIteration iteration) {
-        checkAllChildrenAndReturnIfPatternIsPresent(iteration);
+        checkTaskAndReturnIfPatternIsPresent(iteration.getMarkedTask());
 
     }
@@ -59,14 +60,7 @@
     }
     
-    private void checkAllChildrenAndReturnIfPatternIsPresent(ITaskTreeNode node) {
-        for(ITaskTreeNode child : node.getChildren()) {
-            ITaskTree taskTree;
-            if(isEvent(child)) {
-                taskTree = PatternsVisitorUtil.createTaskTreeFromNode(node);
-            } else {
-                taskTree = PatternsVisitorUtil.createTaskTreeFromNode(child);
-            }
-            this.present = containedPattern.containedIn(taskTree); 
-            if(this.present) {
+    private void checkAllChildrenAndReturnIfPatternIsPresent(ISequence sequence) {
+        for (ITask child : sequence.getChildren()) {
+            if(checkTaskAndReturnIfPatternIsPresent(child)) {
                 break;
             }
@@ -74,6 +68,11 @@
     }
     
-    private boolean isEvent(ITaskTreeNode firstNode) {
-        return firstNode.getChildren().isEmpty();
+    private boolean checkTaskAndReturnIfPatternIsPresent(ITask task) {
+        ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(task);
+        this.present = containedPattern.containedIn(taskModel); 
+    }
+    
+    private boolean isEvent(ITask task) {
+        return task instanceof IEventTask;
     }
 
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithEventVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithEventVisitor.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithEventVisitor.java	(revision 1152)
@@ -45,5 +45,5 @@
      */
     public void visit(IIteration iteration) {
-        PatternsVisitorUtil.lastNodeOf(iteration.getChildren()).accept(this);
+        iteration.getMarkedTask().accept(this);
     }
 
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithPatternVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithPatternVisitor.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithPatternVisitor.java	(revision 1152)
@@ -15,8 +15,9 @@
 package de.ugoe.cs.autoquest.usability.rules.patterns.visitors;
 
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePattern;
 import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor;
@@ -47,6 +48,6 @@
      */
     public void visit(IIteration iteration) {
-        ITaskTree taskTree = PatternsVisitorUtil.createTaskTreeFromNode(iteration);
-        this.present = containedPattern.containedIn(taskTree); 
+        ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(iteration);
+        this.present = containedPattern.containedIn(taskModel); 
 
     }
@@ -56,16 +57,16 @@
      */
     public void visit(ISequence sequence) {
-        ITaskTreeNode lastNode = PatternsVisitorUtil.lastNodeOf(sequence.getChildren());
-        ITaskTree taskTree;
-        if(isEvent(lastNode)) {
-            taskTree = PatternsVisitorUtil.createTaskTreeFromNode(sequence);
+        ITask lastTask = PatternsVisitorUtil.lastNodeOf(sequence.getChildren());
+        ITaskModel taskModel;
+        if(isEvent(lastTask)) {
+            taskModel = PatternsVisitorUtil.createTaskModelFromNode(sequence);
         } else {
-            taskTree = PatternsVisitorUtil.createTaskTreeFromNode(lastNode);
+            taskModel = PatternsVisitorUtil.createTaskModelFromNode(lastTask);
         }
-        this.present = containedPattern.containedIn(taskTree);      
+        this.present = containedPattern.containedIn(taskModel);      
     }
 
-    private boolean isEvent(ITaskTreeNode firstNode) {
-        return firstNode.getChildren().isEmpty();
+    private boolean isEvent(ITask lastTask) {
+        return lastTask instanceof IEventTask;
     }
 
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithEventVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithEventVisitor.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithEventVisitor.java	(revision 1152)
@@ -45,5 +45,5 @@
      */
     public void visit(IIteration iteration) {
-        PatternsVisitorUtil.firstNodeOf(iteration.getChildren()).accept(this);
+        iteration.getMarkedTask().accept(this);
     }
     
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithPatternVisitor.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithPatternVisitor.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithPatternVisitor.java	(revision 1152)
@@ -15,8 +15,9 @@
 package de.ugoe.cs.autoquest.usability.rules.patterns.visitors;
 
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePattern;
 import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor;
@@ -47,6 +48,6 @@
      */
     public void visit(IIteration iteration) {
-        ITaskTree taskTree = PatternsVisitorUtil.createTaskTreeFromNode(iteration);
-        this.present = containedPattern.containedIn(taskTree);  
+        ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(iteration);
+        this.present = containedPattern.containedIn(taskModel);  
     }
 
@@ -55,16 +56,16 @@
      */
     public void visit(ISequence sequence) {
-        ITaskTreeNode firstNode = PatternsVisitorUtil.firstNodeOf(sequence.getChildren());
-        ITaskTree taskTree;
-        if(isEvent(firstNode)) {
-            taskTree = PatternsVisitorUtil.createTaskTreeFromNode(sequence);
+        ITask firstTask = PatternsVisitorUtil.firstNodeOf(sequence.getChildren());
+        ITaskModel taskModel;
+        if(isEvent(firstTask)) {
+            taskModel = PatternsVisitorUtil.createTaskModelFromNode(sequence);
         } else {
-            taskTree = PatternsVisitorUtil.createTaskTreeFromNode(firstNode);
+            taskModel = PatternsVisitorUtil.createTaskModelFromNode(firstTask);
         }
-        this.present = containedPattern.containedIn(taskTree);      
+        this.present = containedPattern.containedIn(taskModel);      
     }
 
-    private boolean isEvent(ITaskTreeNode firstNode) {
-        return firstNode.getChildren().isEmpty();
+    private boolean isEvent(ITask firstTask) {
+        return firstTask instanceof IEventTask;
     }
 
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/FilterResult.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/FilterResult.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/FilterResult.java	(revision 1152)
@@ -20,5 +20,5 @@
 import com.google.common.collect.Lists;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 
 /**
@@ -34,7 +34,7 @@
     private final Predicate filterPredicate;
 
-    private List<ITaskTreeNode> filteredNodes = Lists.newArrayList();
+    private List<ITask> filteredTasks = Lists.newArrayList();
 
-    private List<ITaskTreeNode> nodesNotMatchedFilter = Lists.newArrayList();
+    private List<ITask> tasksNotMatchedFilter = Lists.newArrayList();
 
     @SuppressWarnings("rawtypes")
@@ -44,27 +44,27 @@
 
     @SuppressWarnings("unchecked")
-    public void addNode(ITaskTreeNode node) {
-        if (filterPredicate.apply(node)) {
-            filteredNodes.add(node);
+    public void addTask(ITask task) {
+        if (filterPredicate.apply(task)) {
+            filteredTasks.add(task);
         }
         else {
-            nodesNotMatchedFilter.add(node);
+            tasksNotMatchedFilter.add(task);
         }
     }
 
-    public List<ITaskTreeNode> nodesMatchedFilter() {
-        return this.filteredNodes;
+    public List<ITask> tasksMatchedFilter() {
+        return this.filteredTasks;
     }
 
-    public int nrOfNodesMatchedFilter() {
-        return this.filteredNodes.size();
+    public int nrOfTasksMatchedFilter() {
+        return this.filteredTasks.size();
     }
 
-    public List<ITaskTreeNode> nodesNotMatchedFilter() {
-        return this.nodesNotMatchedFilter;
+    public List<ITask> tasksNotMatchedFilter() {
+        return this.tasksNotMatchedFilter;
     }
 
-    public int nrOfNodesNotMatchedFilter() {
-        return this.nodesNotMatchedFilter.size();
+    public int nrOfTasksNotMatchedFilter() {
+        return this.tasksNotMatchedFilter.size();
     }
 
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/IterativeDFSFilterStrategy.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/IterativeDFSFilterStrategy.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/IterativeDFSFilterStrategy.java	(revision 1152)
@@ -22,9 +22,11 @@
 import de.ugoe.cs.autoquest.eventcore.IEventTarget;
 import de.ugoe.cs.autoquest.eventcore.IEventType;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTargetFilter;
 import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter;
 
 /**
@@ -35,5 +37,5 @@
  * @author Alexander Deicke
  */
-public class IterativeDFSFilterStrategy implements TaskTreeFilterStrategy {
+public class IterativeDFSFilterStrategy implements TaskModelFilterStrategy {
 
     private FilterResult filterStatistic;
@@ -41,8 +43,8 @@
     @SuppressWarnings("unchecked")
     @Override
-    public FilterResult filter(ITaskTree taskTree, EventTargetFilter eventTarget) {
+    public FilterResult filter(ITaskModel taskModel, EventTargetFilter eventTarget) {
         Predicate<IEventTarget> filterPredicate = eventTarget.filterPredicate();
         this.filterStatistic = new FilterResult(filterPredicate);
-        traverse(taskTree);
+        traverse(taskModel);
         return this.filterStatistic;
     }
@@ -50,8 +52,8 @@
     @SuppressWarnings("unchecked")
     @Override
-    public FilterResult filter(ITaskTree taskTree, EventTypeFilter eventType) {
+    public FilterResult filter(ITaskModel taskModel, EventTypeFilter eventType) {
         Predicate<IEventType> filterPredicate = eventType.filterPredicate();
         this.filterStatistic = new FilterResult(filterPredicate);
-        traverse(taskTree);
+        traverse(taskModel);
         return this.filterStatistic;
     }
@@ -59,34 +61,39 @@
     @SuppressWarnings("unchecked")
     @Override
-    public FilterResult filter(ITaskTree taskTree, TaskTreeNodeTypeFilter nodeType) {
-        Predicate<ITaskTreeNode> filterPredicate = nodeType.filterPredicate();
+    public FilterResult filter(ITaskModel taskModel, TaskTypeFilter nodeType) {
+        Predicate<ITask> filterPredicate = nodeType.filterPredicate();
         this.filterStatistic = new FilterResult(filterPredicate);
-        traverse(taskTree);
+        traverse(taskModel);
         return this.filterStatistic;
     }
 
-    private void traverse(ITaskTree taskTree) {
-        Queue<ITaskTreeNode> unvisitedNodes = new LinkedList<ITaskTreeNode>();
-        unvisitedNodes.add(taskTree.getRoot());
-        while (stillUnvisitedNodes(unvisitedNodes)) {
-            ITaskTreeNode node = unvisitedNodes.poll();
-            processCurrentNode(node);
-            processChildrenOfCurrentNode(unvisitedNodes, node);
+    private void traverse(ITaskModel taskModel) {
+        Queue<ITask> unvisitedTasks = new LinkedList<ITask>();
+        unvisitedTasks.addAll(taskModel.getTasks());
+        while (stillUnvisitedTasks(unvisitedTasks)) {
+            ITask task = unvisitedTasks.poll();
+            processCurrentTask(task);
+            processChildrenOfCurrentTask(unvisitedTasks, task);
         }
     }
 
-    private boolean stillUnvisitedNodes(Queue<ITaskTreeNode> unvisitedNodes) {
-        return !unvisitedNodes.isEmpty();
+    private boolean stillUnvisitedTasks(Queue<ITask> unvisitedTasks) {
+        return !unvisitedTasks.isEmpty();
     }
 
-    private void processCurrentNode(ITaskTreeNode node) {
-        this.filterStatistic.addNode(node);
+    private void processCurrentTask(ITask task) {
+        this.filterStatistic.addTask(task);
     }
 
-    private void processChildrenOfCurrentNode(Queue<ITaskTreeNode> unvisitedNodes,
-                                              ITaskTreeNode node)
+    private void processChildrenOfCurrentTask(Queue<ITask> unvisitedTasks,
+                                              ITask task)
     {
-        for (ITaskTreeNode child : node.getChildren()) {
-            unvisitedNodes.add(child);
+        if (task instanceof IStructuringTemporalRelationship) {
+            for (ITask child : ((IStructuringTemporalRelationship) task).getChildren()) {
+                unvisitedTasks.add(child);
+            }
+        }
+        else if (task instanceof IMarkingTemporalRelationship) {
+            unvisitedTasks.add(((IMarkingTemporalRelationship) task).getMarkedTask());
         }
     }
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/TaskModelFilterStrategy.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/TaskModelFilterStrategy.java	(revision 1152)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/TaskModelFilterStrategy.java	(revision 1152)
@@ -0,0 +1,37 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.usability.tasktree;
+
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTargetFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter;
+import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
+public interface TaskModelFilterStrategy {
+
+    public FilterResult filter(ITaskModel taskModel, EventTargetFilter eventTarget);
+
+    public FilterResult filter(ITaskModel taskModel, EventTypeFilter eventType);
+
+    public FilterResult filter(ITaskModel taskModel, TaskTypeFilter nodeType);
+
+}
Index: unk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/TaskTreeFilterStrategy.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/TaskTreeFilterStrategy.java	(revision 1151)
+++ 	(revision )
@@ -1,37 +1,0 @@
-//   Copyright 2012 Georg-August-Universität Göttingen, Germany
-//
-//   Licensed under the Apache License, Version 2.0 (the "License");
-//   you may not use this file except in compliance with the License.
-//   You may obtain a copy of the License at
-//
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//   Unless required by applicable law or agreed to in writing, software
-//   distributed under the License is distributed on an "AS IS" BASIS,
-//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//   See the License for the specific language governing permissions and
-//   limitations under the License.
-
-package de.ugoe.cs.autoquest.usability.tasktree;
-
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTargetFilter;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter;
-
-/**
- * <p>
- * TODO comment
- * </p>
- * 
- * @author Alexander Deicke
- */
-public interface TaskTreeFilterStrategy {
-
-    public FilterResult filter(ITaskTree taskTree, EventTargetFilter eventTarget);
-
-    public FilterResult filter(ITaskTree taskTree, EventTypeFilter eventType);
-
-    public FilterResult filter(ITaskTree taskTree, TaskTreeNodeTypeFilter nodeType);
-
-}
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTargetFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTargetFilter.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTargetFilter.java	(revision 1152)
@@ -23,5 +23,5 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.ITextField;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 
 /**
@@ -32,5 +32,5 @@
  * @author Alexander Deicke
  */
-public enum EventTargetFilter implements TaskTreeNodeFilter<IEventTarget> {
+public enum EventTargetFilter implements TaskFilter<IEventTarget> {
 
     TEXT_FIELD(ITextField.class),
@@ -54,15 +54,15 @@
     public Predicate filterPredicate() {
         Predicate<Object> instanceOfIEventTaskPredicate = Predicates.instanceOf(IEventTask.class);
-        Predicate<ITaskTreeNode> nodeHoldsInstanceOfFilterArgument =
-            Predicates.compose(Predicates.instanceOf(eventTargetClazz), nodeExtractionFunction());
-        return Predicates.and(instanceOfIEventTaskPredicate, nodeHoldsInstanceOfFilterArgument);
+        Predicate<ITask> taskHoldsInstanceOfFilterArgument =
+            Predicates.compose(Predicates.instanceOf(eventTargetClazz), taskExtractionFunction());
+        return Predicates.and(instanceOfIEventTaskPredicate, taskHoldsInstanceOfFilterArgument);
     }
 
-    private Function<ITaskTreeNode, IEventTarget> nodeExtractionFunction() {
-        return new Function<ITaskTreeNode, IEventTarget>() {
+    private Function<ITask, IEventTarget> taskExtractionFunction() {
+        return new Function<ITask, IEventTarget>() {
 
             @Override
-            public IEventTarget apply(ITaskTreeNode treeNode) {
-                return ((IEventTask) treeNode).getEventTarget();
+            public IEventTarget apply(ITask task) {
+                return ((IEventTask) task).getEventTarget();
             }
         };
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTypeFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTypeFilter.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTypeFilter.java	(revision 1152)
@@ -27,5 +27,5 @@
 import de.ugoe.cs.autoquest.eventcore.gui.TextInput;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 
 /**
@@ -36,5 +36,5 @@
  * @author Alexander Deicke
  */
-public enum EventTypeFilter implements TaskTreeNodeFilter<IEventType> {
+public enum EventTypeFilter implements TaskFilter<IEventType> {
 
     MOUSE_BUTTON_INTERACTION(MouseButtonInteraction.class),
@@ -66,15 +66,15 @@
     public Predicate filterPredicate() {
         Predicate<Object> instanceOfIEventTaskPredicate = Predicates.instanceOf(IEventTask.class);
-        Predicate<ITaskTreeNode> nodeHoldsInstanceOfFilterArgument =
-            Predicates.compose(Predicates.instanceOf(eventTypeClazz), nodeExtractionFunction());
-        return Predicates.and(instanceOfIEventTaskPredicate, nodeHoldsInstanceOfFilterArgument);
+        Predicate<ITask> taskHoldsInstanceOfFilterArgument =
+            Predicates.compose(Predicates.instanceOf(eventTypeClazz), taskExtractionFunction());
+        return Predicates.and(instanceOfIEventTaskPredicate, taskHoldsInstanceOfFilterArgument);
     }
 
-    private Function<ITaskTreeNode, IEventType> nodeExtractionFunction() {
-        return new Function<ITaskTreeNode, IEventType>() {
+    private Function<ITask, IEventType> taskExtractionFunction() {
+        return new Function<ITask, IEventType>() {
 
             @Override
-            public IEventType apply(ITaskTreeNode treeNode) {
-                return ((IEventTask) treeNode).getEventType();
+            public IEventType apply(ITask task) {
+                return ((IEventTask) task).getEventType();
             }
         };
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskFilter.java	(revision 1152)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskFilter.java	(revision 1152)
@@ -0,0 +1,33 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.usability.tasktree.filters;
+
+import com.google.common.base.Predicate;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
+public interface TaskFilter<T> {
+
+    public Class<T> clazz();
+
+    @SuppressWarnings("rawtypes")
+    public Predicate filterPredicate();
+
+}
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskModelFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskModelFilter.java	(revision 1152)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskModelFilter.java	(revision 1152)
@@ -0,0 +1,92 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.usability.tasktree.filters;
+
+import com.google.common.base.Preconditions;
+
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
+import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
+import de.ugoe.cs.autoquest.usability.tasktree.TaskModelFilterStrategy;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
+public class TaskModelFilter {
+
+    private final TaskModelFilterStrategy taskModelFilterStrategy;
+
+    public TaskModelFilter(TaskModelFilterStrategy treeTraversalStrategy) {
+        Preconditions.checkNotNull(treeTraversalStrategy);
+        this.taskModelFilterStrategy = treeTraversalStrategy;
+    }
+
+    public FilterEventTargetStep filterByEventTarget(EventTargetFilter eventTarget) {
+        return new FilterEventTargetStep(eventTarget);
+    }
+
+    public FilterEventTypeStep filterByEventType(EventTypeFilter eventType) {
+        return new FilterEventTypeStep(eventType);
+    }
+
+    public FilterNodeTypeStep filterByNodeType(TaskTypeFilter nodeType) {
+        return new FilterNodeTypeStep(nodeType);
+    }
+
+    public class FilterEventTargetStep {
+
+        private final EventTargetFilter eventTarget;
+
+        public FilterEventTargetStep(EventTargetFilter eventTarget) {
+            this.eventTarget = eventTarget;
+        }
+
+        public FilterResult from(ITaskModel taskModel) {
+            return taskModelFilterStrategy.filter(taskModel, eventTarget);
+        }
+
+    }
+
+    public class FilterEventTypeStep {
+
+        private final EventTypeFilter eventType;
+
+        public FilterEventTypeStep(EventTypeFilter eventType) {
+            this.eventType = eventType;
+        }
+
+        public FilterResult from(ITaskModel taskModel) {
+            return taskModelFilterStrategy.filter(taskModel, eventType);
+        }
+
+    }
+
+    public class FilterNodeTypeStep {
+
+        private final TaskTypeFilter nodeType;
+
+        public FilterNodeTypeStep(TaskTypeFilter nodeType) {
+            this.nodeType = nodeType;
+        }
+
+        public FilterResult from(ITaskModel taskModel) {
+            return taskModelFilterStrategy.filter(taskModel, nodeType);
+        }
+
+    }
+}
Index: unk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTreeFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTreeFilter.java	(revision 1151)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//   Copyright 2012 Georg-August-Universität Göttingen, Germany
-//
-//   Licensed under the Apache License, Version 2.0 (the "License");
-//   you may not use this file except in compliance with the License.
-//   You may obtain a copy of the License at
-//
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//   Unless required by applicable law or agreed to in writing, software
-//   distributed under the License is distributed on an "AS IS" BASIS,
-//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//   See the License for the specific language governing permissions and
-//   limitations under the License.
-
-package de.ugoe.cs.autoquest.usability.tasktree.filters;
-
-import com.google.common.base.Preconditions;
-
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
-import de.ugoe.cs.autoquest.usability.tasktree.TaskTreeFilterStrategy;
-
-/**
- * <p>
- * TODO comment
- * </p>
- * 
- * @author Alexander Deicke
- */
-public class TaskTreeFilter {
-
-    private final TaskTreeFilterStrategy taskTreeFilterStrategy;
-
-    public TaskTreeFilter(TaskTreeFilterStrategy treeTraversalStrategy) {
-        Preconditions.checkNotNull(treeTraversalStrategy);
-        this.taskTreeFilterStrategy = treeTraversalStrategy;
-    }
-
-    public FilterEventTargetStep filterByEventTarget(EventTargetFilter eventTarget) {
-        return new FilterEventTargetStep(eventTarget);
-    }
-
-    public FilterEventTypeStep filterByEventType(EventTypeFilter eventType) {
-        return new FilterEventTypeStep(eventType);
-    }
-
-    public FilterNodeTypeStep filterByNodeType(TaskTreeNodeTypeFilter nodeType) {
-        return new FilterNodeTypeStep(nodeType);
-    }
-
-    public class FilterEventTargetStep {
-
-        private final EventTargetFilter eventTarget;
-
-        public FilterEventTargetStep(EventTargetFilter eventTarget) {
-            this.eventTarget = eventTarget;
-        }
-
-        public FilterResult from(ITaskTree taskTree) {
-            return taskTreeFilterStrategy.filter(taskTree, eventTarget);
-        }
-
-    }
-
-    public class FilterEventTypeStep {
-
-        private final EventTypeFilter eventType;
-
-        public FilterEventTypeStep(EventTypeFilter eventType) {
-            this.eventType = eventType;
-        }
-
-        public FilterResult from(ITaskTree taskTree) {
-            return taskTreeFilterStrategy.filter(taskTree, eventType);
-        }
-
-    }
-
-    public class FilterNodeTypeStep {
-
-        private final TaskTreeNodeTypeFilter nodeType;
-
-        public FilterNodeTypeStep(TaskTreeNodeTypeFilter nodeType) {
-            this.nodeType = nodeType;
-        }
-
-        public FilterResult from(ITaskTree taskTree) {
-            return taskTreeFilterStrategy.filter(taskTree, nodeType);
-        }
-
-    }
-}
Index: unk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTreeNodeFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTreeNodeFilter.java	(revision 1151)
+++ 	(revision )
@@ -1,33 +1,0 @@
-//   Copyright 2012 Georg-August-Universität Göttingen, Germany
-//
-//   Licensed under the Apache License, Version 2.0 (the "License");
-//   you may not use this file except in compliance with the License.
-//   You may obtain a copy of the License at
-//
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//   Unless required by applicable law or agreed to in writing, software
-//   distributed under the License is distributed on an "AS IS" BASIS,
-//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//   See the License for the specific language governing permissions and
-//   limitations under the License.
-
-package de.ugoe.cs.autoquest.usability.tasktree.filters;
-
-import com.google.common.base.Predicate;
-
-/**
- * <p>
- * TODO comment
- * </p>
- * 
- * @author Alexander Deicke
- */
-public interface TaskTreeNodeFilter<T> {
-
-    public Class<T> clazz();
-
-    @SuppressWarnings("rawtypes")
-    public Predicate filterPredicate();
-
-}
Index: unk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTreeNodeTypeFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTreeNodeTypeFilter.java	(revision 1151)
+++ 	(revision )
@@ -1,61 +1,0 @@
-//   Copyright 2012 Georg-August-Universität Göttingen, Germany
-//
-//   Licensed under the Apache License, Version 2.0 (the "License");
-//   you may not use this file except in compliance with the License.
-//   You may obtain a copy of the License at
-//
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//   Unless required by applicable law or agreed to in writing, software
-//   distributed under the License is distributed on an "AS IS" BASIS,
-//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//   See the License for the specific language governing permissions and
-//   limitations under the License.
-
-package de.ugoe.cs.autoquest.usability.tasktree.filters;
-
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-
-import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
-
-/**
- * <p>
- * TODO comment
- * </p>
- * 
- * @author Alexander Deicke
- */
-public enum TaskTreeNodeTypeFilter implements TaskTreeNodeFilter<ITaskTreeNode> {
-
-    EVENT_TASK_NODE(IEventTask.class),
-    
-    ITERATION(IIteration.class),
-    
-    SEQUENCE(ISequence.class),
-    
-    SELECTION(ISelection.class),;
-
-    private Class<? extends ITaskTreeNode> nodeTypeClazz;
-
-    private TaskTreeNodeTypeFilter(Class<? extends ITaskTreeNode> nodeTypeClazz) {
-        this.nodeTypeClazz = nodeTypeClazz;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Class<ITaskTreeNode> clazz() {
-        return (Class<ITaskTreeNode>) this.nodeTypeClazz;
-    }
-
-    @SuppressWarnings("rawtypes")
-    @Override
-    public Predicate filterPredicate() {
-        return Predicates.instanceOf(nodeTypeClazz);
-    }
-
-}
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTypeFilter.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTypeFilter.java	(revision 1152)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTypeFilter.java	(revision 1152)
@@ -0,0 +1,61 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.usability.tasktree.filters;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
+public enum TaskTypeFilter implements TaskFilter<ITask> {
+
+    EVENT_TASK_NODE(IEventTask.class),
+    
+    ITERATION(IIteration.class),
+    
+    SEQUENCE(ISequence.class),
+    
+    SELECTION(ISelection.class),;
+
+    private Class<? extends ITask> taskTypeClazz;
+
+    private TaskTypeFilter(Class<? extends ITask> taskTypeClazz) {
+        this.taskTypeClazz = taskTypeClazz;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Class<ITask> clazz() {
+        return (Class<ITask>) this.taskTypeClazz;
+    }
+
+    @SuppressWarnings("rawtypes")
+    @Override
+    public Predicate filterPredicate() {
+        return Predicates.instanceOf(taskTypeClazz);
+    }
+
+}
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullNode.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullNode.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/NullNode.java	(revision 1152)
@@ -20,6 +20,5 @@
 import org.apache.commons.lang.StringUtils;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 
 /**
@@ -30,5 +29,5 @@
  * @author Alexander Deicke
  */
-public class NullNode implements ITaskTreeNode {
+public class NullNode implements ITask {
 
     /* (non-Javadoc)
@@ -47,14 +46,7 @@
 
     /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#getChildren()
-     */
-    public List<ITaskTreeNode> getChildren() {
-        return Collections.emptyList();
-    }
-
-    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode#equals(de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode)
      */
-    public boolean equals(ITaskTreeNode taskTreeNode) {
+    public boolean equals(ITask task) {
         return false;
     }
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/PatternsVisitorUtil.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/PatternsVisitorUtil.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/PatternsVisitorUtil.java	(revision 1152)
@@ -19,7 +19,7 @@
 import com.google.common.collect.Iterables;
 
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
-import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeNodeFactory;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
+import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory;
 
 /**
@@ -44,6 +44,6 @@
      * @return
      */
-    public static ITaskTree createTaskTreeFromNode(ITaskTreeNode taskTreeNode) {
-        return new TaskTreeNodeFactory().createTaskTree(taskTreeNode);
+    public static ITaskModel createTaskModelFromNode(ITask task) {
+        return new TaskFactory().createTaskTree(task);
     }
     
@@ -56,6 +56,6 @@
      * @return
      */
-    public static ITaskTreeNode firstNodeOf(List<ITaskTreeNode> taskTreeNodes) {
-        return Iterables.getFirst(taskTreeNodes, new NullNode());
+    public static ITask firstNodeOf(List<ITask> tasks) {
+        return Iterables.getFirst(tasks, new NullNode());
     }
 
@@ -68,6 +68,6 @@
      * @return
      */
-    public static ITaskTreeNode lastNodeOf(List<ITaskTreeNode> taskTreeNodes) {
-        return Iterables.getLast(taskTreeNodes, new NullNode());
+    public static ITask lastNodeOf(List<ITask> tasks) {
+        return Iterables.getLast(tasks, new NullNode());
     }
     
Index: /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/TextInputUtil.java
===================================================================
--- /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/TextInputUtil.java	(revision 1151)
+++ /trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/util/TextInputUtil.java	(revision 1152)
@@ -27,5 +27,5 @@
 import de.ugoe.cs.autoquest.eventcore.gui.TextInput;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
-import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
 
 /**
@@ -42,9 +42,9 @@
     }
 
-    public static Multiset<String> aggregateEnteredTextFromTextInputs(List<ITaskTreeNode> nodesWithTextInputEvents)
+    public static Multiset<String> aggregateEnteredTextFromTextInputs(List<ITask> tasksWithTextInputEvents)
     {
         List<Iterable<String>> allTextInputs = Lists.newArrayList();
-        for (ITaskTreeNode nodeWithTextInput : nodesWithTextInputEvents) {
-            TextInput textInput = (TextInput) ((IEventTask) nodeWithTextInput).getEventType();
+        for (ITask taskWithTextInput : tasksWithTextInputEvents) {
+            TextInput textInput = (TextInput) ((IEventTask) taskWithTextInput).getEventType();
             allTextInputs.add(splitTextIntoWordsAndSigns(textInput.getEnteredText()));
         }
