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/filter/IterativeDFSFilterStrategy.java	(revision 1040)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/IterativeDFSFilterStrategy.java	(revision 1135)
@@ -13,7 +13,8 @@
 //   limitations under the License.
 
-package de.ugoe.cs.autoquest.usability.tasktree.filter;
+package de.ugoe.cs.autoquest.usability.tasktree;
 
-import java.util.Stack;
+import java.util.LinkedList;
+import java.util.Queue;
 
 import com.google.common.base.Predicate;
@@ -23,4 +24,7 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
+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;
 
 /**
@@ -33,11 +37,11 @@
 public class IterativeDFSFilterStrategy implements TaskTreeFilterStrategy {
 
-    private FilterStatistic filterStatistic;
+    private FilterResult filterStatistic;
 
     @SuppressWarnings("unchecked")
     @Override
-    public FilterStatistic filter(ITaskTree taskTree, EventTargetFilter eventTarget) {
+    public FilterResult filter(ITaskTree taskTree, EventTargetFilter eventTarget) {
         Predicate<IEventTarget> filterPredicate = eventTarget.filterPredicate();
-        this.filterStatistic = new FilterStatistic(filterPredicate);
+        this.filterStatistic = new FilterResult(filterPredicate);
         traverse(taskTree);
         return this.filterStatistic;
@@ -46,7 +50,7 @@
     @SuppressWarnings("unchecked")
     @Override
-    public FilterStatistic filter(ITaskTree taskTree, EventTypeFilter eventType) {
+    public FilterResult filter(ITaskTree taskTree, EventTypeFilter eventType) {
         Predicate<IEventType> filterPredicate = eventType.filterPredicate();
-        this.filterStatistic = new FilterStatistic(filterPredicate);
+        this.filterStatistic = new FilterResult(filterPredicate);
         traverse(taskTree);
         return this.filterStatistic;
@@ -55,7 +59,7 @@
     @SuppressWarnings("unchecked")
     @Override
-    public FilterStatistic filter(ITaskTree taskTree, TaskTreeNodeTypeFilter nodeType) {
+    public FilterResult filter(ITaskTree taskTree, TaskTreeNodeTypeFilter nodeType) {
         Predicate<ITaskTreeNode> filterPredicate = nodeType.filterPredicate();
-        this.filterStatistic = new FilterStatistic(filterPredicate);
+        this.filterStatistic = new FilterResult(filterPredicate);
         traverse(taskTree);
         return this.filterStatistic;
@@ -63,8 +67,8 @@
 
     private void traverse(ITaskTree taskTree) {
-        Stack<ITaskTreeNode> unvisitedNodes = new Stack<ITaskTreeNode>();
-        unvisitedNodes.push(taskTree.getRoot());
+        Queue<ITaskTreeNode> unvisitedNodes = new LinkedList<ITaskTreeNode>();
+        unvisitedNodes.add(taskTree.getRoot());
         while (stillUnvisitedNodes(unvisitedNodes)) {
-            ITaskTreeNode node = unvisitedNodes.pop();
+            ITaskTreeNode node = unvisitedNodes.poll();
             processCurrentNode(node);
             processChildrenOfCurrentNode(unvisitedNodes, node);
@@ -72,5 +76,5 @@
     }
 
-    private boolean stillUnvisitedNodes(Stack<ITaskTreeNode> unvisitedNodes) {
+    private boolean stillUnvisitedNodes(Queue<ITaskTreeNode> unvisitedNodes) {
         return !unvisitedNodes.isEmpty();
     }
@@ -80,9 +84,9 @@
     }
 
-    private void processChildrenOfCurrentNode(Stack<ITaskTreeNode> unvisitedNodes,
+    private void processChildrenOfCurrentNode(Queue<ITaskTreeNode> unvisitedNodes,
                                               ITaskTreeNode node)
     {
         for (ITaskTreeNode child : node.getChildren()) {
-            unvisitedNodes.push(child);
+            unvisitedNodes.add(child);
         }
     }
