Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IEventTask.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IEventTask.java	(revision 1287)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IEventTask.java	(revision 1294)
@@ -15,12 +15,11 @@
 package de.ugoe.cs.autoquest.tasktrees.treeifc;
 
-import de.ugoe.cs.autoquest.eventcore.IEventTarget;
-import de.ugoe.cs.autoquest.eventcore.IEventType;
-
 /**
  * <p>
  * Event tasks represent single events. They have no children and are therefore the leaf nodes of
- * a task model. They provide information about the event they represent. This includes the event
- * type and the target.
+ * a task model. They provide information about the event they represent as a String description.
+ * They do not refer to events, as they may represented several semantically equal but lexically
+ * different events. Their description carries as much information as required to show the
+ * level of distinction.
  * </p>
  * 
@@ -29,22 +28,4 @@
 public interface IEventTask extends ITask {
     
-    /**
-     * <p>
-     * return the type of the event represented by this task
-     * </p>
-     * 
-     * @return as described
-     */
-    public IEventType getEventType();
-
-    /**
-     * <p>
-     * return the target of the event represented by this task
-     * </p>
-     * 
-     * @return as described
-     */
-    public IEventTarget getEventTarget();
-
     /**
      * <p>
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IEventTaskInstance.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IEventTaskInstance.java	(revision 1294)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IEventTaskInstance.java	(revision 1294)
@@ -0,0 +1,56 @@
+//   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.tasktrees.treeifc;
+
+import de.ugoe.cs.autoquest.eventcore.Event;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public interface IEventTaskInstance extends ITaskInstance {
+
+    /**
+     * <p>
+     * returns the event represented by this event task instance
+     * </p>
+     * 
+     * @return as described
+     */
+    public Event getEvent();
+
+    /**
+     * <p>
+     * returns the task related to the instance, i.e. the event task.
+     * </p>
+     * 
+     * @return as described
+     */
+    public IEventTask getEventTask();
+
+    /**
+     * <p>
+     * clones this task instance by creating exact clones of itself. The referred task and event
+     * stay untouched
+     * </p>
+     * 
+     * @return a clone of the task instance
+     */
+    public IEventTaskInstance clone();
+    
+}
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IIterationInstance.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IIterationInstance.java	(revision 1294)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IIterationInstance.java	(revision 1294)
@@ -0,0 +1,45 @@
+//   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.tasktrees.treeifc;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public interface IIterationInstance extends ITaskInstance, ITaskInstanceList {
+
+    /**
+     * <p>
+     * returns the task related to the instance, i.e. the iteration.
+     * </p>
+     * 
+     * @return as described
+     */
+    public IIteration getIteration();
+
+    /**
+     * <p>
+     * clones this task instance by creating exact clones of each contained instance in their
+     * order
+     * </p>
+     * 
+     * @return a clone of the task instance list
+     */
+    public IIterationInstance clone();
+
+}
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IOptionalInstance.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IOptionalInstance.java	(revision 1294)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/IOptionalInstance.java	(revision 1294)
@@ -0,0 +1,53 @@
+//   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.tasktrees.treeifc;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public interface IOptionalInstance extends ITaskInstance {
+
+    /**
+     * <p>
+     * returns the child of the optional
+     * </p>
+     * 
+     * @return as described
+     */
+    public ITaskInstance getChild();
+
+    /**
+     * <p>
+     * returns the task related to the instance, i.e. the optional.
+     * </p>
+     * 
+     * @return as described
+     */
+    public IOptional getOptional();
+
+    /**
+     * <p>
+     * clones this task instance by creating exact clones of each contained instance
+     * </p>
+     * 
+     * @return a clone of the task instance
+     */
+    public IOptionalInstance clone();
+
+}
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISelectionInstance.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISelectionInstance.java	(revision 1294)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISelectionInstance.java	(revision 1294)
@@ -0,0 +1,53 @@
+//   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.tasktrees.treeifc;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public interface ISelectionInstance extends ITaskInstance {
+
+    /**
+     * <p>
+     * returns the selected child of the selection
+     * </p>
+     * 
+     * @return as described
+     */
+    public ITaskInstance getChild();
+
+    /**
+     * <p>
+     * returns the task related to the instance, i.e. the selection.
+     * </p>
+     * 
+     * @return as described
+     */
+    public ISelection getSelection();
+
+    /**
+     * <p>
+     * clones this task instance by creating exact clones of the contained instance
+     * </p>
+     * 
+     * @return a clone of the task instance
+     */
+    public ISelectionInstance clone();
+
+}
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISequenceInstance.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISequenceInstance.java	(revision 1294)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ISequenceInstance.java	(revision 1294)
@@ -0,0 +1,45 @@
+//   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.tasktrees.treeifc;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public interface ISequenceInstance extends ITaskInstance, ITaskInstanceList {
+
+    /**
+     * <p>
+     * returns the task related to the instance, i.e. the sequence.
+     * </p>
+     * 
+     * @return as described
+     */
+    public ISequence getSequence();
+
+    /**
+     * <p>
+     * clones this task instance by creating exact clones of each contained instance in their
+     * order
+     * </p>
+     * 
+     * @return a clone of the task instance
+     */
+    public ISequenceInstance clone();
+  
+}
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITask.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITask.java	(revision 1287)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITask.java	(revision 1294)
@@ -16,4 +16,5 @@
 
 import java.io.Serializable;
+import java.util.Collection;
 
 /**
@@ -49,4 +50,13 @@
      */
     public String getDescription();
+
+    /**
+     * <p>
+     * returns a collection of all observed instances of this task
+     * </p>
+     * 
+     * @return as described
+     */
+    public Collection<ITaskInstance> getInstances();
 
     /**
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskBuilder.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskBuilder.java	(revision 1287)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskBuilder.java	(revision 1294)
@@ -26,14 +26,56 @@
     /**
      * <p>
-     * adds a child to a task instance. May ensure, that the child is a valid child considering
+     * adds a child to a sequence instance. May ensure, that the child is a valid child considering
      * the task model of the parent. In that case, an IllegalArgumentException is thrown.
      * </p>
      * 
-     * @param taskInstance the instance of add the child to
-     * @param child        the child to be added
-     * 
-     * @throws IllegalArgumentException as described
-     */
-    void addChild(ITaskInstance taskInstance, ITaskInstance child) throws IllegalArgumentException;
+     * @param instance the instance of add the child to
+     * @param child    the child to be added
+     * 
+     * @throws IllegalArgumentException as described
+     */
+    void addChild(ISequenceInstance instance, ITaskInstance child) throws IllegalArgumentException;
+
+    /**
+     * <p>
+     * adds a child to an iteration instance. May ensure, that the child is a valid child
+     * considering the task model of the parent. In that case, an IllegalArgumentException is
+     * thrown.
+     * </p>
+     * 
+     * @param instance the instance of add the child to
+     * @param child    the child to be added
+     * 
+     * @throws IllegalArgumentException as described
+     */
+    void addChild(IIterationInstance instance, ITaskInstance child) throws IllegalArgumentException;
+
+    /**
+     * <p>
+     * sets the child of a selection instance. May ensure, that the child is a valid child
+     * considering the task model of the parent. In that case, an IllegalArgumentException is
+     * thrown.
+     * </p>
+     * 
+     * @param instance the instance of add the child to
+     * @param child    the child to be added
+     * 
+     * @throws IllegalArgumentException as described
+     */
+    void setChild(ISelectionInstance instance, ITaskInstance child) throws IllegalArgumentException;
+
+    /**
+     * <p>
+     * sets the child of an optional instance. May ensure, that the child is a valid child
+     * considering the task model of the parent. In that case, an IllegalArgumentException is
+     * thrown.
+     * </p>
+     * 
+     * @param instance the instance of add the child to
+     * @param child    the child to be added
+     * 
+     * @throws IllegalArgumentException as described
+     */
+    void setChild(IOptionalInstance instance, ITaskInstance child) throws IllegalArgumentException;
 
     /**
@@ -215,13 +257,3 @@
     void replaceChild(ISelection parent, ITask oldChild, ITask newChild);
 
-    /**
-     * <p>
-     * sets the description of a task
-     * </p>
-     * 
-     * @param task        the task to set the description of
-     * @param description the new description of the task
-     */
-    void setDescription(ITask task, String description);
-
 }
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskFactory.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskFactory.java	(revision 1287)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskFactory.java	(revision 1294)
@@ -17,6 +17,5 @@
 import java.util.List;
 
-import de.ugoe.cs.autoquest.eventcore.IEventTarget;
-import de.ugoe.cs.autoquest.eventcore.IEventType;
+import de.ugoe.cs.autoquest.eventcore.Event;
 
 /**
@@ -31,13 +30,12 @@
     /**
      * <p>
-     * creates a new event task with the given type and target
+     * creates a new event task with the given description
      * </p>
      * 
-     * @param eventType   the type of the event represented by the task
-     * @param eventTarget the target of the event represented by the task
+     * @param description the description for the represented events
      * 
      * @return the event task
      */
-    IEventTask createNewEventTask(IEventType eventType, IEventTarget eventTarget);
+    IEventTask createNewEventTask(String description);
 
     /**
@@ -79,21 +77,57 @@
     /**
      * <p>
-     * creates a new task instance with the given task as its model
+     * creates a new task instance with the given task as its model representing the provided event
      * </p>
      * 
-     * @param task the model of the task instance to be created
+     * @param task  the model of the task instance to be created
+     * @param event the event represented by the task instance
      * 
      * @return the task instance
      */
-    ITaskInstance createNewTaskInstance(ITask task);
+    IEventTaskInstance createNewTaskInstance(IEventTask task, Event event);
 
     /**
      * <p>
-     * creates a new empty task instance list
+     * creates a new task instance with the given sequence as its model
      * </p>
      * 
-     * @return the task instance list
+     * @param sequence the model of the task instance to be created
+     * 
+     * @return the task instance
      */
-    ITaskInstanceList createNewTaskInstanceList();
+    ISequenceInstance createNewTaskInstance(ISequence sequence);
+
+    /**
+     * <p>
+     * creates a new task instance with the given iteration as its model
+     * </p>
+     * 
+     * @param iteration the model of the task instance to be created
+     * 
+     * @return the task instance
+     */
+    IIterationInstance createNewTaskInstance(IIteration iteration);
+
+    /**
+     * <p>
+     * creates a new task instance with the given optional as its model
+     * </p>
+     * 
+     * @param optional the model of the task instance to be created
+     * 
+     * @return the task instance
+     */
+    IOptionalInstance createNewTaskInstance(IOptional optional);
+
+    /**
+     * <p>
+     * creates a new task instance with the given selection as its model
+     * </p>
+     * 
+     * @param selection the model of the task instance to be created
+     * 
+     * @return the task instance
+     */
+    ISelectionInstance createNewTaskInstance(ISelection selection);
 
     /**
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskInstance.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskInstance.java	(revision 1287)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskInstance.java	(revision 1294)
@@ -15,36 +15,15 @@
 package de.ugoe.cs.autoquest.tasktrees.treeifc;
 
-import java.util.List;
+import java.io.Serializable;
 
 /**
  * <p>
  * a task instance represents the execution of a specific task within a user session. A task
- * instance is always related to the task that was executed. A task instance may have children
- * but only if its related task allows to have children. For example, if the represented task is
- * a sequence then task instance has children and these are instances of the tasks being the
- * children of the related sequence.
- * </p>
- * <p>
- * An instance of a sequence has the same number of children as the related sequence. An instance
- * of a selection has only one child which is an instance of exactly one variant contained in the
- * related selection. An instance of an iteration has zero or more instances of the same task
- * as children where the task is the child of the related iteration. An instance of an optional
- * has zero or one child where the task related to child is the child of the optional. A task
- * instance related to an event task does not have children.
+ * instance is always related to the task that was executed.
  * </p>
  * 
  * @author Patrick Harms
  */
-public interface ITaskInstance extends ITaskInstanceList {
-
-    /**
-     * <p>
-     * returns the children of the task instance if any. See class description for how many
-     * children can be expected. May return null.
-     * </p>
-     * 
-     * @return as described
-     */
-    public List<ITaskInstance> getChildren();
+public interface ITaskInstance extends Serializable, Cloneable {
 
     /**
Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskInstanceList.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskInstanceList.java	(revision 1287)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/treeifc/ITaskInstanceList.java	(revision 1294)
@@ -19,5 +19,5 @@
 /**
  * <p>
- * represents a serializable, clonable, iterable representation of a read only list of task
+ * represents a serializable and iterable representation of a read only list of task
  * instances. The list is ordered. It does not provide methods for changing it.
  * </p>
@@ -25,5 +25,5 @@
  * @author Patrick Harms
  */
-public interface ITaskInstanceList extends Serializable, Cloneable, Iterable<ITaskInstance> {
+public interface ITaskInstanceList extends Serializable, Iterable<ITaskInstance> {
 
     /**
@@ -48,13 +48,3 @@
     public int size();
 
-    /**
-     * <p>
-     * clones a task instance list by creating exact clones of each contained instance in their
-     * order
-     * </p>
-     * 
-     * @return a clone of the task instance list
-     */
-    public ITaskInstanceList clone();
-  
 }
