Index: /trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultEventTargetSequenceDetectionRule.java
===================================================================
--- /trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultEventTargetSequenceDetectionRule.java	(revision 803)
+++ /trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultEventTargetSequenceDetectionRule.java	(revision 804)
@@ -51,8 +51,23 @@
                 }
                 else {
-                    handleEventTargetSequence(parent, startingIndex, index - 1, builder,
-                                              nodeFactory, result);
+                    int endIndex = index - 1;
+                    
+                    // only reduce to a sequence, if it is not a sequence with only one child
+                    // or if this child is not a sequence itself
+                    if ((startingIndex != endIndex) ||
+                        (!(parent.getChildren().get(startingIndex) instanceof ISequence)))
+                    {
+                        handleEventTargetSequence
+                            (parent, startingIndex, endIndex, builder, nodeFactory, result);
 
-                    return result;
+                        result.setRuleApplicationStatus
+                            (RuleApplicationStatus.RULE_APPLICATION_FINISHED);
+                        return result;
+                    }
+                    else {
+                        // here a new sequence on a new target begins
+                        startingIndex = index;
+                        currentEventTarget = eventTarget;
+                    }
                 }
             }
@@ -62,7 +77,18 @@
 
         if (startingIndex > -1) {
-            if (finalize && (startingIndex > 0)) {
-                handleEventTargetSequence(parent, startingIndex, parent.getChildren().size() - 1,
-                                          builder, nodeFactory, result);
+            int endIndex = parent.getChildren().size() - 1;
+            
+            if (finalize) {
+                // only reduce to a sequence, if it is not a sequence with only one child
+                // or if this child is not a sequence itself
+                if ((startingIndex > 0) &&
+                    ((startingIndex != endIndex) ||
+                     (!(parent.getChildren().get(startingIndex) instanceof ISequence))))
+                {
+                    handleEventTargetSequence
+                        (parent, startingIndex, endIndex, builder, nodeFactory, result);
+                
+                    result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED);
+                }
             }
             else {
@@ -85,5 +111,18 @@
         }
         else {
-            return null;
+            IEventTarget commonTarget = null;
+            
+            for (ITaskTreeNode child : node.getChildren()) {
+                if (commonTarget == null) {
+                    commonTarget = determineEventTarget(child);
+                }
+                else {
+                    if (!commonTarget.equals(determineEventTarget(child))) {
+                        return null;
+                    }
+                }
+            }
+            
+            return commonTarget;
         }
     }
@@ -110,5 +149,4 @@
 
         result.addNewlyCreatedParentNode(sequence);
-        result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED);
     }
 
