Index: /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/manager/TaskTreeManager.java
===================================================================
--- /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/manager/TaskTreeManager.java	(revision 1888)
+++ /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/manager/TaskTreeManager.java	(revision 1889)
@@ -154,7 +154,28 @@
         finishSession();
         
-        Console.traceln(Level.INFO, "applying temporal relationship generation rules");
+        Console.traceln
+            (Level.INFO, "applying temporal relationship generation rules for detecting tasks");
         
-        ComponentManager.getTemporalRelationshipRuleManager().applyRules(sessions);
+        ComponentManager.getTemporalRelationshipRuleManager().applyTaskDetectionRule(sessions);
+
+        return taskFactory.createTaskModel(sessions);
+    }
+
+    /**
+     * <p>
+     * merges similar tasks in the given task model and returns a condensed task model
+     * </p>
+     * 
+     * @param inputModel the model with the tasks to be merged
+     * 
+     * @return as described
+     */
+    public synchronized ITaskModel mergeSimilarTasks(ITaskModel inputModel) {
+        Console.traceln
+            (Level.INFO, "applying temporal relationship generation rules for merging tasks");
+        
+        sessions = inputModel.getUserSessions();
+        
+        ComponentManager.getTemporalRelationshipRuleManager().applyTaskMergingRule(sessions);
 
         return taskFactory.createTaskModel(sessions);
Index: /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TemporalRelationshipRuleManager.java
===================================================================
--- /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TemporalRelationshipRuleManager.java	(revision 1888)
+++ /trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TemporalRelationshipRuleManager.java	(revision 1889)
@@ -183,8 +183,42 @@
      * </p>
      * 
-     * @param taskFactory  the task factory to be used for instantiating new tasks.
+     * @param sessions  the sessions to be processed
      */
     public void applyRules(List<IUserSession> sessions) {
         applyRules(sessionScopeRules, sessions, "");
+    }
+
+    /**
+     * <p>
+     * applies only the known rules for task detection, i.e., currently only the sequence for task
+     * detection rule
+     * </p>
+     * 
+     * @param sessions  the sessions to be processed
+     */
+    public void applyTaskDetectionRule(List<IUserSession> sessions) {
+        ISessionScopeRule[] rules = new ISessionScopeRule[] {
+            new SequenceForTaskDetectionRule
+                (TaskEquality.SEMANTICALLY_EQUAL, taskFactory, taskBuilder)
+        };
+        
+        applyRules(rules, sessions, "");
+    }
+
+    /**
+     * <p>
+     * applies only the known rules for task merging, i.e., currently only the condense similar task
+     * rule
+     * </p>
+     * 
+     * @param sessions  the sessions to be processed
+     */
+    public void applyTaskMergingRule(List<IUserSession> sessions) {
+        ISessionScopeRule[] rules = new ISessionScopeRule[] {
+            new CondenseSimilarTasksRule
+                (TaskEquality.SEMANTICALLY_EQUAL, taskFactory, taskBuilder)
+        };
+        
+        applyRules(rules, sessions, "");
     }
 
Index: /trunk/autoquest-ui-core/src/main/java/de/ugoe/cs/autoquest/commands/usability/CMDmergeSimilarTasks.java
===================================================================
--- /trunk/autoquest-ui-core/src/main/java/de/ugoe/cs/autoquest/commands/usability/CMDmergeSimilarTasks.java	(revision 1889)
+++ /trunk/autoquest-ui-core/src/main/java/de/ugoe/cs/autoquest/commands/usability/CMDmergeSimilarTasks.java	(revision 1889)
@@ -0,0 +1,91 @@
+//   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.commands.usability;
+
+import java.util.List;
+
+import de.ugoe.cs.autoquest.CommandHelpers;
+import de.ugoe.cs.autoquest.tasktrees.manager.TaskTreeManager;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.GlobalDataContainer;
+
+/**
+ * <p>
+ * This command merges similar tasks in a given task tree. It uses the {@link TaskTreeManager} for
+ * this purpose. Please consult the documentation of the task tree manager for more details.
+ * </p>
+ * 
+ * @author Patrick Harms
+ * @version 1.0
+ */
+public class CMDmergeSimilarTasks implements Command {
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#help()
+     */
+    @Override
+    public String help() {
+        return "mergeSimilarTasks <inputTaskTree> {<outputTaskTree>}";
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+     */
+    @Override
+    public void run(List<Object> parameters) {
+        String inputTaskTreeName;
+        String outputTaskTreeName;
+        try {
+            inputTaskTreeName = (String) parameters.get(0);
+            if (parameters.size() > 1) {
+                outputTaskTreeName = (String) parameters.get(1);
+            }
+            else {
+                outputTaskTreeName = inputTaskTreeName;
+            }
+        }
+        catch (Exception e) {
+            throw new IllegalArgumentException("must provide an input task tree name");
+        }
+
+        ITaskModel inputTaskModel = null;
+        Object dataObject = GlobalDataContainer.getInstance().getData(inputTaskTreeName);
+        if (dataObject == null) {
+            CommandHelpers.objectNotFoundMessage(inputTaskTreeName);
+            return;
+        }
+        if (!(dataObject instanceof ITaskModel)) {
+            CommandHelpers.objectNotType(inputTaskTreeName, "ITaskModel");
+            return;
+        }
+
+        inputTaskModel = (ITaskModel) dataObject;
+        
+        inputTaskModel = inputTaskModel.clone();
+        
+        ITaskModel taskModel = new TaskTreeManager().mergeSimilarTasks(inputTaskModel);
+        
+        if (GlobalDataContainer.getInstance().addData(outputTaskTreeName, taskModel)) {
+            CommandHelpers.dataOverwritten(outputTaskTreeName);
+        }
+        
+    }
+
+}
Index: /trunk/autoquest-ui-core/src/main/resources/manuals/mergeSimilarTasks
===================================================================
--- /trunk/autoquest-ui-core/src/main/resources/manuals/mergeSimilarTasks	(revision 1889)
+++ /trunk/autoquest-ui-core/src/main/resources/manuals/mergeSimilarTasks	(revision 1889)
@@ -0,0 +1,8 @@
+Merges similar tasks in a given task model.
+
+$USAGE$
+<inputTaskTree> name of the task model in which similar tasks shall be merged
+<outputTaskTree> name of the object to store the resulting task model in (defaults to the input task tree)
+
+Example(s)
+mergeSimilarTasks tasktree tasktree2
