Index: /trunk/autoquest-plugin-exports/.classpath
===================================================================
--- /trunk/autoquest-plugin-exports/.classpath	(revision 2058)
+++ /trunk/autoquest-plugin-exports/.classpath	(revision 2058)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry including="**/*.java" kind="src" output="target/classes" path="target/generated-sources/xjc">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
Index: /trunk/autoquest-plugin-exports/.project
===================================================================
--- /trunk/autoquest-plugin-exports/.project	(revision 2058)
+++ /trunk/autoquest-plugin-exports/.project	(revision 2058)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>autoquest-plugin-exports</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: /trunk/autoquest-plugin-exports/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- /trunk/autoquest-plugin-exports/.settings/org.eclipse.jdt.core.prefs	(revision 2058)
+++ /trunk/autoquest-plugin-exports/.settings/org.eclipse.jdt.core.prefs	(revision 2058)
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7
Index: /trunk/autoquest-plugin-exports/.settings/org.eclipse.m2e.core.prefs
===================================================================
--- /trunk/autoquest-plugin-exports/.settings/org.eclipse.m2e.core.prefs	(revision 2058)
+++ /trunk/autoquest-plugin-exports/.settings/org.eclipse.m2e.core.prefs	(revision 2058)
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
Index: /trunk/autoquest-plugin-exports/pom.xml
===================================================================
--- /trunk/autoquest-plugin-exports/pom.xml	(revision 2058)
+++ /trunk/autoquest-plugin-exports/pom.xml	(revision 2058)
@@ -0,0 +1,63 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>de.ugoe.cs.autoquest</groupId>
+        <artifactId>autoquest</artifactId>
+        <version>0.1.3-SNAPSHOT</version>
+        <relativePath>../autoquest/pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>autoquest-plugin-exports</artifactId>
+    <name>autoquest-plugin-exports</name>
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    <scm>
+        <url>${autoquest-scm-trunk-dir}/${project.artifactId}</url>
+        <connection>scm:svn:${autoquest-scm-trunk-dir}/${project.artifactId}</connection>
+    </scm>
+    <dependencies>
+        <dependency>
+            <groupId>de.ugoe.cs.autoquest</groupId>
+            <artifactId>autoquest-plugin-core</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>de.ugoe.cs.autoquest</groupId>
+            <artifactId>autoquest-core-tasktrees</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.jvnet.jaxb2.maven2</groupId>
+                <artifactId>maven-jaxb2-plugin</artifactId>
+                <version>0.8.2</version>
+                <configuration>
+                    <generatePackage>de.ugoe.cs.autoquest.exports.tasktrees</generatePackage>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addClasspath>true</addClasspath>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/EXPORTSPlugin.java
===================================================================
--- /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/EXPORTSPlugin.java	(revision 2058)
+++ /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/EXPORTSPlugin.java	(revision 2058)
@@ -0,0 +1,60 @@
+//   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.plugin.exports;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import de.ugoe.cs.autoquest.plugin.AutoQUESTPlugin;
+
+/**
+ * <p>
+ * Identifier class for the AutoQUEST HTML plug-in.
+ * </p>
+ * 
+ * @author Patrick Harms
+ * @version 1.0
+ */
+public class EXPORTSPlugin implements AutoQUESTPlugin {
+
+    /**
+     * <p>
+     * The command packages of this plug-in.
+     * </p>
+     */
+    private final static String[] commandPackages = new String[]
+        { "de.ugoe.cs.autoquest.plugin.exports.commands" };
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.autoquest.plugin.AutoQUESTPlugin#getTitle()
+     */
+    @Override
+    public String getTitle() {
+        return "HTML-Plugin";
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.autoquest.plugin.AutoQUESTPlugin#getCommandPackages()
+     */
+    @Override
+    public List<String> getCommandPackages() {
+        return Collections.unmodifiableList(Arrays.asList(commandPackages));
+    }
+}
Index: /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/commands/CMDexportToCTT.java
===================================================================
--- /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/commands/CMDexportToCTT.java	(revision 2058)
+++ /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/commands/CMDexportToCTT.java	(revision 2058)
@@ -0,0 +1,178 @@
+//   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.plugin.exports.commands;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import de.ugoe.cs.autoquest.CommandHelpers;
+import de.ugoe.cs.autoquest.exports.tasktrees.ObjectFactory;
+import de.ugoe.cs.autoquest.exports.tasktrees.TaskModel;
+import de.ugoe.cs.autoquest.plugin.exports.tasktree.CTTExportUtils;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
+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.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+import de.ugoe.cs.util.console.GlobalDataContainer;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ * @version 1.0
+ */
+public class CMDexportToCTT implements Command {
+
+    /** */
+    private static final ObjectFactory objFact = new ObjectFactory();
+    
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+     */
+    @Override
+    public void run(List<Object> parameters) {
+        String dirname = null;
+        String tasktreename = null;
+
+        try {
+            for (int i = 0; i < parameters.size(); i++) {
+                String param = (String) parameters.get(i);
+                if (tasktreename == null) {
+                    tasktreename = param;
+                }
+                else if (dirname == null) {
+                    dirname = param;
+                }
+            }
+        }
+        catch (Exception e) {
+            throw new IllegalArgumentException("illegal parameters provided: " + e);
+        }
+
+        if (tasktreename == null) {
+            tasktreename = "tasktree";
+        }
+
+        if (dirname == null) {
+            dirname = tasktreename + "_ctte";
+        }
+
+        Object taskTreeObj = GlobalDataContainer.getInstance().getData(tasktreename);
+        
+        if (taskTreeObj == null) {
+            CommandHelpers.objectNotFoundMessage(tasktreename);
+            return;
+        }
+        else if (!(taskTreeObj instanceof ITaskModel)) {
+            CommandHelpers.objectNotType(tasktreename, "task model");
+            return;
+        }
+        
+        File directory = new File(dirname);
+        
+        if (directory.exists()) {
+            Console.printerrln("The directory " + directory.getAbsolutePath() + " already exists." +
+                               " Please delete it and try again.");
+            return;
+        }
+        else {
+            if (!directory.mkdirs()) {
+                Console.printerrln("Could not create directory " + directory.getAbsolutePath() +
+                                   ". Please try another one.");
+                return;
+            }
+        }
+        
+        Console.println("exporting " + tasktreename + " to directory " +
+                        directory.getAbsolutePath());
+        
+        List<TaskModel> models = map((ITaskModel) taskTreeObj);
+        
+        Console.println("exporting " + models.size() + " root tasks " +
+                        directory.getAbsolutePath());
+
+        for (TaskModel model : models) {
+            File file = new File(directory, model.getNameTaskModelID() + "_ctte.xml");
+            CTTExportUtils.writeToFile(model, file);
+        }
+    }
+
+    /**
+     *
+     */
+    private List<TaskModel> map(ITaskModel taskModel) {
+        List<ITask> roots = getRoots(taskModel.getTasks());
+        List<TaskModel> result = new ArrayList<>(roots.size());
+        
+        for (ITask task : roots) {
+            TaskModel cttModel = objFact.createTaskModel();
+            cttModel.setTask(CTTExportUtils.map(task, false, false, null));
+            cttModel.setNameTaskModelID(Integer.toString(task.getId()));
+            result.add(cttModel);
+        }
+        
+        return result;
+    }
+
+    /**
+     *
+     */
+    private List<ITask> getRoots(Collection<ITask> tasks) {
+        Set<ITask> children = new HashSet<>(tasks.size());
+        
+        for (ITask parent : tasks) {
+            if (parent instanceof IMarkingTemporalRelationship) {
+                children.add(((IMarkingTemporalRelationship) parent).getMarkedTask());
+            }
+            else if (parent instanceof IStructuringTemporalRelationship) {
+                for (ITask child : ((IStructuringTemporalRelationship) parent).getChildren()) {
+                    children.add(child);
+                }
+            }
+        }
+        
+        List<ITask> roots = new ArrayList<>(tasks.size() - children.size());
+        
+        for (ITask candidate : tasks) {
+            if ((!(candidate instanceof IEventTask)) && (!children.contains(candidate))) {
+                roots.add(candidate);
+            }
+        }
+        
+        return roots;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#help()
+     */
+    @Override
+    public String help() {
+        return "exportToCTT [<tasktreename>] [<filename>]";
+    }
+
+}
Index: /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/tasktree/CTTExportUtils.java
===================================================================
--- /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/tasktree/CTTExportUtils.java	(revision 2058)
+++ /trunk/autoquest-plugin-exports/src/main/java/de/ugoe/cs/autoquest/plugin/exports/tasktree/CTTExportUtils.java	(revision 2058)
@@ -0,0 +1,284 @@
+//   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.plugin.exports.tasktree;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.logging.Level;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+
+import de.ugoe.cs.autoquest.exports.tasktrees.Category;
+import de.ugoe.cs.autoquest.exports.tasktrees.ObjectFactory;
+import de.ugoe.cs.autoquest.exports.tasktrees.Parent;
+import de.ugoe.cs.autoquest.exports.tasktrees.SiblingLeft;
+import de.ugoe.cs.autoquest.exports.tasktrees.SiblingRight;
+import de.ugoe.cs.autoquest.exports.tasktrees.SubTask;
+import de.ugoe.cs.autoquest.exports.tasktrees.Task;
+import de.ugoe.cs.autoquest.exports.tasktrees.TaskModel;
+import de.ugoe.cs.autoquest.exports.tasktrees.TemporalOperator;
+import de.ugoe.cs.autoquest.exports.tasktrees.TemporalOperatorName;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.IOptional;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
+import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public class CTTExportUtils {
+
+    /** */
+    private static final ObjectFactory objFact = new ObjectFactory();
+    
+    /**
+     * 
+     */
+    public static void exportToCTT(ITask task, String filename) {
+        TaskModel cttModel = objFact.createTaskModel();
+        cttModel.setTask(CTTExportUtils.map(task, false, false, null));
+        cttModel.setNameTaskModelID(Integer.toString(task.getId()));
+
+        writeToFile(cttModel, new File(filename));
+    }
+    
+
+    /**
+     *
+     */
+    public static Task map(ITask            task,
+                           boolean          isIterative,
+                           boolean          isOptional,
+                           TemporalOperator operator)
+    {
+        if (task instanceof ISequence) {
+            return map((ISequence) task, isIterative, isOptional, operator);
+        }
+        else if (task instanceof ISelection) {
+            return map((ISelection) task, isIterative, isOptional, operator);
+        }
+        else if (task instanceof IOptional) {
+            return map((IOptional) task, isIterative, operator);
+        }
+        else if (task instanceof IIteration) {
+            return map((IIteration) task, isOptional, operator);
+        }
+        else if (task instanceof IEventTask) {
+            return map((IEventTask) task, isIterative, isOptional, operator);
+        }
+        else {
+            throw new IllegalArgumentException("unknown type of task: " + task);
+        }
+    }
+
+    /**
+     *
+     */
+    public static void writeToFile(TaskModel model, File file) {
+        String taskId = model.getNameTaskModelID();
+        
+        FileOutputStream out = null;
+        try {
+            out = new FileOutputStream(file);
+            
+            JAXBContext jaxbContext =
+                JAXBContext.newInstance(TaskModel.class.getPackage().getName());
+            Marshaller marshaller = jaxbContext.createMarshaller();
+
+            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+            marshaller.marshal(model, out);
+            Console.traceln(Level.INFO, "wrote model of " + taskId + " to file");
+        }
+        catch (JAXBException | IOException e) {
+            Console.traceln(Level.WARNING, "could not write model of " + taskId + " to file: " + e);
+            Console.logException(e);
+        }
+        finally {
+            if (out != null) {
+                try {
+                    out.close();
+                }
+                catch (Exception e) {
+                    // ignore
+                }
+            }
+        }
+    }
+
+    /**
+     *
+     */
+    private static Task map(IEventTask       task,
+                            boolean          isIterative,
+                            boolean          isOptional,
+                            TemporalOperator operator)
+    {
+        return createTask(task, Category.INTERACTION, isIterative, isOptional, operator);
+    }
+
+    /**
+     *
+     */
+    private static Task map(ISequence        task,
+                            boolean          isIterative,
+                            boolean          isOptional,
+                            TemporalOperator operator)
+    {
+        Task result = createTask(task, Category.ABSTRACTION, isIterative, isOptional, operator);
+        
+        // handle the children
+        TemporalOperator operatorForChildren = objFact.createTemporalOperator();
+        operatorForChildren.setName(TemporalOperatorName.SEQUENTIAL_ENABLING);
+        
+        SubTask subTask = objFact.createSubTask();
+        List<ITask> children = task.getChildren();
+        
+        Task precedingChild = null;
+        for (int i = 0; i < children.size(); i++) {
+            Task child = map(children.get(i), false, false,
+                             ((i < (children.size() - 1)) ? operatorForChildren : null));
+            
+            ensureParentAndSibling(result, child, precedingChild);
+            
+            subTask.getTask().add(child);
+            precedingChild = child;
+        }
+        
+        result.setSubTask(subTask);
+        
+        return result;
+    }
+
+    /**
+     *
+     */
+    private static Task map(ISelection       task,
+                            boolean          isIterative,
+                            boolean          isOptional,
+                            TemporalOperator operator)
+    {
+        Task result = createTask(task, Category.ABSTRACTION, isIterative, isOptional, operator);
+        
+        // handle the children
+        TemporalOperator operatorForChildren = objFact.createTemporalOperator();
+        operatorForChildren.setName(TemporalOperatorName.CHOICE);
+        
+        SubTask subTask = objFact.createSubTask();
+        List<ITask> children = task.getChildren();
+        
+        Task precedingChild = null;
+        for (int i = 0; i < children.size(); i++) {
+            Task child = map(children.get(i), false, false,
+                             ((i < (children.size() - 1)) ? operatorForChildren : null));
+            
+            ensureParentAndSibling(result, child, precedingChild);
+            
+            subTask.getTask().add(child);
+            precedingChild = child;
+        }
+        
+        result.setSubTask(subTask);
+        
+        return result;
+    }
+
+    /**
+     *
+     */
+    private static Task map(IIteration       task,
+                            boolean          isOptional,
+                            TemporalOperator operator)
+    {
+        return map(task.getMarkedTask(), true, isOptional, operator);
+    }
+
+    /**
+     *
+     */
+    private static Task map(IOptional        task,
+                            boolean          isIterative,
+                            TemporalOperator operator)
+    {
+        return map(task.getMarkedTask(), isIterative, true, operator);
+    }
+    
+    /**
+     * 
+     */
+    private static Task createTask(ITask            task,
+                                   Category         category,
+                                   boolean          isIterative,
+                                   boolean          isOptional,
+                                   TemporalOperator operator)
+    {
+        Task result = objFact.createTask();
+        
+        // set the attributes
+        result.setIdentifier(task.getType() + " " + task.getId());
+        result.setCategory(category);
+        result.setIterative(isIterative);
+        result.setOptional(isOptional);
+        result.setPartOfCooperation(false);
+        result.setFrequency(null);
+        
+        // set the child tags
+        result.setName(task.getType() + " " + task.getId());
+        
+        if (operator != null) {
+            result.setTemporalOperator(operator);
+        }
+        
+        return result;
+    }
+
+    /**
+     *
+     */
+    private static void ensureParentAndSibling(Task result, Task child, Task precedingChild) {
+        // set the parent
+        Parent parent = objFact.createParent();
+        parent.setName(result.getName());
+        child.setParent(parent);
+        
+        // set previous sibling, if any
+        if (precedingChild != null) {
+            SiblingLeft siblingLeft = objFact.createSiblingLeft();
+            siblingLeft.setName(precedingChild.getName());
+            child.setSiblingLeft(siblingLeft);
+            
+            SiblingRight siblingRight = objFact.createSiblingRight();
+            siblingRight.setName(child.getName());
+            precedingChild.setSiblingRight(siblingRight);
+        }
+    }
+    
+    /**
+     * 
+     */
+    private CTTExportUtils() {
+        // prevent instantiation
+    }
+}
Index: /trunk/autoquest-plugin-exports/src/main/resources/Ctt-v2.1.xsd
===================================================================
--- /trunk/autoquest-plugin-exports/src/main/resources/Ctt-v2.1.xsd	(revision 2058)
+++ /trunk/autoquest-plugin-exports/src/main/resources/Ctt-v2.1.xsd	(revision 2058)
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Changes
+	- added the structured post-condition element 
+-->
+<xs:schema xmlns="http://giove.isti.cnr.it/ctt"
+	elementFormDefault="qualified" targetNamespace="http://giove.isti.cnr.it/ctt"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema">
+	<xs:element name="TaskModel">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Task" type="Task" />
+			</xs:sequence>
+			<xs:attribute name="NameTaskModelID" type="xs:string"
+				use="required" />
+		</xs:complexType>
+	</xs:element>
+
+	<xs:complexType name="Task">
+		<xs:sequence>
+			<xs:element name="Name" type="xs:string" />
+			<xs:element name="Type" type="xs:string" />
+			<xs:element name="Description" type="xs:string" />
+			<xs:element minOccurs="0" maxOccurs="unbounded" name="Platform"
+				type="xs:string" />
+			<xs:element name="Precondition" type="ConditionGroup" />
+			<xs:element name="Postcondition" type="ConditionGroup" />
+			<xs:element minOccurs="0" maxOccurs="1" name="TemporalOperator"
+				type="TemporalOperator" />
+			<xs:element name="TimePerformance" type="TimePerformance" />
+			<xs:element minOccurs="0" maxOccurs="1" name="Parent"
+				type="Parent" />
+			<xs:element minOccurs="0" maxOccurs="1" name="SiblingLeft"
+				type="SiblingLeft" />
+			<xs:element minOccurs="0" maxOccurs="1" name="SiblingRight"
+				type="SiblingRight" />
+			<xs:element minOccurs="0" maxOccurs="unbounded" name="Object"
+				type="Object" />
+			<xs:element minOccurs="0" maxOccurs="1" name="SubTask"
+				type="SubTask" />
+		</xs:sequence>
+		<xs:attribute name="Identifier" type="xs:string" use="required" />
+		<xs:attribute name="Category" use="required" type="Category" />
+		<xs:attribute name="Iterative" use="required" type="xs:boolean" />
+		<xs:attribute name="Optional" use="required" type="xs:boolean" />
+		<xs:attribute name="PartOfCooperation" use="required"
+			type="xs:boolean" />
+		<xs:attribute name="Frequency" type="xs:string" use="required" />
+	</xs:complexType>
+
+
+
+	<xs:complexType name="TemporalOperator">
+		<xs:attribute name="name" type="TemporalOperatorName" />
+	</xs:complexType>
+
+	<xs:complexType name="TimePerformance">
+		<xs:sequence>
+			<xs:element name="Max" type="xs:string" />
+			<xs:element name="Min" type="xs:string" />
+			<xs:element name="Average" type="xs:string" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="Parent">
+		<xs:attribute name="name" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="SiblingLeft">
+		<xs:attribute name="name" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="SiblingRight">
+		<xs:attribute name="name" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="Object">
+		<xs:sequence>
+			<xs:element minOccurs="0" maxOccurs="unbounded" name="Platform"
+				type="xs:string" />
+			<xs:element name="InputAction" type="InputAction" />
+			<xs:element name="OutputAction" type="OutputAction" />
+		</xs:sequence>
+		<xs:attribute name="name" type="xs:string" use="required" />
+		<xs:attribute name="class" use="required" type="ObjectClass" />
+		<xs:attribute name="type" use="required" type="ObjectType" />
+		<xs:attribute name="access_mode" use="required" type="ObjectAccess" />
+		<xs:attribute name="cardinality" use="required" type="ObjectCardinality" />
+	</xs:complexType>
+
+	<xs:complexType name="InputAction">
+		<xs:attribute name="Description" type="xs:string" use="required" />
+		<xs:attribute name="From" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="OutputAction">
+		<xs:attribute name="Description" type="xs:string" use="required" />
+		<xs:attribute name="To" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="SubTask">
+		<xs:sequence>
+			<xs:element minOccurs="1" maxOccurs="unbounded" name="Task" type="Task" />
+		</xs:sequence>
+	</xs:complexType>
+
+
+	<!-- structured precondition modeling -->
+
+	<xs:complexType name="ConditionGroup">
+		<xs:choice minOccurs="2" maxOccurs="unbounded">
+			<xs:element name="ConditionGroup" type="ConditionGroup" />
+			<xs:element name="ConditionLiteral" type="ConditionLiteral" />
+		</xs:choice>
+		<xs:attribute name="operator" type="BinaryOperator" />
+	</xs:complexType>
+
+	<xs:complexType name="ConditionLiteral">
+		<xs:attribute name="object" type="xs:string" />
+		<xs:attribute name="value" type="xs:string" />
+	</xs:complexType>
+
+	<!-- Simple types -->
+	<xs:simpleType name="Category">
+		<xs:restriction base="xs:NMTOKEN">
+			<xs:enumeration value="abstraction" />
+			<xs:enumeration value="user" />
+			<xs:enumeration value="interaction" />
+			<xs:enumeration value="application" />
+			<xs:enumeration value="cooperation" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="TemporalOperatorName">
+		<xs:restriction base="xs:NMTOKEN">
+			<xs:enumeration value="SequentialEnabling" />
+			<xs:enumeration value="Disabling" />
+			<xs:enumeration value="Choice" />
+			<xs:enumeration value="Interleaving" />
+			<xs:enumeration value="InterleavingInfo" />
+			<xs:enumeration value="Synchronization" />
+			<xs:enumeration value="SuspendResume" />
+			<xs:enumeration value="SequentialEnablingInfo" />
+			<xs:enumeration value="OrderIndependence"/>
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="ObjectClass">
+		<xs:restriction base="xs:NMTOKEN">
+			<xs:enumeration value="Text" />
+			<xs:enumeration value="Numerical" />
+			<xs:enumeration value="Object" />
+			<xs:enumeration value="Description" />
+			<xs:enumeration value="Position" />
+			<xs:enumeration value="String"/>
+			<xs:enumeration value="Decimal"/>
+			<xs:enumeration value="Integer"/>
+			<xs:enumeration value="Boolean"/>
+			<xs:enumeration value="Date"/>
+			<xs:enumeration value="Time"/>
+			<xs:enumeration value="null" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="ObjectType">
+		<xs:restriction base="xs:NMTOKEN">
+			<xs:enumeration value="Perceivable" />
+			<xs:enumeration value="Application" />
+			<xs:enumeration value="null" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="ObjectAccess">
+		<xs:restriction base="xs:NMTOKEN">
+			<xs:enumeration value="Access" />
+			<xs:enumeration value="Modification" />
+			<xs:enumeration value="null" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="ObjectCardinality">
+		<xs:restriction base="xs:NMTOKEN">
+			<xs:enumeration value="Low" />
+			<xs:enumeration value="Medium" />
+			<xs:enumeration value="High" />
+			<xs:enumeration value="null" />
+		</xs:restriction>
+	</xs:simpleType>
+
+
+	<xs:simpleType name="BinaryOperator">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="and" id="and" />
+			<xs:enumeration value="or" id="or" />
+			<xs:enumeration value="xor" id="xor" />
+			<xs:enumeration value="contains" id="contains" />
+			<xs:enumeration value="starts" id="starts" />
+			<xs:enumeration value="ends" id="ends" />
+			<xs:enumeration value="gt" id="gt" />
+			<xs:enumeration value="gteq" id="gteq" />
+			<xs:enumeration value="lteq" id="lteq" />
+			<xs:enumeration value="lt" id="lt" />
+			<xs:enumeration value="eq" id="eq" />
+			<xs:enumeration value="neq" id="neq" />
+		</xs:restriction>
+	</xs:simpleType>
+
+</xs:schema>
