Initial model generator UI and configuration model added
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.classpath b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.classpath
new file mode 100644
index 0000000..15a4e05
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.classpath
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src-gen">
+		<attributes>
+			<attribute name="ignore_optional_problems" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.gitignore b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.gitignore
new file mode 100644
index 0000000..934e0e0
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/target
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.project b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.project
new file mode 100644
index 0000000..4f92a9a
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.app4mc.amalthea.generator.configuration</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
new file mode 100644
index 0000000..ed6e784
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
@@ -0,0 +1,21 @@
+BuilderConfiguration.is_project_specific=true
+autobuilding=true
+eclipse.preferences.version=1
+generateGeneratedAnnotation=false
+generateSuppressWarnings=true
+generatedAnnotationComment=
+includeDateInGenerated=false
+outlet.DEFAULT_OUTPUT.cleanDirectory=false
+outlet.DEFAULT_OUTPUT.cleanupDerived=false
+outlet.DEFAULT_OUTPUT.createDirectory=true
+outlet.DEFAULT_OUTPUT.derived=false
+outlet.DEFAULT_OUTPUT.directory=./src-gen
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.keepLocalHistory=true
+outlet.DEFAULT_OUTPUT.override=true
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.ignore=
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=
+targetJavaVersion=JAVA5
+useJavaCompilerCompliance=true
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.xtend.core.Xtend.prefs b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..e2a48f9
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,21 @@
+BuilderConfiguration.is_project_specific=true
+autobuilding=true
+eclipse.preferences.version=1
+generateGeneratedAnnotation=false
+generateSuppressWarnings=true
+generatedAnnotationComment=
+includeDateInGenerated=false
+outlet.DEFAULT_OUTPUT.cleanDirectory=false
+outlet.DEFAULT_OUTPUT.cleanupDerived=true
+outlet.DEFAULT_OUTPUT.createDirectory=true
+outlet.DEFAULT_OUTPUT.derived=false
+outlet.DEFAULT_OUTPUT.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.keepLocalHistory=false
+outlet.DEFAULT_OUTPUT.override=true
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.ignore=
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=
+targetJavaVersion=JAVA5
+useJavaCompilerCompliance=true
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/META-INF/MANIFEST.MF b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cc8fe07
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC Amalthea Model Generator Configuration
+Bundle-SymbolicName: org.eclipse.app4mc.amalthea.generator.configuration;singleton:=true
+Bundle-Version: 0.8.1.qualifier
+Bundle-ClassPath: .
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.app4mc.amalthea.generator.configuration,
+ org.eclipse.app4mc.amalthea.generator.configuration.impl,
+ org.eclipse.app4mc.amalthea.generator.configuration.util
+Bundle-Vendor: Eclipse.org
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xcore.lib,
+ org.eclipse.xtext.xbase.lib;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/about.html b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/about.html
new file mode 100644
index 0000000..49696f9
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/about.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>September 30, 2013</p>	
+<h3>License</h3>
+
+<p>APP4MC provides all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/build.properties b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/build.properties
new file mode 100644
index 0000000..ef72b14
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/build.properties
@@ -0,0 +1,24 @@
+# *******************************************************************************
+#  Copyright (c) 2016 Robert Bosch GmbH and others.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#     Generated using Eclipse EMF
+# 
+# *******************************************************************************
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/,\
+           src/
+output.. = bin/
+src.includes = epl-v10.html,\
+               pom.xml,\
+               about.html,\
+               model/
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/epl-v10.html b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/model/RTMGC.xcore b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/model/RTMGC.xcore
new file mode 100644
index 0000000..42030da
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/model/RTMGC.xcore
@@ -0,0 +1,213 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+ 
+ @GenModel(
+	modelName="RTMGC", prefix="RTMGC",
+	copyrightText="*******************************************************************************\r\n Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License v1.0\r\n which accompanies this distribution, and is available at\r\n http://www.eclipse.org/legal/epl-v10.html\r\n\r\n    Generated using Eclipse EMF\r\n\r\n*******************************************************************************"
+)
+
+package org.eclipse.app4mc.amalthea.generator.configuration
+
+import org.eclipse.emf.ecore.xml.^type.PositiveInteger
+import org.eclipse.emf.ecore.xml.^type.UnsignedInt
+
+class RTMGC {
+	contains Generation[1] generation
+}
+
+class Generation {
+	PositiveInteger count
+	String baseModel
+	String[1..*] hwModels
+	String[1..*] osModels
+	String swModel
+	String outputFolder
+	contains ActivationProperties[1] activations
+	contains LabelProperties[1] labels
+	contains RunnableProperties[1] runnables
+	contains SemaphoreProperties[1] semaphores
+	contains TaskProperties[1] tasks
+}
+
+class ActivationProperties {
+	contains PeriodicActivation[1] periodicActivation
+	contains PeriodicTriangleShift[1] periodicTriangleShift
+	contains SporadicActivation[1] sporadicActivation
+}
+
+abstract class Activation {
+	PositiveInteger appearanceProbability
+}
+
+class PeriodicActivation extends Activation {
+	contains Recurrence[1] recurrence
+	contains IntegerTimeDistribution[1] offset
+}
+
+class PeriodicTriangleShift extends PeriodicActivation {
+		contains TriangleClock[1] clock
+}
+
+class TriangleClock {
+	contains DoubleDistribution min_start
+	contains DoubleDistribution max_end
+	contains IntegerTimeDistribution shift
+	contains IntegerTimeDistribution period
+}
+
+class SporadicActivation extends Activation {
+	contains IntegerTimeDistribution[1] minValue
+	contains PercentageDistribution[1] maxValueDistance
+	contains PercentageDistribution[1] avgValueDistance
+}
+
+class Recurrence extends IntegerTimeDistribution {
+	RecurrenceType recurrenceType = "random"
+}
+
+enum RecurrenceType {
+	random = 0
+	harmonic = 1
+}
+
+class LabelProperties {
+	contains IntegerDistribution[1] count
+	contains IntegerDistribution[1] bitSize
+	contains IntegerDistribution[1] perSWC
+}
+
+class RunnableProperties {
+	RuntimeType[1] runtimeType = "instructionsConst"
+	contains IntegerDistribution[1] instructionsPerRunnables
+	contains IntegerDistribution[1] runnablesPerCallSequence
+	contains IntegerDistribution[1] runnablesPerSWC
+	contains PercentageDistribution[1] minStatisticsDistance
+	contains PercentageDistribution[1] maxStatisticsDistance
+}
+
+enum RuntimeType {
+	instructionsConst = 0
+	instructionsStatistics = 1
+}
+
+class SemaphoreProperties {
+	contains IntegerDistribution[1] count
+	boolean priorityCeilingProtocol
+	SemaphoreType[1] semaphoreType = "counting"
+	WaitModes[1] waitMode = "active waiting"
+	contains SemaphoreAccessProperties[1] SemaphoreAccess
+}
+
+class SemaphoreAccessProperties {
+	contains IntegerDistribution[1] perUnitReadAccessCount
+	contains IntegerDistribution[1] perUnitWriteAccessCount
+	SemaphoreRequestOrder[1] requestOrder = "none"
+	SemaphoreAccessType[1] accessType = "RandRunnable"
+}
+
+enum SemaphoreRequestOrder {
+	none = 0
+	requestGrouped = 1
+	nameIncreasing = 2
+}
+
+enum SemaphoreAccessType {
+	RWperTask = 0
+    RWperCallSequence = 1
+	RandRunnable = 2
+	WholeCS = 3
+	GroupedFMLP = 4
+	WeakFMLP = 5
+	EVA = 6
+}
+
+enum SemaphoreType {
+	binary = 0
+	counting = 1
+	both = 2
+}
+
+enum WaitModes {
+	polling as "active waiting" = 0
+	parking as "passive waiting" = 1
+}
+
+class TaskProperties {
+	contains IntegerDistribution[1] count
+	contains PercentageDistribution[1] load
+	contains IntegerDistribution[1] perTaskGroup
+	contains IntegerDistribution[1] mta
+	contains DoubleDistribution[1] deadlineFactor
+	contains IntegerDistribution[1] callSequencesBetweenSchedulePoints
+	contains CallGraphProperties[1] callGraphs
+	ProcessMappingAlgorithms mappingDetermination = "Worst Fit Decreasing"
+	PriorityDeterminationAlgorithm priorityDetermination = "Rate Monotonic"
+}
+
+class CallGraphProperties {
+	contains PercentageDistribution[1] signalDomainCoverage
+	contains PercentageDistribution[1] callSequenceUsage
+}
+
+abstract class Distribution {
+	DistributionType ^type = "Constant Value"
+}
+
+class IntegerDistribution extends Distribution {
+	UnsignedInt min
+	UnsignedInt avg
+	UnsignedInt max
+}
+
+class IntegerTimeDistribution extends IntegerDistribution {
+	TimeUnit unit = "ms"
+}
+
+class PercentageDistribution extends Distribution {
+	double minPercentage
+	double avgPercentage
+	double maxPercentage
+}
+
+class DoubleDistribution extends Distribution {
+	double min
+	double avg
+	double max
+}
+
+enum DistributionType {
+	const as "Constant Value" = 0
+	uniform as "Uniform Distribution" = 1
+	weibull as "Weibull Distribution" = 2
+}
+
+enum ProcessMappingAlgorithms {
+	WFD as "Worst Fit Decreasing" = 0
+	WFI as "Worst Fit Increasing" = 1
+	BFD as "Best Fit Decreasing" = 2
+	BFI as "Best Fit Increasing" = 3
+}
+
+enum PriorityDeterminationAlgorithm {
+	RM as "Rate Monotonic" = 0
+	DM as "Deadline Monotonic" = 1
+}
+
+enum TimeUnit {
+	ps = 0
+	ns = 1
+	us = 2
+	ms = 3
+	s = 4
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/plugin.properties b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/plugin.properties
new file mode 100644
index 0000000..cb6a4fc
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/plugin.properties
@@ -0,0 +1,13 @@
+# *******************************************************************************
+#  Copyright (c) 2015 Robert Bosch GmbH and others.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#     Generated using Eclipse EMF
+# 
+# *******************************************************************************
+
+pluginName = AMALTHEA Model
+providerName = Eclipse.org
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/plugin.xml b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/plugin.xml
new file mode 100644
index 0000000..c3eba02
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/plugin.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ *******************************************************************************
+  Copyright (c) 2016 Robert Bosch GmbH and others.
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+ 
+     Generated using Eclipse EMF
+ 
+ *******************************************************************************
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated RTMGC -->
+      <package
+            uri="org.eclipse.app4mc.amalthea.generator.configuration"
+            class="org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage"
+            genModel="model/RTMGC.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/pom.xml b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/pom.xml
new file mode 100644
index 0000000..9943b3f
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<relativePath>../../build/org.eclipse.app4mc.build/pom.xml</relativePath>
+		<groupId>org.eclipse.app4mc.build</groupId>
+		<artifactId>parent</artifactId>
+		<version>0.8.1-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.app4mc.amalthea.generator.configuration</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Activation.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Activation.java
new file mode 100644
index 0000000..0d2a3de
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Activation.java
@@ -0,0 +1,62 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.math.BigInteger;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Activation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Activation#getAppearanceProbability <em>Appearance Probability</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getActivation()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Activation extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Appearance Probability</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Appearance Probability</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Appearance Probability</em>' attribute.
+	 * @see #setAppearanceProbability(BigInteger)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getActivation_AppearanceProbability()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.PositiveInteger"
+	 * @generated
+	 */
+	BigInteger getAppearanceProbability();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Activation#getAppearanceProbability <em>Appearance Probability</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Appearance Probability</em>' attribute.
+	 * @see #getAppearanceProbability()
+	 * @generated
+	 */
+	void setAppearanceProbability(BigInteger value);
+
+} // Activation
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/ActivationProperties.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/ActivationProperties.java
new file mode 100644
index 0000000..b704ac5
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/ActivationProperties.java
@@ -0,0 +1,114 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Activation Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicActivation <em>Periodic Activation</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicTriangleShift <em>Periodic Triangle Shift</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getSporadicActivation <em>Sporadic Activation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getActivationProperties()
+ * @model
+ * @generated
+ */
+public interface ActivationProperties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Periodic Activation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Periodic Activation</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Periodic Activation</em>' containment reference.
+	 * @see #setPeriodicActivation(PeriodicActivation)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getActivationProperties_PeriodicActivation()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PeriodicActivation getPeriodicActivation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicActivation <em>Periodic Activation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Periodic Activation</em>' containment reference.
+	 * @see #getPeriodicActivation()
+	 * @generated
+	 */
+	void setPeriodicActivation(PeriodicActivation value);
+
+	/**
+	 * Returns the value of the '<em><b>Periodic Triangle Shift</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Periodic Triangle Shift</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Periodic Triangle Shift</em>' containment reference.
+	 * @see #setPeriodicTriangleShift(PeriodicTriangleShift)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getActivationProperties_PeriodicTriangleShift()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PeriodicTriangleShift getPeriodicTriangleShift();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicTriangleShift <em>Periodic Triangle Shift</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Periodic Triangle Shift</em>' containment reference.
+	 * @see #getPeriodicTriangleShift()
+	 * @generated
+	 */
+	void setPeriodicTriangleShift(PeriodicTriangleShift value);
+
+	/**
+	 * Returns the value of the '<em><b>Sporadic Activation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sporadic Activation</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sporadic Activation</em>' containment reference.
+	 * @see #setSporadicActivation(SporadicActivation)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getActivationProperties_SporadicActivation()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	SporadicActivation getSporadicActivation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getSporadicActivation <em>Sporadic Activation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Sporadic Activation</em>' containment reference.
+	 * @see #getSporadicActivation()
+	 * @generated
+	 */
+	void setSporadicActivation(SporadicActivation value);
+
+} // ActivationProperties
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/CallGraphProperties.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/CallGraphProperties.java
new file mode 100644
index 0000000..daa870d
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/CallGraphProperties.java
@@ -0,0 +1,87 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Call Graph Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getSignalDomainCoverage <em>Signal Domain Coverage</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getCallSequenceUsage <em>Call Sequence Usage</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getCallGraphProperties()
+ * @model
+ * @generated
+ */
+public interface CallGraphProperties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Signal Domain Coverage</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Signal Domain Coverage</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Signal Domain Coverage</em>' containment reference.
+	 * @see #setSignalDomainCoverage(PercentageDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getCallGraphProperties_SignalDomainCoverage()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PercentageDistribution getSignalDomainCoverage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getSignalDomainCoverage <em>Signal Domain Coverage</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Signal Domain Coverage</em>' containment reference.
+	 * @see #getSignalDomainCoverage()
+	 * @generated
+	 */
+	void setSignalDomainCoverage(PercentageDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Call Sequence Usage</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Call Sequence Usage</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Call Sequence Usage</em>' containment reference.
+	 * @see #setCallSequenceUsage(PercentageDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getCallGraphProperties_CallSequenceUsage()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PercentageDistribution getCallSequenceUsage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getCallSequenceUsage <em>Call Sequence Usage</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Call Sequence Usage</em>' containment reference.
+	 * @see #getCallSequenceUsage()
+	 * @generated
+	 */
+	void setCallSequenceUsage(PercentageDistribution value);
+
+} // CallGraphProperties
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Distribution.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Distribution.java
new file mode 100644
index 0000000..7841a80
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Distribution.java
@@ -0,0 +1,64 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Distribution#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getDistribution()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Distribution extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The default value is <code>"Constant Value"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.DistributionType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DistributionType
+	 * @see #setType(DistributionType)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getDistribution_Type()
+	 * @model default="Constant Value" unique="false"
+	 * @generated
+	 */
+	DistributionType getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Distribution#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DistributionType
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(DistributionType value);
+
+} // Distribution
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/DistributionType.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/DistributionType.java
new file mode 100644
index 0000000..d61ea0e
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/DistributionType.java
@@ -0,0 +1,251 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Distribution Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getDistributionType()
+ * @model
+ * @generated
+ */
+public enum DistributionType implements Enumerator {
+	/**
+	 * The '<em><b>Const</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CONST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CONST(0, "const", "Constant Value"),
+
+	/**
+	 * The '<em><b>Uniform</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNIFORM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNIFORM(1, "uniform", "Uniform Distribution"),
+
+	/**
+	 * The '<em><b>Weibull</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WEIBULL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WEIBULL(2, "weibull", "Weibull Distribution");
+
+	/**
+	 * The '<em><b>Const</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Const</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #CONST
+	 * @model name="const" literal="Constant Value"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONST_VALUE = 0;
+
+	/**
+	 * The '<em><b>Uniform</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Uniform</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNIFORM
+	 * @model name="uniform" literal="Uniform Distribution"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNIFORM_VALUE = 1;
+
+	/**
+	 * The '<em><b>Weibull</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Weibull</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WEIBULL
+	 * @model name="weibull" literal="Weibull Distribution"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WEIBULL_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Distribution Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final DistributionType[] VALUES_ARRAY =
+		new DistributionType[] {
+			CONST,
+			UNIFORM,
+			WEIBULL,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Distribution Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<DistributionType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Distribution Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DistributionType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			DistributionType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Distribution Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DistributionType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			DistributionType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Distribution Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DistributionType get(int value) {
+		switch (value) {
+			case CONST_VALUE: return CONST;
+			case UNIFORM_VALUE: return UNIFORM;
+			case WEIBULL_VALUE: return WEIBULL;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private DistributionType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //DistributionType
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/DoubleDistribution.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/DoubleDistribution.java
new file mode 100644
index 0000000..ab82b9e
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/DoubleDistribution.java
@@ -0,0 +1,113 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Double Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMin <em>Min</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getAvg <em>Avg</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMax <em>Max</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getDoubleDistribution()
+ * @model
+ * @generated
+ */
+public interface DoubleDistribution extends Distribution {
+	/**
+	 * Returns the value of the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min</em>' attribute.
+	 * @see #setMin(double)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getDoubleDistribution_Min()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getMin();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMin <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min</em>' attribute.
+	 * @see #getMin()
+	 * @generated
+	 */
+	void setMin(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Avg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Avg</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Avg</em>' attribute.
+	 * @see #setAvg(double)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getDoubleDistribution_Avg()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getAvg();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getAvg <em>Avg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Avg</em>' attribute.
+	 * @see #getAvg()
+	 * @generated
+	 */
+	void setAvg(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max</em>' attribute.
+	 * @see #setMax(double)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getDoubleDistribution_Max()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getMax();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMax <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max</em>' attribute.
+	 * @see #getMax()
+	 * @generated
+	 */
+	void setMax(double value);
+
+} // DoubleDistribution
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Generation.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Generation.java
new file mode 100644
index 0000000..30fe752
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Generation.java
@@ -0,0 +1,314 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.math.BigInteger;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Generation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getBaseModel <em>Base Model</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getHwModels <em>Hw Models</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getOsModels <em>Os Models</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSwModel <em>Sw Model</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getOutputFolder <em>Output Folder</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getActivations <em>Activations</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getLabels <em>Labels</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getRunnables <em>Runnables</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSemaphores <em>Semaphores</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getTasks <em>Tasks</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration()
+ * @model
+ * @generated
+ */
+public interface Generation extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count</em>' attribute.
+	 * @see #setCount(BigInteger)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_Count()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.PositiveInteger"
+	 * @generated
+	 */
+	BigInteger getCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getCount <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count</em>' attribute.
+	 * @see #getCount()
+	 * @generated
+	 */
+	void setCount(BigInteger value);
+
+	/**
+	 * Returns the value of the '<em><b>Base Model</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Model</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Model</em>' attribute.
+	 * @see #setBaseModel(String)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_BaseModel()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getBaseModel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getBaseModel <em>Base Model</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Model</em>' attribute.
+	 * @see #getBaseModel()
+	 * @generated
+	 */
+	void setBaseModel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Hw Models</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hw Models</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hw Models</em>' attribute list.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_HwModels()
+	 * @model unique="false" required="true"
+	 * @generated
+	 */
+	EList<String> getHwModels();
+
+	/**
+	 * Returns the value of the '<em><b>Os Models</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Os Models</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Os Models</em>' attribute list.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_OsModels()
+	 * @model unique="false" required="true"
+	 * @generated
+	 */
+	EList<String> getOsModels();
+
+	/**
+	 * Returns the value of the '<em><b>Sw Model</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sw Model</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sw Model</em>' attribute.
+	 * @see #setSwModel(String)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_SwModel()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getSwModel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSwModel <em>Sw Model</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Sw Model</em>' attribute.
+	 * @see #getSwModel()
+	 * @generated
+	 */
+	void setSwModel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Output Folder</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output Folder</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output Folder</em>' attribute.
+	 * @see #setOutputFolder(String)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_OutputFolder()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getOutputFolder();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getOutputFolder <em>Output Folder</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Output Folder</em>' attribute.
+	 * @see #getOutputFolder()
+	 * @generated
+	 */
+	void setOutputFolder(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Activations</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activations</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Activations</em>' containment reference.
+	 * @see #setActivations(ActivationProperties)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_Activations()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	ActivationProperties getActivations();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getActivations <em>Activations</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Activations</em>' containment reference.
+	 * @see #getActivations()
+	 * @generated
+	 */
+	void setActivations(ActivationProperties value);
+
+	/**
+	 * Returns the value of the '<em><b>Labels</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Labels</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Labels</em>' containment reference.
+	 * @see #setLabels(LabelProperties)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_Labels()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	LabelProperties getLabels();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getLabels <em>Labels</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Labels</em>' containment reference.
+	 * @see #getLabels()
+	 * @generated
+	 */
+	void setLabels(LabelProperties value);
+
+	/**
+	 * Returns the value of the '<em><b>Runnables</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Runnables</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Runnables</em>' containment reference.
+	 * @see #setRunnables(RunnableProperties)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_Runnables()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	RunnableProperties getRunnables();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getRunnables <em>Runnables</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Runnables</em>' containment reference.
+	 * @see #getRunnables()
+	 * @generated
+	 */
+	void setRunnables(RunnableProperties value);
+
+	/**
+	 * Returns the value of the '<em><b>Semaphores</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Semaphores</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Semaphores</em>' containment reference.
+	 * @see #setSemaphores(SemaphoreProperties)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_Semaphores()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	SemaphoreProperties getSemaphores();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSemaphores <em>Semaphores</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Semaphores</em>' containment reference.
+	 * @see #getSemaphores()
+	 * @generated
+	 */
+	void setSemaphores(SemaphoreProperties value);
+
+	/**
+	 * Returns the value of the '<em><b>Tasks</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Tasks</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tasks</em>' containment reference.
+	 * @see #setTasks(TaskProperties)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getGeneration_Tasks()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	TaskProperties getTasks();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getTasks <em>Tasks</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Tasks</em>' containment reference.
+	 * @see #getTasks()
+	 * @generated
+	 */
+	void setTasks(TaskProperties value);
+
+} // Generation
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/IntegerDistribution.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/IntegerDistribution.java
new file mode 100644
index 0000000..900e13f
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/IntegerDistribution.java
@@ -0,0 +1,113 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integer Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMin <em>Min</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getAvg <em>Avg</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMax <em>Max</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getIntegerDistribution()
+ * @model
+ * @generated
+ */
+public interface IntegerDistribution extends Distribution {
+	/**
+	 * Returns the value of the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min</em>' attribute.
+	 * @see #setMin(long)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getIntegerDistribution_Min()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.UnsignedInt"
+	 * @generated
+	 */
+	long getMin();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMin <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min</em>' attribute.
+	 * @see #getMin()
+	 * @generated
+	 */
+	void setMin(long value);
+
+	/**
+	 * Returns the value of the '<em><b>Avg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Avg</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Avg</em>' attribute.
+	 * @see #setAvg(long)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getIntegerDistribution_Avg()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.UnsignedInt"
+	 * @generated
+	 */
+	long getAvg();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getAvg <em>Avg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Avg</em>' attribute.
+	 * @see #getAvg()
+	 * @generated
+	 */
+	void setAvg(long value);
+
+	/**
+	 * Returns the value of the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max</em>' attribute.
+	 * @see #setMax(long)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getIntegerDistribution_Max()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.UnsignedInt"
+	 * @generated
+	 */
+	long getMax();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMax <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max</em>' attribute.
+	 * @see #getMax()
+	 * @generated
+	 */
+	void setMax(long value);
+
+} // IntegerDistribution
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/IntegerTimeDistribution.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/IntegerTimeDistribution.java
new file mode 100644
index 0000000..3bb735f
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/IntegerTimeDistribution.java
@@ -0,0 +1,63 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integer Time Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution#getUnit <em>Unit</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getIntegerTimeDistribution()
+ * @model
+ * @generated
+ */
+public interface IntegerTimeDistribution extends IntegerDistribution {
+	/**
+	 * Returns the value of the '<em><b>Unit</b></em>' attribute.
+	 * The default value is <code>"ms"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Unit</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Unit</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit
+	 * @see #setUnit(TimeUnit)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getIntegerTimeDistribution_Unit()
+	 * @model default="ms" unique="false"
+	 * @generated
+	 */
+	TimeUnit getUnit();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution#getUnit <em>Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Unit</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit
+	 * @see #getUnit()
+	 * @generated
+	 */
+	void setUnit(TimeUnit value);
+
+} // IntegerTimeDistribution
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/LabelProperties.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/LabelProperties.java
new file mode 100644
index 0000000..42c1db3
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/LabelProperties.java
@@ -0,0 +1,114 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Label Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getBitSize <em>Bit Size</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getPerSWC <em>Per SWC</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getLabelProperties()
+ * @model
+ * @generated
+ */
+public interface LabelProperties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count</em>' containment reference.
+	 * @see #setCount(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getLabelProperties_Count()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getCount <em>Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count</em>' containment reference.
+	 * @see #getCount()
+	 * @generated
+	 */
+	void setCount(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Bit Size</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bit Size</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bit Size</em>' containment reference.
+	 * @see #setBitSize(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getLabelProperties_BitSize()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getBitSize();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getBitSize <em>Bit Size</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bit Size</em>' containment reference.
+	 * @see #getBitSize()
+	 * @generated
+	 */
+	void setBitSize(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Per SWC</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Per SWC</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Per SWC</em>' containment reference.
+	 * @see #setPerSWC(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getLabelProperties_PerSWC()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getPerSWC();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getPerSWC <em>Per SWC</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Per SWC</em>' containment reference.
+	 * @see #getPerSWC()
+	 * @generated
+	 */
+	void setPerSWC(IntegerDistribution value);
+
+} // LabelProperties
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PercentageDistribution.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PercentageDistribution.java
new file mode 100644
index 0000000..5e15e0c
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PercentageDistribution.java
@@ -0,0 +1,113 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Percentage Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMinPercentage <em>Min Percentage</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getAvgPercentage <em>Avg Percentage</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMaxPercentage <em>Max Percentage</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPercentageDistribution()
+ * @model
+ * @generated
+ */
+public interface PercentageDistribution extends Distribution {
+	/**
+	 * Returns the value of the '<em><b>Min Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min Percentage</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min Percentage</em>' attribute.
+	 * @see #setMinPercentage(double)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPercentageDistribution_MinPercentage()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getMinPercentage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMinPercentage <em>Min Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min Percentage</em>' attribute.
+	 * @see #getMinPercentage()
+	 * @generated
+	 */
+	void setMinPercentage(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Avg Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Avg Percentage</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Avg Percentage</em>' attribute.
+	 * @see #setAvgPercentage(double)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPercentageDistribution_AvgPercentage()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getAvgPercentage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getAvgPercentage <em>Avg Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Avg Percentage</em>' attribute.
+	 * @see #getAvgPercentage()
+	 * @generated
+	 */
+	void setAvgPercentage(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Percentage</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max Percentage</em>' attribute.
+	 * @see #setMaxPercentage(double)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPercentageDistribution_MaxPercentage()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getMaxPercentage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMaxPercentage <em>Max Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Percentage</em>' attribute.
+	 * @see #getMaxPercentage()
+	 * @generated
+	 */
+	void setMaxPercentage(double value);
+
+} // PercentageDistribution
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PeriodicActivation.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PeriodicActivation.java
new file mode 100644
index 0000000..fcb4410
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PeriodicActivation.java
@@ -0,0 +1,86 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Periodic Activation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getRecurrence <em>Recurrence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getOffset <em>Offset</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPeriodicActivation()
+ * @model
+ * @generated
+ */
+public interface PeriodicActivation extends Activation {
+	/**
+	 * Returns the value of the '<em><b>Recurrence</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Recurrence</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Recurrence</em>' containment reference.
+	 * @see #setRecurrence(Recurrence)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPeriodicActivation_Recurrence()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Recurrence getRecurrence();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getRecurrence <em>Recurrence</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Recurrence</em>' containment reference.
+	 * @see #getRecurrence()
+	 * @generated
+	 */
+	void setRecurrence(Recurrence value);
+
+	/**
+	 * Returns the value of the '<em><b>Offset</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Offset</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Offset</em>' containment reference.
+	 * @see #setOffset(IntegerTimeDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPeriodicActivation_Offset()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerTimeDistribution getOffset();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getOffset <em>Offset</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Offset</em>' containment reference.
+	 * @see #getOffset()
+	 * @generated
+	 */
+	void setOffset(IntegerTimeDistribution value);
+
+} // PeriodicActivation
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PeriodicTriangleShift.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PeriodicTriangleShift.java
new file mode 100644
index 0000000..e04c981
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PeriodicTriangleShift.java
@@ -0,0 +1,59 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Periodic Triangle Shift</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift#getClock <em>Clock</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPeriodicTriangleShift()
+ * @model
+ * @generated
+ */
+public interface PeriodicTriangleShift extends PeriodicActivation {
+	/**
+	 * Returns the value of the '<em><b>Clock</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Clock</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Clock</em>' containment reference.
+	 * @see #setClock(TriangleClock)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPeriodicTriangleShift_Clock()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	TriangleClock getClock();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift#getClock <em>Clock</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Clock</em>' containment reference.
+	 * @see #getClock()
+	 * @generated
+	 */
+	void setClock(TriangleClock value);
+
+} // PeriodicTriangleShift
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PriorityDeterminationAlgorithm.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PriorityDeterminationAlgorithm.java
new file mode 100644
index 0000000..42d4fc2
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/PriorityDeterminationAlgorithm.java
@@ -0,0 +1,224 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Priority Determination Algorithm</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getPriorityDeterminationAlgorithm()
+ * @model
+ * @generated
+ */
+public enum PriorityDeterminationAlgorithm implements Enumerator {
+	/**
+	 * The '<em><b>RM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #RM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	RM(0, "RM", "Rate Monotonic"),
+
+	/**
+	 * The '<em><b>DM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DM(1, "DM", "Deadline Monotonic");
+
+	/**
+	 * The '<em><b>RM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>RM</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #RM
+	 * @model literal="Rate Monotonic"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RM_VALUE = 0;
+
+	/**
+	 * The '<em><b>DM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DM</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DM
+	 * @model literal="Deadline Monotonic"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DM_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Priority Determination Algorithm</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final PriorityDeterminationAlgorithm[] VALUES_ARRAY =
+		new PriorityDeterminationAlgorithm[] {
+			RM,
+			DM,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Priority Determination Algorithm</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<PriorityDeterminationAlgorithm> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Priority Determination Algorithm</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static PriorityDeterminationAlgorithm get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			PriorityDeterminationAlgorithm result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Priority Determination Algorithm</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static PriorityDeterminationAlgorithm getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			PriorityDeterminationAlgorithm result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Priority Determination Algorithm</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static PriorityDeterminationAlgorithm get(int value) {
+		switch (value) {
+			case RM_VALUE: return RM;
+			case DM_VALUE: return DM;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private PriorityDeterminationAlgorithm(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //PriorityDeterminationAlgorithm
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/ProcessMappingAlgorithms.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/ProcessMappingAlgorithms.java
new file mode 100644
index 0000000..8e6cc58
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/ProcessMappingAlgorithms.java
@@ -0,0 +1,278 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Process Mapping Algorithms</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getProcessMappingAlgorithms()
+ * @model
+ * @generated
+ */
+public enum ProcessMappingAlgorithms implements Enumerator {
+	/**
+	 * The '<em><b>WFD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WFD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WFD(0, "WFD", "Worst Fit Decreasing"),
+
+	/**
+	 * The '<em><b>WFI</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WFI_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WFI(1, "WFI", "Worst Fit Increasing"),
+
+	/**
+	 * The '<em><b>BFD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BFD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BFD(2, "BFD", "Best Fit Decreasing"),
+
+	/**
+	 * The '<em><b>BFI</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BFI_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BFI(3, "BFI", "Best Fit Increasing");
+
+	/**
+	 * The '<em><b>WFD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>WFD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WFD
+	 * @model literal="Worst Fit Decreasing"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WFD_VALUE = 0;
+
+	/**
+	 * The '<em><b>WFI</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>WFI</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WFI
+	 * @model literal="Worst Fit Increasing"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WFI_VALUE = 1;
+
+	/**
+	 * The '<em><b>BFD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BFD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BFD
+	 * @model literal="Best Fit Decreasing"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BFD_VALUE = 2;
+
+	/**
+	 * The '<em><b>BFI</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BFI</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BFI
+	 * @model literal="Best Fit Increasing"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BFI_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Process Mapping Algorithms</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ProcessMappingAlgorithms[] VALUES_ARRAY =
+		new ProcessMappingAlgorithms[] {
+			WFD,
+			WFI,
+			BFD,
+			BFI,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Process Mapping Algorithms</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ProcessMappingAlgorithms> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Process Mapping Algorithms</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ProcessMappingAlgorithms get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ProcessMappingAlgorithms result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Process Mapping Algorithms</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ProcessMappingAlgorithms getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ProcessMappingAlgorithms result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Process Mapping Algorithms</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ProcessMappingAlgorithms get(int value) {
+		switch (value) {
+			case WFD_VALUE: return WFD;
+			case WFI_VALUE: return WFI;
+			case BFD_VALUE: return BFD;
+			case BFI_VALUE: return BFI;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private ProcessMappingAlgorithms(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //ProcessMappingAlgorithms
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGC.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGC.java
new file mode 100644
index 0000000..504b5f6
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGC.java
@@ -0,0 +1,60 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>RTMGC</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.RTMGC#getGeneration <em>Generation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRTMGC()
+ * @model
+ * @generated
+ */
+public interface RTMGC extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Generation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Generation</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Generation</em>' containment reference.
+	 * @see #setGeneration(Generation)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRTMGC_Generation()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Generation getGeneration();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RTMGC#getGeneration <em>Generation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Generation</em>' containment reference.
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	void setGeneration(Generation value);
+
+} // RTMGC
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGCFactory.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGCFactory.java
new file mode 100644
index 0000000..e31080a
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGCFactory.java
@@ -0,0 +1,205 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage
+ * @generated
+ */
+public interface RTMGCFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	RTMGCFactory eINSTANCE = org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>RTMGC</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>RTMGC</em>'.
+	 * @generated
+	 */
+	RTMGC createRTMGC();
+
+	/**
+	 * Returns a new object of class '<em>Generation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Generation</em>'.
+	 * @generated
+	 */
+	Generation createGeneration();
+
+	/**
+	 * Returns a new object of class '<em>Activation Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Activation Properties</em>'.
+	 * @generated
+	 */
+	ActivationProperties createActivationProperties();
+
+	/**
+	 * Returns a new object of class '<em>Periodic Activation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Periodic Activation</em>'.
+	 * @generated
+	 */
+	PeriodicActivation createPeriodicActivation();
+
+	/**
+	 * Returns a new object of class '<em>Periodic Triangle Shift</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Periodic Triangle Shift</em>'.
+	 * @generated
+	 */
+	PeriodicTriangleShift createPeriodicTriangleShift();
+
+	/**
+	 * Returns a new object of class '<em>Triangle Clock</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Triangle Clock</em>'.
+	 * @generated
+	 */
+	TriangleClock createTriangleClock();
+
+	/**
+	 * Returns a new object of class '<em>Sporadic Activation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Sporadic Activation</em>'.
+	 * @generated
+	 */
+	SporadicActivation createSporadicActivation();
+
+	/**
+	 * Returns a new object of class '<em>Recurrence</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Recurrence</em>'.
+	 * @generated
+	 */
+	Recurrence createRecurrence();
+
+	/**
+	 * Returns a new object of class '<em>Label Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Label Properties</em>'.
+	 * @generated
+	 */
+	LabelProperties createLabelProperties();
+
+	/**
+	 * Returns a new object of class '<em>Runnable Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Runnable Properties</em>'.
+	 * @generated
+	 */
+	RunnableProperties createRunnableProperties();
+
+	/**
+	 * Returns a new object of class '<em>Semaphore Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Semaphore Properties</em>'.
+	 * @generated
+	 */
+	SemaphoreProperties createSemaphoreProperties();
+
+	/**
+	 * Returns a new object of class '<em>Semaphore Access Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Semaphore Access Properties</em>'.
+	 * @generated
+	 */
+	SemaphoreAccessProperties createSemaphoreAccessProperties();
+
+	/**
+	 * Returns a new object of class '<em>Task Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Task Properties</em>'.
+	 * @generated
+	 */
+	TaskProperties createTaskProperties();
+
+	/**
+	 * Returns a new object of class '<em>Call Graph Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Call Graph Properties</em>'.
+	 * @generated
+	 */
+	CallGraphProperties createCallGraphProperties();
+
+	/**
+	 * Returns a new object of class '<em>Integer Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Integer Distribution</em>'.
+	 * @generated
+	 */
+	IntegerDistribution createIntegerDistribution();
+
+	/**
+	 * Returns a new object of class '<em>Integer Time Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Integer Time Distribution</em>'.
+	 * @generated
+	 */
+	IntegerTimeDistribution createIntegerTimeDistribution();
+
+	/**
+	 * Returns a new object of class '<em>Percentage Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Percentage Distribution</em>'.
+	 * @generated
+	 */
+	PercentageDistribution createPercentageDistribution();
+
+	/**
+	 * Returns a new object of class '<em>Double Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Double Distribution</em>'.
+	 * @generated
+	 */
+	DoubleDistribution createDoubleDistribution();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	RTMGCPackage getRTMGCPackage();
+
+} //RTMGCFactory
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGCPackage.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGCPackage.java
new file mode 100644
index 0000000..fb2e033
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RTMGCPackage.java
@@ -0,0 +1,3400 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * *
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ * 
+ * *******************************************************************************
+ * <!-- end-model-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel modelName='RTMGC' prefix='RTMGC' copyrightText='*******************************************************************************\r\n Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License v1.0\r\n which accompanies this distribution, and is available at\r\n http://www.eclipse.org/legal/epl-v10.html\r\n\r\n    Generated using Eclipse EMF\r\n\r\n*******************************************************************************' basePackage='org.eclipse.app4mc.amalthea.generator'"
+ * @generated
+ */
+public interface RTMGCPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "configuration";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "org.eclipse.app4mc.amalthea.generator.configuration";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "configuration";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	RTMGCPackage eINSTANCE = org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCImpl <em>RTMGC</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRTMGC()
+	 * @generated
+	 */
+	int RTMGC = 0;
+
+	/**
+	 * The feature id for the '<em><b>Generation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RTMGC__GENERATION = 0;
+
+	/**
+	 * The number of structural features of the '<em>RTMGC</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RTMGC_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>RTMGC</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RTMGC_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl <em>Generation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getGeneration()
+	 * @generated
+	 */
+	int GENERATION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Model</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__BASE_MODEL = 1;
+
+	/**
+	 * The feature id for the '<em><b>Hw Models</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__HW_MODELS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Os Models</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__OS_MODELS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Sw Model</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__SW_MODEL = 4;
+
+	/**
+	 * The feature id for the '<em><b>Output Folder</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__OUTPUT_FOLDER = 5;
+
+	/**
+	 * The feature id for the '<em><b>Activations</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__ACTIVATIONS = 6;
+
+	/**
+	 * The feature id for the '<em><b>Labels</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__LABELS = 7;
+
+	/**
+	 * The feature id for the '<em><b>Runnables</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__RUNNABLES = 8;
+
+	/**
+	 * The feature id for the '<em><b>Semaphores</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__SEMAPHORES = 9;
+
+	/**
+	 * The feature id for the '<em><b>Tasks</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION__TASKS = 10;
+
+	/**
+	 * The number of structural features of the '<em>Generation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION_FEATURE_COUNT = 11;
+
+	/**
+	 * The number of operations of the '<em>Generation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationPropertiesImpl <em>Activation Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationPropertiesImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getActivationProperties()
+	 * @generated
+	 */
+	int ACTIVATION_PROPERTIES = 2;
+
+	/**
+	 * The feature id for the '<em><b>Periodic Activation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Periodic Triangle Shift</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Sporadic Activation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION = 2;
+
+	/**
+	 * The number of structural features of the '<em>Activation Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION_PROPERTIES_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Activation Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION_PROPERTIES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationImpl <em>Activation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getActivation()
+	 * @generated
+	 */
+	int ACTIVATION = 3;
+
+	/**
+	 * The feature id for the '<em><b>Appearance Probability</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION__APPEARANCE_PROBABILITY = 0;
+
+	/**
+	 * The number of structural features of the '<em>Activation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Activation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVATION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicActivationImpl <em>Periodic Activation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicActivationImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPeriodicActivation()
+	 * @generated
+	 */
+	int PERIODIC_ACTIVATION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Appearance Probability</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_ACTIVATION__APPEARANCE_PROBABILITY = ACTIVATION__APPEARANCE_PROBABILITY;
+
+	/**
+	 * The feature id for the '<em><b>Recurrence</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_ACTIVATION__RECURRENCE = ACTIVATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_ACTIVATION__OFFSET = ACTIVATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Periodic Activation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_ACTIVATION_FEATURE_COUNT = ACTIVATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Periodic Activation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_ACTIVATION_OPERATION_COUNT = ACTIVATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicTriangleShiftImpl <em>Periodic Triangle Shift</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicTriangleShiftImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPeriodicTriangleShift()
+	 * @generated
+	 */
+	int PERIODIC_TRIANGLE_SHIFT = 5;
+
+	/**
+	 * The feature id for the '<em><b>Appearance Probability</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_TRIANGLE_SHIFT__APPEARANCE_PROBABILITY = PERIODIC_ACTIVATION__APPEARANCE_PROBABILITY;
+
+	/**
+	 * The feature id for the '<em><b>Recurrence</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_TRIANGLE_SHIFT__RECURRENCE = PERIODIC_ACTIVATION__RECURRENCE;
+
+	/**
+	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_TRIANGLE_SHIFT__OFFSET = PERIODIC_ACTIVATION__OFFSET;
+
+	/**
+	 * The feature id for the '<em><b>Clock</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_TRIANGLE_SHIFT__CLOCK = PERIODIC_ACTIVATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Periodic Triangle Shift</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_TRIANGLE_SHIFT_FEATURE_COUNT = PERIODIC_ACTIVATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Periodic Triangle Shift</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERIODIC_TRIANGLE_SHIFT_OPERATION_COUNT = PERIODIC_ACTIVATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl <em>Triangle Clock</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getTriangleClock()
+	 * @generated
+	 */
+	int TRIANGLE_CLOCK = 6;
+
+	/**
+	 * The feature id for the '<em><b>Min start</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIANGLE_CLOCK__MIN_START = 0;
+
+	/**
+	 * The feature id for the '<em><b>Max end</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIANGLE_CLOCK__MAX_END = 1;
+
+	/**
+	 * The feature id for the '<em><b>Shift</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIANGLE_CLOCK__SHIFT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Period</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIANGLE_CLOCK__PERIOD = 3;
+
+	/**
+	 * The number of structural features of the '<em>Triangle Clock</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIANGLE_CLOCK_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Triangle Clock</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIANGLE_CLOCK_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SporadicActivationImpl <em>Sporadic Activation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.SporadicActivationImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSporadicActivation()
+	 * @generated
+	 */
+	int SPORADIC_ACTIVATION = 7;
+
+	/**
+	 * The feature id for the '<em><b>Appearance Probability</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPORADIC_ACTIVATION__APPEARANCE_PROBABILITY = ACTIVATION__APPEARANCE_PROBABILITY;
+
+	/**
+	 * The feature id for the '<em><b>Min Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPORADIC_ACTIVATION__MIN_VALUE = ACTIVATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Max Value Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE = ACTIVATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Avg Value Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE = ACTIVATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Sporadic Activation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPORADIC_ACTIVATION_FEATURE_COUNT = ACTIVATION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Sporadic Activation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPORADIC_ACTIVATION_OPERATION_COUNT = ACTIVATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DistributionImpl <em>Distribution</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.DistributionImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getDistribution()
+	 * @generated
+	 */
+	int DISTRIBUTION = 15;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTION__TYPE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTION_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerDistributionImpl <em>Integer Distribution</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerDistributionImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getIntegerDistribution()
+	 * @generated
+	 */
+	int INTEGER_DISTRIBUTION = 16;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_DISTRIBUTION__TYPE = DISTRIBUTION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_DISTRIBUTION__MIN = DISTRIBUTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Avg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_DISTRIBUTION__AVG = DISTRIBUTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_DISTRIBUTION__MAX = DISTRIBUTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Integer Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_DISTRIBUTION_FEATURE_COUNT = DISTRIBUTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Integer Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_DISTRIBUTION_OPERATION_COUNT = DISTRIBUTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerTimeDistributionImpl <em>Integer Time Distribution</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerTimeDistributionImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getIntegerTimeDistribution()
+	 * @generated
+	 */
+	int INTEGER_TIME_DISTRIBUTION = 17;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_TIME_DISTRIBUTION__TYPE = INTEGER_DISTRIBUTION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_TIME_DISTRIBUTION__MIN = INTEGER_DISTRIBUTION__MIN;
+
+	/**
+	 * The feature id for the '<em><b>Avg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_TIME_DISTRIBUTION__AVG = INTEGER_DISTRIBUTION__AVG;
+
+	/**
+	 * The feature id for the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_TIME_DISTRIBUTION__MAX = INTEGER_DISTRIBUTION__MAX;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_TIME_DISTRIBUTION__UNIT = INTEGER_DISTRIBUTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Integer Time Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_TIME_DISTRIBUTION_FEATURE_COUNT = INTEGER_DISTRIBUTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Integer Time Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_TIME_DISTRIBUTION_OPERATION_COUNT = INTEGER_DISTRIBUTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RecurrenceImpl <em>Recurrence</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RecurrenceImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRecurrence()
+	 * @generated
+	 */
+	int RECURRENCE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE__TYPE = INTEGER_TIME_DISTRIBUTION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE__MIN = INTEGER_TIME_DISTRIBUTION__MIN;
+
+	/**
+	 * The feature id for the '<em><b>Avg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE__AVG = INTEGER_TIME_DISTRIBUTION__AVG;
+
+	/**
+	 * The feature id for the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE__MAX = INTEGER_TIME_DISTRIBUTION__MAX;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE__UNIT = INTEGER_TIME_DISTRIBUTION__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Recurrence Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE__RECURRENCE_TYPE = INTEGER_TIME_DISTRIBUTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Recurrence</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE_FEATURE_COUNT = INTEGER_TIME_DISTRIBUTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Recurrence</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENCE_OPERATION_COUNT = INTEGER_TIME_DISTRIBUTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.LabelPropertiesImpl <em>Label Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.LabelPropertiesImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getLabelProperties()
+	 * @generated
+	 */
+	int LABEL_PROPERTIES = 9;
+
+	/**
+	 * The feature id for the '<em><b>Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_PROPERTIES__COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Bit Size</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_PROPERTIES__BIT_SIZE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Per SWC</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_PROPERTIES__PER_SWC = 2;
+
+	/**
+	 * The number of structural features of the '<em>Label Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_PROPERTIES_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Label Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_PROPERTIES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl <em>Runnable Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRunnableProperties()
+	 * @generated
+	 */
+	int RUNNABLE_PROPERTIES = 10;
+
+	/**
+	 * The feature id for the '<em><b>Runtime Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES__RUNTIME_TYPE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Instructions Per Runnables</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES = 1;
+
+	/**
+	 * The feature id for the '<em><b>Runnables Per Call Sequence</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Runnables Per SWC</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC = 3;
+
+	/**
+	 * The feature id for the '<em><b>Min Statistics Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Max Statistics Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE = 5;
+
+	/**
+	 * The number of structural features of the '<em>Runnable Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES_FEATURE_COUNT = 6;
+
+	/**
+	 * The number of operations of the '<em>Runnable Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RUNNABLE_PROPERTIES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl <em>Semaphore Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreProperties()
+	 * @generated
+	 */
+	int SEMAPHORE_PROPERTIES = 11;
+
+	/**
+	 * The feature id for the '<em><b>Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_PROPERTIES__COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Priority Ceiling Protocol</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL = 1;
+
+	/**
+	 * The feature id for the '<em><b>Semaphore Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Wait Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_PROPERTIES__WAIT_MODE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Semaphore Access</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS = 4;
+
+	/**
+	 * The number of structural features of the '<em>Semaphore Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_PROPERTIES_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Semaphore Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_PROPERTIES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl <em>Semaphore Access Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreAccessProperties()
+	 * @generated
+	 */
+	int SEMAPHORE_ACCESS_PROPERTIES = 12;
+
+	/**
+	 * The feature id for the '<em><b>Per Unit Read Access Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Per Unit Write Access Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Request Order</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER = 2;
+
+	/**
+	 * The feature id for the '<em><b>Access Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE = 3;
+
+	/**
+	 * The number of structural features of the '<em>Semaphore Access Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_ACCESS_PROPERTIES_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Semaphore Access Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEMAPHORE_ACCESS_PROPERTIES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl <em>Task Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getTaskProperties()
+	 * @generated
+	 */
+	int TASK_PROPERTIES = 13;
+
+	/**
+	 * The feature id for the '<em><b>Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Load</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__LOAD = 1;
+
+	/**
+	 * The feature id for the '<em><b>Per Task Group</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__PER_TASK_GROUP = 2;
+
+	/**
+	 * The feature id for the '<em><b>Mta</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__MTA = 3;
+
+	/**
+	 * The feature id for the '<em><b>Deadline Factor</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__DEADLINE_FACTOR = 4;
+
+	/**
+	 * The feature id for the '<em><b>Call Sequences Between Schedule Points</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS = 5;
+
+	/**
+	 * The feature id for the '<em><b>Call Graphs</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__CALL_GRAPHS = 6;
+
+	/**
+	 * The feature id for the '<em><b>Mapping Determination</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__MAPPING_DETERMINATION = 7;
+
+	/**
+	 * The feature id for the '<em><b>Priority Determination</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES__PRIORITY_DETERMINATION = 8;
+
+	/**
+	 * The number of structural features of the '<em>Task Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES_FEATURE_COUNT = 9;
+
+	/**
+	 * The number of operations of the '<em>Task Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK_PROPERTIES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.CallGraphPropertiesImpl <em>Call Graph Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.CallGraphPropertiesImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getCallGraphProperties()
+	 * @generated
+	 */
+	int CALL_GRAPH_PROPERTIES = 14;
+
+	/**
+	 * The feature id for the '<em><b>Signal Domain Coverage</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Call Sequence Usage</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Call Graph Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_GRAPH_PROPERTIES_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Call Graph Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_GRAPH_PROPERTIES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PercentageDistributionImpl <em>Percentage Distribution</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.PercentageDistributionImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPercentageDistribution()
+	 * @generated
+	 */
+	int PERCENTAGE_DISTRIBUTION = 18;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERCENTAGE_DISTRIBUTION__TYPE = DISTRIBUTION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Min Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE = DISTRIBUTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Avg Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE = DISTRIBUTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Max Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE = DISTRIBUTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Percentage Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERCENTAGE_DISTRIBUTION_FEATURE_COUNT = DISTRIBUTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Percentage Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERCENTAGE_DISTRIBUTION_OPERATION_COUNT = DISTRIBUTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DoubleDistributionImpl <em>Double Distribution</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.DoubleDistributionImpl
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getDoubleDistribution()
+	 * @generated
+	 */
+	int DOUBLE_DISTRIBUTION = 19;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_DISTRIBUTION__TYPE = DISTRIBUTION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_DISTRIBUTION__MIN = DISTRIBUTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Avg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_DISTRIBUTION__AVG = DISTRIBUTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_DISTRIBUTION__MAX = DISTRIBUTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Double Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_DISTRIBUTION_FEATURE_COUNT = DISTRIBUTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Double Distribution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_DISTRIBUTION_OPERATION_COUNT = DISTRIBUTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType <em>Recurrence Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRecurrenceType()
+	 * @generated
+	 */
+	int RECURRENCE_TYPE = 20;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType <em>Runtime Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRuntimeType()
+	 * @generated
+	 */
+	int RUNTIME_TYPE = 21;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder <em>Semaphore Request Order</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreRequestOrder()
+	 * @generated
+	 */
+	int SEMAPHORE_REQUEST_ORDER = 22;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType <em>Semaphore Access Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreAccessType()
+	 * @generated
+	 */
+	int SEMAPHORE_ACCESS_TYPE = 23;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType <em>Semaphore Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreType()
+	 * @generated
+	 */
+	int SEMAPHORE_TYPE = 24;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.WaitModes <em>Wait Modes</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.WaitModes
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getWaitModes()
+	 * @generated
+	 */
+	int WAIT_MODES = 25;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.DistributionType <em>Distribution Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DistributionType
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getDistributionType()
+	 * @generated
+	 */
+	int DISTRIBUTION_TYPE = 26;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms <em>Process Mapping Algorithms</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getProcessMappingAlgorithms()
+	 * @generated
+	 */
+	int PROCESS_MAPPING_ALGORITHMS = 27;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm <em>Priority Determination Algorithm</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPriorityDeterminationAlgorithm()
+	 * @generated
+	 */
+	int PRIORITY_DETERMINATION_ALGORITHM = 28;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit <em>Time Unit</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getTimeUnit()
+	 * @generated
+	 */
+	int TIME_UNIT = 29;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.RTMGC <em>RTMGC</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>RTMGC</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGC
+	 * @generated
+	 */
+	EClass getRTMGC();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.RTMGC#getGeneration <em>Generation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Generation</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGC#getGeneration()
+	 * @see #getRTMGC()
+	 * @generated
+	 */
+	EReference getRTMGC_Generation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation <em>Generation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Generation</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation
+	 * @generated
+	 */
+	EClass getGeneration();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getCount <em>Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Count</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getCount()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EAttribute getGeneration_Count();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getBaseModel <em>Base Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Base Model</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getBaseModel()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EAttribute getGeneration_BaseModel();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getHwModels <em>Hw Models</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Hw Models</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getHwModels()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EAttribute getGeneration_HwModels();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getOsModels <em>Os Models</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Os Models</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getOsModels()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EAttribute getGeneration_OsModels();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSwModel <em>Sw Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Sw Model</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSwModel()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EAttribute getGeneration_SwModel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getOutputFolder <em>Output Folder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Output Folder</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getOutputFolder()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EAttribute getGeneration_OutputFolder();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getActivations <em>Activations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Activations</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getActivations()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EReference getGeneration_Activations();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getLabels <em>Labels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Labels</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getLabels()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EReference getGeneration_Labels();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getRunnables <em>Runnables</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Runnables</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getRunnables()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EReference getGeneration_Runnables();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSemaphores <em>Semaphores</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Semaphores</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getSemaphores()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EReference getGeneration_Semaphores();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation#getTasks <em>Tasks</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Tasks</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation#getTasks()
+	 * @see #getGeneration()
+	 * @generated
+	 */
+	EReference getGeneration_Tasks();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties <em>Activation Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Activation Properties</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties
+	 * @generated
+	 */
+	EClass getActivationProperties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicActivation <em>Periodic Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Periodic Activation</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicActivation()
+	 * @see #getActivationProperties()
+	 * @generated
+	 */
+	EReference getActivationProperties_PeriodicActivation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicTriangleShift <em>Periodic Triangle Shift</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Periodic Triangle Shift</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getPeriodicTriangleShift()
+	 * @see #getActivationProperties()
+	 * @generated
+	 */
+	EReference getActivationProperties_PeriodicTriangleShift();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getSporadicActivation <em>Sporadic Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Sporadic Activation</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties#getSporadicActivation()
+	 * @see #getActivationProperties()
+	 * @generated
+	 */
+	EReference getActivationProperties_SporadicActivation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Activation <em>Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Activation</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Activation
+	 * @generated
+	 */
+	EClass getActivation();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.Activation#getAppearanceProbability <em>Appearance Probability</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Appearance Probability</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Activation#getAppearanceProbability()
+	 * @see #getActivation()
+	 * @generated
+	 */
+	EAttribute getActivation_AppearanceProbability();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation <em>Periodic Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Periodic Activation</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation
+	 * @generated
+	 */
+	EClass getPeriodicActivation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getRecurrence <em>Recurrence</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Recurrence</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getRecurrence()
+	 * @see #getPeriodicActivation()
+	 * @generated
+	 */
+	EReference getPeriodicActivation_Recurrence();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getOffset <em>Offset</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Offset</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation#getOffset()
+	 * @see #getPeriodicActivation()
+	 * @generated
+	 */
+	EReference getPeriodicActivation_Offset();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift <em>Periodic Triangle Shift</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Periodic Triangle Shift</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift
+	 * @generated
+	 */
+	EClass getPeriodicTriangleShift();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift#getClock <em>Clock</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Clock</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift#getClock()
+	 * @see #getPeriodicTriangleShift()
+	 * @generated
+	 */
+	EReference getPeriodicTriangleShift_Clock();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock <em>Triangle Clock</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Triangle Clock</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock
+	 * @generated
+	 */
+	EClass getTriangleClock();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMin_start <em>Min start</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Min start</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMin_start()
+	 * @see #getTriangleClock()
+	 * @generated
+	 */
+	EReference getTriangleClock_Min_start();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMax_end <em>Max end</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Max end</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMax_end()
+	 * @see #getTriangleClock()
+	 * @generated
+	 */
+	EReference getTriangleClock_Max_end();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getShift <em>Shift</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Shift</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getShift()
+	 * @see #getTriangleClock()
+	 * @generated
+	 */
+	EReference getTriangleClock_Shift();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getPeriod <em>Period</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Period</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getPeriod()
+	 * @see #getTriangleClock()
+	 * @generated
+	 */
+	EReference getTriangleClock_Period();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation <em>Sporadic Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Sporadic Activation</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation
+	 * @generated
+	 */
+	EClass getSporadicActivation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMinValue <em>Min Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Min Value</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMinValue()
+	 * @see #getSporadicActivation()
+	 * @generated
+	 */
+	EReference getSporadicActivation_MinValue();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMaxValueDistance <em>Max Value Distance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Max Value Distance</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMaxValueDistance()
+	 * @see #getSporadicActivation()
+	 * @generated
+	 */
+	EReference getSporadicActivation_MaxValueDistance();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getAvgValueDistance <em>Avg Value Distance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Avg Value Distance</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getAvgValueDistance()
+	 * @see #getSporadicActivation()
+	 * @generated
+	 */
+	EReference getSporadicActivation_AvgValueDistance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Recurrence <em>Recurrence</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Recurrence</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Recurrence
+	 * @generated
+	 */
+	EClass getRecurrence();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.Recurrence#getRecurrenceType <em>Recurrence Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Recurrence Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Recurrence#getRecurrenceType()
+	 * @see #getRecurrence()
+	 * @generated
+	 */
+	EAttribute getRecurrence_RecurrenceType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties <em>Label Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Label Properties</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties
+	 * @generated
+	 */
+	EClass getLabelProperties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getCount <em>Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Count</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getCount()
+	 * @see #getLabelProperties()
+	 * @generated
+	 */
+	EReference getLabelProperties_Count();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getBitSize <em>Bit Size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Bit Size</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getBitSize()
+	 * @see #getLabelProperties()
+	 * @generated
+	 */
+	EReference getLabelProperties_BitSize();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getPerSWC <em>Per SWC</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Per SWC</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties#getPerSWC()
+	 * @see #getLabelProperties()
+	 * @generated
+	 */
+	EReference getLabelProperties_PerSWC();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties <em>Runnable Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Runnable Properties</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties
+	 * @generated
+	 */
+	EClass getRunnableProperties();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRuntimeType <em>Runtime Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Runtime Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRuntimeType()
+	 * @see #getRunnableProperties()
+	 * @generated
+	 */
+	EAttribute getRunnableProperties_RuntimeType();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getInstructionsPerRunnables <em>Instructions Per Runnables</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Instructions Per Runnables</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getInstructionsPerRunnables()
+	 * @see #getRunnableProperties()
+	 * @generated
+	 */
+	EReference getRunnableProperties_InstructionsPerRunnables();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerCallSequence <em>Runnables Per Call Sequence</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Runnables Per Call Sequence</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerCallSequence()
+	 * @see #getRunnableProperties()
+	 * @generated
+	 */
+	EReference getRunnableProperties_RunnablesPerCallSequence();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerSWC <em>Runnables Per SWC</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Runnables Per SWC</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerSWC()
+	 * @see #getRunnableProperties()
+	 * @generated
+	 */
+	EReference getRunnableProperties_RunnablesPerSWC();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMinStatisticsDistance <em>Min Statistics Distance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Min Statistics Distance</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMinStatisticsDistance()
+	 * @see #getRunnableProperties()
+	 * @generated
+	 */
+	EReference getRunnableProperties_MinStatisticsDistance();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMaxStatisticsDistance <em>Max Statistics Distance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Max Statistics Distance</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMaxStatisticsDistance()
+	 * @see #getRunnableProperties()
+	 * @generated
+	 */
+	EReference getRunnableProperties_MaxStatisticsDistance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties <em>Semaphore Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Semaphore Properties</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties
+	 * @generated
+	 */
+	EClass getSemaphoreProperties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getCount <em>Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Count</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getCount()
+	 * @see #getSemaphoreProperties()
+	 * @generated
+	 */
+	EReference getSemaphoreProperties_Count();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#isPriorityCeilingProtocol <em>Priority Ceiling Protocol</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Priority Ceiling Protocol</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#isPriorityCeilingProtocol()
+	 * @see #getSemaphoreProperties()
+	 * @generated
+	 */
+	EAttribute getSemaphoreProperties_PriorityCeilingProtocol();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreType <em>Semaphore Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Semaphore Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreType()
+	 * @see #getSemaphoreProperties()
+	 * @generated
+	 */
+	EAttribute getSemaphoreProperties_SemaphoreType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getWaitMode <em>Wait Mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Wait Mode</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getWaitMode()
+	 * @see #getSemaphoreProperties()
+	 * @generated
+	 */
+	EAttribute getSemaphoreProperties_WaitMode();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreAccess <em>Semaphore Access</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Semaphore Access</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreAccess()
+	 * @see #getSemaphoreProperties()
+	 * @generated
+	 */
+	EReference getSemaphoreProperties_SemaphoreAccess();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties <em>Semaphore Access Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Semaphore Access Properties</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties
+	 * @generated
+	 */
+	EClass getSemaphoreAccessProperties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitReadAccessCount <em>Per Unit Read Access Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Per Unit Read Access Count</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitReadAccessCount()
+	 * @see #getSemaphoreAccessProperties()
+	 * @generated
+	 */
+	EReference getSemaphoreAccessProperties_PerUnitReadAccessCount();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitWriteAccessCount <em>Per Unit Write Access Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Per Unit Write Access Count</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitWriteAccessCount()
+	 * @see #getSemaphoreAccessProperties()
+	 * @generated
+	 */
+	EReference getSemaphoreAccessProperties_PerUnitWriteAccessCount();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getRequestOrder <em>Request Order</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Request Order</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getRequestOrder()
+	 * @see #getSemaphoreAccessProperties()
+	 * @generated
+	 */
+	EAttribute getSemaphoreAccessProperties_RequestOrder();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getAccessType <em>Access Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Access Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getAccessType()
+	 * @see #getSemaphoreAccessProperties()
+	 * @generated
+	 */
+	EAttribute getSemaphoreAccessProperties_AccessType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties <em>Task Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Task Properties</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties
+	 * @generated
+	 */
+	EClass getTaskProperties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCount <em>Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Count</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCount()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EReference getTaskProperties_Count();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getLoad <em>Load</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Load</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getLoad()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EReference getTaskProperties_Load();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPerTaskGroup <em>Per Task Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Per Task Group</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPerTaskGroup()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EReference getTaskProperties_PerTaskGroup();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMta <em>Mta</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Mta</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMta()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EReference getTaskProperties_Mta();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getDeadlineFactor <em>Deadline Factor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Deadline Factor</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getDeadlineFactor()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EReference getTaskProperties_DeadlineFactor();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallSequencesBetweenSchedulePoints <em>Call Sequences Between Schedule Points</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Call Sequences Between Schedule Points</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallSequencesBetweenSchedulePoints()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EReference getTaskProperties_CallSequencesBetweenSchedulePoints();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallGraphs <em>Call Graphs</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Call Graphs</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallGraphs()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EReference getTaskProperties_CallGraphs();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMappingDetermination <em>Mapping Determination</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mapping Determination</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMappingDetermination()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EAttribute getTaskProperties_MappingDetermination();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPriorityDetermination <em>Priority Determination</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Priority Determination</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPriorityDetermination()
+	 * @see #getTaskProperties()
+	 * @generated
+	 */
+	EAttribute getTaskProperties_PriorityDetermination();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties <em>Call Graph Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Call Graph Properties</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties
+	 * @generated
+	 */
+	EClass getCallGraphProperties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getSignalDomainCoverage <em>Signal Domain Coverage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Signal Domain Coverage</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getSignalDomainCoverage()
+	 * @see #getCallGraphProperties()
+	 * @generated
+	 */
+	EReference getCallGraphProperties_SignalDomainCoverage();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getCallSequenceUsage <em>Call Sequence Usage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Call Sequence Usage</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties#getCallSequenceUsage()
+	 * @see #getCallGraphProperties()
+	 * @generated
+	 */
+	EReference getCallGraphProperties_CallSequenceUsage();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Distribution <em>Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Distribution</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Distribution
+	 * @generated
+	 */
+	EClass getDistribution();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.Distribution#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Distribution#getType()
+	 * @see #getDistribution()
+	 * @generated
+	 */
+	EAttribute getDistribution_Type();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution <em>Integer Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Integer Distribution</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution
+	 * @generated
+	 */
+	EClass getIntegerDistribution();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMin <em>Min</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMin()
+	 * @see #getIntegerDistribution()
+	 * @generated
+	 */
+	EAttribute getIntegerDistribution_Min();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getAvg <em>Avg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Avg</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getAvg()
+	 * @see #getIntegerDistribution()
+	 * @generated
+	 */
+	EAttribute getIntegerDistribution_Avg();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMax <em>Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution#getMax()
+	 * @see #getIntegerDistribution()
+	 * @generated
+	 */
+	EAttribute getIntegerDistribution_Max();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution <em>Integer Time Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Integer Time Distribution</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution
+	 * @generated
+	 */
+	EClass getIntegerTimeDistribution();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution#getUnit <em>Unit</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Unit</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution#getUnit()
+	 * @see #getIntegerTimeDistribution()
+	 * @generated
+	 */
+	EAttribute getIntegerTimeDistribution_Unit();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution <em>Percentage Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Percentage Distribution</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution
+	 * @generated
+	 */
+	EClass getPercentageDistribution();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMinPercentage <em>Min Percentage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min Percentage</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMinPercentage()
+	 * @see #getPercentageDistribution()
+	 * @generated
+	 */
+	EAttribute getPercentageDistribution_MinPercentage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getAvgPercentage <em>Avg Percentage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Avg Percentage</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getAvgPercentage()
+	 * @see #getPercentageDistribution()
+	 * @generated
+	 */
+	EAttribute getPercentageDistribution_AvgPercentage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMaxPercentage <em>Max Percentage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max Percentage</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution#getMaxPercentage()
+	 * @see #getPercentageDistribution()
+	 * @generated
+	 */
+	EAttribute getPercentageDistribution_MaxPercentage();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution <em>Double Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Double Distribution</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution
+	 * @generated
+	 */
+	EClass getDoubleDistribution();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMin <em>Min</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMin()
+	 * @see #getDoubleDistribution()
+	 * @generated
+	 */
+	EAttribute getDoubleDistribution_Min();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getAvg <em>Avg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Avg</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getAvg()
+	 * @see #getDoubleDistribution()
+	 * @generated
+	 */
+	EAttribute getDoubleDistribution_Avg();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMax <em>Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution#getMax()
+	 * @see #getDoubleDistribution()
+	 * @generated
+	 */
+	EAttribute getDoubleDistribution_Max();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType <em>Recurrence Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Recurrence Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType
+	 * @generated
+	 */
+	EEnum getRecurrenceType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType <em>Runtime Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Runtime Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType
+	 * @generated
+	 */
+	EEnum getRuntimeType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder <em>Semaphore Request Order</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Semaphore Request Order</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder
+	 * @generated
+	 */
+	EEnum getSemaphoreRequestOrder();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType <em>Semaphore Access Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Semaphore Access Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType
+	 * @generated
+	 */
+	EEnum getSemaphoreAccessType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType <em>Semaphore Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Semaphore Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType
+	 * @generated
+	 */
+	EEnum getSemaphoreType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.WaitModes <em>Wait Modes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Wait Modes</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.WaitModes
+	 * @generated
+	 */
+	EEnum getWaitModes();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.DistributionType <em>Distribution Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Distribution Type</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DistributionType
+	 * @generated
+	 */
+	EEnum getDistributionType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms <em>Process Mapping Algorithms</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Process Mapping Algorithms</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms
+	 * @generated
+	 */
+	EEnum getProcessMappingAlgorithms();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm <em>Priority Determination Algorithm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Priority Determination Algorithm</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm
+	 * @generated
+	 */
+	EEnum getPriorityDeterminationAlgorithm();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit <em>Time Unit</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Time Unit</em>'.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit
+	 * @generated
+	 */
+	EEnum getTimeUnit();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	RTMGCFactory getRTMGCFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCImpl <em>RTMGC</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRTMGC()
+		 * @generated
+		 */
+		EClass RTMGC = eINSTANCE.getRTMGC();
+
+		/**
+		 * The meta object literal for the '<em><b>Generation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RTMGC__GENERATION = eINSTANCE.getRTMGC_Generation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl <em>Generation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getGeneration()
+		 * @generated
+		 */
+		EClass GENERATION = eINSTANCE.getGeneration();
+
+		/**
+		 * The meta object literal for the '<em><b>Count</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERATION__COUNT = eINSTANCE.getGeneration_Count();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Model</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERATION__BASE_MODEL = eINSTANCE.getGeneration_BaseModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Hw Models</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERATION__HW_MODELS = eINSTANCE.getGeneration_HwModels();
+
+		/**
+		 * The meta object literal for the '<em><b>Os Models</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERATION__OS_MODELS = eINSTANCE.getGeneration_OsModels();
+
+		/**
+		 * The meta object literal for the '<em><b>Sw Model</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERATION__SW_MODEL = eINSTANCE.getGeneration_SwModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Output Folder</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERATION__OUTPUT_FOLDER = eINSTANCE.getGeneration_OutputFolder();
+
+		/**
+		 * The meta object literal for the '<em><b>Activations</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GENERATION__ACTIVATIONS = eINSTANCE.getGeneration_Activations();
+
+		/**
+		 * The meta object literal for the '<em><b>Labels</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GENERATION__LABELS = eINSTANCE.getGeneration_Labels();
+
+		/**
+		 * The meta object literal for the '<em><b>Runnables</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GENERATION__RUNNABLES = eINSTANCE.getGeneration_Runnables();
+
+		/**
+		 * The meta object literal for the '<em><b>Semaphores</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GENERATION__SEMAPHORES = eINSTANCE.getGeneration_Semaphores();
+
+		/**
+		 * The meta object literal for the '<em><b>Tasks</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GENERATION__TASKS = eINSTANCE.getGeneration_Tasks();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationPropertiesImpl <em>Activation Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationPropertiesImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getActivationProperties()
+		 * @generated
+		 */
+		EClass ACTIVATION_PROPERTIES = eINSTANCE.getActivationProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Periodic Activation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION = eINSTANCE.getActivationProperties_PeriodicActivation();
+
+		/**
+		 * The meta object literal for the '<em><b>Periodic Triangle Shift</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT = eINSTANCE.getActivationProperties_PeriodicTriangleShift();
+
+		/**
+		 * The meta object literal for the '<em><b>Sporadic Activation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION = eINSTANCE.getActivationProperties_SporadicActivation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationImpl <em>Activation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getActivation()
+		 * @generated
+		 */
+		EClass ACTIVATION = eINSTANCE.getActivation();
+
+		/**
+		 * The meta object literal for the '<em><b>Appearance Probability</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTIVATION__APPEARANCE_PROBABILITY = eINSTANCE.getActivation_AppearanceProbability();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicActivationImpl <em>Periodic Activation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicActivationImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPeriodicActivation()
+		 * @generated
+		 */
+		EClass PERIODIC_ACTIVATION = eINSTANCE.getPeriodicActivation();
+
+		/**
+		 * The meta object literal for the '<em><b>Recurrence</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERIODIC_ACTIVATION__RECURRENCE = eINSTANCE.getPeriodicActivation_Recurrence();
+
+		/**
+		 * The meta object literal for the '<em><b>Offset</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERIODIC_ACTIVATION__OFFSET = eINSTANCE.getPeriodicActivation_Offset();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicTriangleShiftImpl <em>Periodic Triangle Shift</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicTriangleShiftImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPeriodicTriangleShift()
+		 * @generated
+		 */
+		EClass PERIODIC_TRIANGLE_SHIFT = eINSTANCE.getPeriodicTriangleShift();
+
+		/**
+		 * The meta object literal for the '<em><b>Clock</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERIODIC_TRIANGLE_SHIFT__CLOCK = eINSTANCE.getPeriodicTriangleShift_Clock();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl <em>Triangle Clock</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getTriangleClock()
+		 * @generated
+		 */
+		EClass TRIANGLE_CLOCK = eINSTANCE.getTriangleClock();
+
+		/**
+		 * The meta object literal for the '<em><b>Min start</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRIANGLE_CLOCK__MIN_START = eINSTANCE.getTriangleClock_Min_start();
+
+		/**
+		 * The meta object literal for the '<em><b>Max end</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRIANGLE_CLOCK__MAX_END = eINSTANCE.getTriangleClock_Max_end();
+
+		/**
+		 * The meta object literal for the '<em><b>Shift</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRIANGLE_CLOCK__SHIFT = eINSTANCE.getTriangleClock_Shift();
+
+		/**
+		 * The meta object literal for the '<em><b>Period</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRIANGLE_CLOCK__PERIOD = eINSTANCE.getTriangleClock_Period();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SporadicActivationImpl <em>Sporadic Activation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.SporadicActivationImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSporadicActivation()
+		 * @generated
+		 */
+		EClass SPORADIC_ACTIVATION = eINSTANCE.getSporadicActivation();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Value</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SPORADIC_ACTIVATION__MIN_VALUE = eINSTANCE.getSporadicActivation_MinValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Value Distance</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE = eINSTANCE.getSporadicActivation_MaxValueDistance();
+
+		/**
+		 * The meta object literal for the '<em><b>Avg Value Distance</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE = eINSTANCE.getSporadicActivation_AvgValueDistance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RecurrenceImpl <em>Recurrence</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RecurrenceImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRecurrence()
+		 * @generated
+		 */
+		EClass RECURRENCE = eINSTANCE.getRecurrence();
+
+		/**
+		 * The meta object literal for the '<em><b>Recurrence Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENCE__RECURRENCE_TYPE = eINSTANCE.getRecurrence_RecurrenceType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.LabelPropertiesImpl <em>Label Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.LabelPropertiesImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getLabelProperties()
+		 * @generated
+		 */
+		EClass LABEL_PROPERTIES = eINSTANCE.getLabelProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Count</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LABEL_PROPERTIES__COUNT = eINSTANCE.getLabelProperties_Count();
+
+		/**
+		 * The meta object literal for the '<em><b>Bit Size</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LABEL_PROPERTIES__BIT_SIZE = eINSTANCE.getLabelProperties_BitSize();
+
+		/**
+		 * The meta object literal for the '<em><b>Per SWC</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LABEL_PROPERTIES__PER_SWC = eINSTANCE.getLabelProperties_PerSWC();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl <em>Runnable Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRunnableProperties()
+		 * @generated
+		 */
+		EClass RUNNABLE_PROPERTIES = eINSTANCE.getRunnableProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Runtime Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RUNNABLE_PROPERTIES__RUNTIME_TYPE = eINSTANCE.getRunnableProperties_RuntimeType();
+
+		/**
+		 * The meta object literal for the '<em><b>Instructions Per Runnables</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES = eINSTANCE.getRunnableProperties_InstructionsPerRunnables();
+
+		/**
+		 * The meta object literal for the '<em><b>Runnables Per Call Sequence</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE = eINSTANCE.getRunnableProperties_RunnablesPerCallSequence();
+
+		/**
+		 * The meta object literal for the '<em><b>Runnables Per SWC</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC = eINSTANCE.getRunnableProperties_RunnablesPerSWC();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Statistics Distance</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE = eINSTANCE.getRunnableProperties_MinStatisticsDistance();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Statistics Distance</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE = eINSTANCE.getRunnableProperties_MaxStatisticsDistance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl <em>Semaphore Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreProperties()
+		 * @generated
+		 */
+		EClass SEMAPHORE_PROPERTIES = eINSTANCE.getSemaphoreProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Count</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SEMAPHORE_PROPERTIES__COUNT = eINSTANCE.getSemaphoreProperties_Count();
+
+		/**
+		 * The meta object literal for the '<em><b>Priority Ceiling Protocol</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL = eINSTANCE.getSemaphoreProperties_PriorityCeilingProtocol();
+
+		/**
+		 * The meta object literal for the '<em><b>Semaphore Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE = eINSTANCE.getSemaphoreProperties_SemaphoreType();
+
+		/**
+		 * The meta object literal for the '<em><b>Wait Mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEMAPHORE_PROPERTIES__WAIT_MODE = eINSTANCE.getSemaphoreProperties_WaitMode();
+
+		/**
+		 * The meta object literal for the '<em><b>Semaphore Access</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS = eINSTANCE.getSemaphoreProperties_SemaphoreAccess();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl <em>Semaphore Access Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreAccessProperties()
+		 * @generated
+		 */
+		EClass SEMAPHORE_ACCESS_PROPERTIES = eINSTANCE.getSemaphoreAccessProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Per Unit Read Access Count</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT = eINSTANCE.getSemaphoreAccessProperties_PerUnitReadAccessCount();
+
+		/**
+		 * The meta object literal for the '<em><b>Per Unit Write Access Count</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT = eINSTANCE.getSemaphoreAccessProperties_PerUnitWriteAccessCount();
+
+		/**
+		 * The meta object literal for the '<em><b>Request Order</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER = eINSTANCE.getSemaphoreAccessProperties_RequestOrder();
+
+		/**
+		 * The meta object literal for the '<em><b>Access Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE = eINSTANCE.getSemaphoreAccessProperties_AccessType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl <em>Task Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getTaskProperties()
+		 * @generated
+		 */
+		EClass TASK_PROPERTIES = eINSTANCE.getTaskProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Count</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TASK_PROPERTIES__COUNT = eINSTANCE.getTaskProperties_Count();
+
+		/**
+		 * The meta object literal for the '<em><b>Load</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TASK_PROPERTIES__LOAD = eINSTANCE.getTaskProperties_Load();
+
+		/**
+		 * The meta object literal for the '<em><b>Per Task Group</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TASK_PROPERTIES__PER_TASK_GROUP = eINSTANCE.getTaskProperties_PerTaskGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Mta</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TASK_PROPERTIES__MTA = eINSTANCE.getTaskProperties_Mta();
+
+		/**
+		 * The meta object literal for the '<em><b>Deadline Factor</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TASK_PROPERTIES__DEADLINE_FACTOR = eINSTANCE.getTaskProperties_DeadlineFactor();
+
+		/**
+		 * The meta object literal for the '<em><b>Call Sequences Between Schedule Points</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS = eINSTANCE.getTaskProperties_CallSequencesBetweenSchedulePoints();
+
+		/**
+		 * The meta object literal for the '<em><b>Call Graphs</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TASK_PROPERTIES__CALL_GRAPHS = eINSTANCE.getTaskProperties_CallGraphs();
+
+		/**
+		 * The meta object literal for the '<em><b>Mapping Determination</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TASK_PROPERTIES__MAPPING_DETERMINATION = eINSTANCE.getTaskProperties_MappingDetermination();
+
+		/**
+		 * The meta object literal for the '<em><b>Priority Determination</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TASK_PROPERTIES__PRIORITY_DETERMINATION = eINSTANCE.getTaskProperties_PriorityDetermination();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.CallGraphPropertiesImpl <em>Call Graph Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.CallGraphPropertiesImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getCallGraphProperties()
+		 * @generated
+		 */
+		EClass CALL_GRAPH_PROPERTIES = eINSTANCE.getCallGraphProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Signal Domain Coverage</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE = eINSTANCE.getCallGraphProperties_SignalDomainCoverage();
+
+		/**
+		 * The meta object literal for the '<em><b>Call Sequence Usage</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE = eINSTANCE.getCallGraphProperties_CallSequenceUsage();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DistributionImpl <em>Distribution</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.DistributionImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getDistribution()
+		 * @generated
+		 */
+		EClass DISTRIBUTION = eINSTANCE.getDistribution();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTRIBUTION__TYPE = eINSTANCE.getDistribution_Type();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerDistributionImpl <em>Integer Distribution</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerDistributionImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getIntegerDistribution()
+		 * @generated
+		 */
+		EClass INTEGER_DISTRIBUTION = eINSTANCE.getIntegerDistribution();
+
+		/**
+		 * The meta object literal for the '<em><b>Min</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INTEGER_DISTRIBUTION__MIN = eINSTANCE.getIntegerDistribution_Min();
+
+		/**
+		 * The meta object literal for the '<em><b>Avg</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INTEGER_DISTRIBUTION__AVG = eINSTANCE.getIntegerDistribution_Avg();
+
+		/**
+		 * The meta object literal for the '<em><b>Max</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INTEGER_DISTRIBUTION__MAX = eINSTANCE.getIntegerDistribution_Max();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerTimeDistributionImpl <em>Integer Time Distribution</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerTimeDistributionImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getIntegerTimeDistribution()
+		 * @generated
+		 */
+		EClass INTEGER_TIME_DISTRIBUTION = eINSTANCE.getIntegerTimeDistribution();
+
+		/**
+		 * The meta object literal for the '<em><b>Unit</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INTEGER_TIME_DISTRIBUTION__UNIT = eINSTANCE.getIntegerTimeDistribution_Unit();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PercentageDistributionImpl <em>Percentage Distribution</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.PercentageDistributionImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPercentageDistribution()
+		 * @generated
+		 */
+		EClass PERCENTAGE_DISTRIBUTION = eINSTANCE.getPercentageDistribution();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Percentage</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE = eINSTANCE.getPercentageDistribution_MinPercentage();
+
+		/**
+		 * The meta object literal for the '<em><b>Avg Percentage</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE = eINSTANCE.getPercentageDistribution_AvgPercentage();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Percentage</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE = eINSTANCE.getPercentageDistribution_MaxPercentage();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DoubleDistributionImpl <em>Double Distribution</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.DoubleDistributionImpl
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getDoubleDistribution()
+		 * @generated
+		 */
+		EClass DOUBLE_DISTRIBUTION = eINSTANCE.getDoubleDistribution();
+
+		/**
+		 * The meta object literal for the '<em><b>Min</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOUBLE_DISTRIBUTION__MIN = eINSTANCE.getDoubleDistribution_Min();
+
+		/**
+		 * The meta object literal for the '<em><b>Avg</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOUBLE_DISTRIBUTION__AVG = eINSTANCE.getDoubleDistribution_Avg();
+
+		/**
+		 * The meta object literal for the '<em><b>Max</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOUBLE_DISTRIBUTION__MAX = eINSTANCE.getDoubleDistribution_Max();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType <em>Recurrence Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRecurrenceType()
+		 * @generated
+		 */
+		EEnum RECURRENCE_TYPE = eINSTANCE.getRecurrenceType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType <em>Runtime Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getRuntimeType()
+		 * @generated
+		 */
+		EEnum RUNTIME_TYPE = eINSTANCE.getRuntimeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder <em>Semaphore Request Order</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreRequestOrder()
+		 * @generated
+		 */
+		EEnum SEMAPHORE_REQUEST_ORDER = eINSTANCE.getSemaphoreRequestOrder();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType <em>Semaphore Access Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreAccessType()
+		 * @generated
+		 */
+		EEnum SEMAPHORE_ACCESS_TYPE = eINSTANCE.getSemaphoreAccessType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType <em>Semaphore Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getSemaphoreType()
+		 * @generated
+		 */
+		EEnum SEMAPHORE_TYPE = eINSTANCE.getSemaphoreType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.WaitModes <em>Wait Modes</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.WaitModes
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getWaitModes()
+		 * @generated
+		 */
+		EEnum WAIT_MODES = eINSTANCE.getWaitModes();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.DistributionType <em>Distribution Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.DistributionType
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getDistributionType()
+		 * @generated
+		 */
+		EEnum DISTRIBUTION_TYPE = eINSTANCE.getDistributionType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms <em>Process Mapping Algorithms</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getProcessMappingAlgorithms()
+		 * @generated
+		 */
+		EEnum PROCESS_MAPPING_ALGORITHMS = eINSTANCE.getProcessMappingAlgorithms();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm <em>Priority Determination Algorithm</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getPriorityDeterminationAlgorithm()
+		 * @generated
+		 */
+		EEnum PRIORITY_DETERMINATION_ALGORITHM = eINSTANCE.getPriorityDeterminationAlgorithm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit <em>Time Unit</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit
+		 * @see org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCPackageImpl#getTimeUnit()
+		 * @generated
+		 */
+		EEnum TIME_UNIT = eINSTANCE.getTimeUnit();
+
+	}
+
+} //RTMGCPackage
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Recurrence.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Recurrence.java
new file mode 100644
index 0000000..d05fdaf
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/Recurrence.java
@@ -0,0 +1,63 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Recurrence</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.Recurrence#getRecurrenceType <em>Recurrence Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRecurrence()
+ * @model
+ * @generated
+ */
+public interface Recurrence extends IntegerTimeDistribution {
+	/**
+	 * Returns the value of the '<em><b>Recurrence Type</b></em>' attribute.
+	 * The default value is <code>"random"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Recurrence Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Recurrence Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType
+	 * @see #setRecurrenceType(RecurrenceType)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRecurrence_RecurrenceType()
+	 * @model default="random" unique="false"
+	 * @generated
+	 */
+	RecurrenceType getRecurrenceType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.Recurrence#getRecurrenceType <em>Recurrence Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Recurrence Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType
+	 * @see #getRecurrenceType()
+	 * @generated
+	 */
+	void setRecurrenceType(RecurrenceType value);
+
+} // Recurrence
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RecurrenceType.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RecurrenceType.java
new file mode 100644
index 0000000..27fc2b5
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RecurrenceType.java
@@ -0,0 +1,224 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Recurrence Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRecurrenceType()
+ * @model
+ * @generated
+ */
+public enum RecurrenceType implements Enumerator {
+	/**
+	 * The '<em><b>Random</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #RANDOM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	RANDOM(0, "random", "random"),
+
+	/**
+	 * The '<em><b>Harmonic</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HARMONIC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	HARMONIC(1, "harmonic", "harmonic");
+
+	/**
+	 * The '<em><b>Random</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Random</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #RANDOM
+	 * @model name="random"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RANDOM_VALUE = 0;
+
+	/**
+	 * The '<em><b>Harmonic</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Harmonic</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #HARMONIC
+	 * @model name="harmonic"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int HARMONIC_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Recurrence Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final RecurrenceType[] VALUES_ARRAY =
+		new RecurrenceType[] {
+			RANDOM,
+			HARMONIC,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Recurrence Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<RecurrenceType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Recurrence Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RecurrenceType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RecurrenceType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Recurrence Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RecurrenceType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RecurrenceType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Recurrence Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RecurrenceType get(int value) {
+		switch (value) {
+			case RANDOM_VALUE: return RANDOM;
+			case HARMONIC_VALUE: return HARMONIC;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private RecurrenceType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //RecurrenceType
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RunnableProperties.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RunnableProperties.java
new file mode 100644
index 0000000..6e7e4a2
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RunnableProperties.java
@@ -0,0 +1,199 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Runnable Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRuntimeType <em>Runtime Type</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getInstructionsPerRunnables <em>Instructions Per Runnables</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerCallSequence <em>Runnables Per Call Sequence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerSWC <em>Runnables Per SWC</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMinStatisticsDistance <em>Min Statistics Distance</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMaxStatisticsDistance <em>Max Statistics Distance</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRunnableProperties()
+ * @model
+ * @generated
+ */
+public interface RunnableProperties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Runtime Type</b></em>' attribute.
+	 * The default value is <code>"instructionsConst"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Runtime Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Runtime Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType
+	 * @see #setRuntimeType(RuntimeType)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRunnableProperties_RuntimeType()
+	 * @model default="instructionsConst" unique="false" required="true"
+	 * @generated
+	 */
+	RuntimeType getRuntimeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRuntimeType <em>Runtime Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Runtime Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType
+	 * @see #getRuntimeType()
+	 * @generated
+	 */
+	void setRuntimeType(RuntimeType value);
+
+	/**
+	 * Returns the value of the '<em><b>Instructions Per Runnables</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Instructions Per Runnables</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Instructions Per Runnables</em>' containment reference.
+	 * @see #setInstructionsPerRunnables(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRunnableProperties_InstructionsPerRunnables()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getInstructionsPerRunnables();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getInstructionsPerRunnables <em>Instructions Per Runnables</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Instructions Per Runnables</em>' containment reference.
+	 * @see #getInstructionsPerRunnables()
+	 * @generated
+	 */
+	void setInstructionsPerRunnables(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Runnables Per Call Sequence</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Runnables Per Call Sequence</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Runnables Per Call Sequence</em>' containment reference.
+	 * @see #setRunnablesPerCallSequence(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRunnableProperties_RunnablesPerCallSequence()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getRunnablesPerCallSequence();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerCallSequence <em>Runnables Per Call Sequence</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Runnables Per Call Sequence</em>' containment reference.
+	 * @see #getRunnablesPerCallSequence()
+	 * @generated
+	 */
+	void setRunnablesPerCallSequence(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Runnables Per SWC</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Runnables Per SWC</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Runnables Per SWC</em>' containment reference.
+	 * @see #setRunnablesPerSWC(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRunnableProperties_RunnablesPerSWC()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getRunnablesPerSWC();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getRunnablesPerSWC <em>Runnables Per SWC</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Runnables Per SWC</em>' containment reference.
+	 * @see #getRunnablesPerSWC()
+	 * @generated
+	 */
+	void setRunnablesPerSWC(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Min Statistics Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min Statistics Distance</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min Statistics Distance</em>' containment reference.
+	 * @see #setMinStatisticsDistance(PercentageDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRunnableProperties_MinStatisticsDistance()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PercentageDistribution getMinStatisticsDistance();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMinStatisticsDistance <em>Min Statistics Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min Statistics Distance</em>' containment reference.
+	 * @see #getMinStatisticsDistance()
+	 * @generated
+	 */
+	void setMinStatisticsDistance(PercentageDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Statistics Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Statistics Distance</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max Statistics Distance</em>' containment reference.
+	 * @see #setMaxStatisticsDistance(PercentageDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRunnableProperties_MaxStatisticsDistance()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PercentageDistribution getMaxStatisticsDistance();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties#getMaxStatisticsDistance <em>Max Statistics Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Statistics Distance</em>' containment reference.
+	 * @see #getMaxStatisticsDistance()
+	 * @generated
+	 */
+	void setMaxStatisticsDistance(PercentageDistribution value);
+
+} // RunnableProperties
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RuntimeType.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RuntimeType.java
new file mode 100644
index 0000000..d4c2202
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/RuntimeType.java
@@ -0,0 +1,224 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Runtime Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getRuntimeType()
+ * @model
+ * @generated
+ */
+public enum RuntimeType implements Enumerator {
+	/**
+	 * The '<em><b>Instructions Const</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INSTRUCTIONS_CONST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INSTRUCTIONS_CONST(0, "instructionsConst", "instructionsConst"),
+
+	/**
+	 * The '<em><b>Instructions Statistics</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INSTRUCTIONS_STATISTICS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INSTRUCTIONS_STATISTICS(1, "instructionsStatistics", "instructionsStatistics");
+
+	/**
+	 * The '<em><b>Instructions Const</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Instructions Const</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INSTRUCTIONS_CONST
+	 * @model name="instructionsConst"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INSTRUCTIONS_CONST_VALUE = 0;
+
+	/**
+	 * The '<em><b>Instructions Statistics</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Instructions Statistics</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INSTRUCTIONS_STATISTICS
+	 * @model name="instructionsStatistics"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INSTRUCTIONS_STATISTICS_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Runtime Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final RuntimeType[] VALUES_ARRAY =
+		new RuntimeType[] {
+			INSTRUCTIONS_CONST,
+			INSTRUCTIONS_STATISTICS,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Runtime Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<RuntimeType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Runtime Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RuntimeType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RuntimeType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Runtime Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RuntimeType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RuntimeType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Runtime Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RuntimeType get(int value) {
+		switch (value) {
+			case INSTRUCTIONS_CONST_VALUE: return INSTRUCTIONS_CONST;
+			case INSTRUCTIONS_STATISTICS_VALUE: return INSTRUCTIONS_STATISTICS;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private RuntimeType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //RuntimeType
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreAccessProperties.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreAccessProperties.java
new file mode 100644
index 0000000..ed71e5a
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreAccessProperties.java
@@ -0,0 +1,149 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Semaphore Access Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitReadAccessCount <em>Per Unit Read Access Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitWriteAccessCount <em>Per Unit Write Access Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getRequestOrder <em>Request Order</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getAccessType <em>Access Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreAccessProperties()
+ * @model
+ * @generated
+ */
+public interface SemaphoreAccessProperties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Per Unit Read Access Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Per Unit Read Access Count</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Per Unit Read Access Count</em>' containment reference.
+	 * @see #setPerUnitReadAccessCount(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreAccessProperties_PerUnitReadAccessCount()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getPerUnitReadAccessCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitReadAccessCount <em>Per Unit Read Access Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Per Unit Read Access Count</em>' containment reference.
+	 * @see #getPerUnitReadAccessCount()
+	 * @generated
+	 */
+	void setPerUnitReadAccessCount(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Per Unit Write Access Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Per Unit Write Access Count</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Per Unit Write Access Count</em>' containment reference.
+	 * @see #setPerUnitWriteAccessCount(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreAccessProperties_PerUnitWriteAccessCount()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getPerUnitWriteAccessCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getPerUnitWriteAccessCount <em>Per Unit Write Access Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Per Unit Write Access Count</em>' containment reference.
+	 * @see #getPerUnitWriteAccessCount()
+	 * @generated
+	 */
+	void setPerUnitWriteAccessCount(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Request Order</b></em>' attribute.
+	 * The default value is <code>"none"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Request Order</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Request Order</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder
+	 * @see #setRequestOrder(SemaphoreRequestOrder)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreAccessProperties_RequestOrder()
+	 * @model default="none" unique="false" required="true"
+	 * @generated
+	 */
+	SemaphoreRequestOrder getRequestOrder();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getRequestOrder <em>Request Order</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Request Order</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder
+	 * @see #getRequestOrder()
+	 * @generated
+	 */
+	void setRequestOrder(SemaphoreRequestOrder value);
+
+	/**
+	 * Returns the value of the '<em><b>Access Type</b></em>' attribute.
+	 * The default value is <code>"RandRunnable"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Access Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Access Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType
+	 * @see #setAccessType(SemaphoreAccessType)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreAccessProperties_AccessType()
+	 * @model default="RandRunnable" unique="false" required="true"
+	 * @generated
+	 */
+	SemaphoreAccessType getAccessType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties#getAccessType <em>Access Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Access Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType
+	 * @see #getAccessType()
+	 * @generated
+	 */
+	void setAccessType(SemaphoreAccessType value);
+
+} // SemaphoreAccessProperties
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreAccessType.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreAccessType.java
new file mode 100644
index 0000000..0cd0174
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreAccessType.java
@@ -0,0 +1,359 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Semaphore Access Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreAccessType()
+ * @model
+ * @generated
+ */
+public enum SemaphoreAccessType implements Enumerator {
+	/**
+	 * The '<em><b>RWper Task</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #RWPER_TASK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	RWPER_TASK(0, "RWperTask", "RWperTask"),
+
+	/**
+	 * The '<em><b>RWper Call Sequence</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #RWPER_CALL_SEQUENCE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	RWPER_CALL_SEQUENCE(1, "RWperCallSequence", "RWperCallSequence"),
+
+	/**
+	 * The '<em><b>Rand Runnable</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #RAND_RUNNABLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	RAND_RUNNABLE(2, "RandRunnable", "RandRunnable"),
+
+	/**
+	 * The '<em><b>Whole CS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WHOLE_CS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WHOLE_CS(3, "WholeCS", "WholeCS"),
+
+	/**
+	 * The '<em><b>Grouped FMLP</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GROUPED_FMLP_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GROUPED_FMLP(4, "GroupedFMLP", "GroupedFMLP"),
+
+	/**
+	 * The '<em><b>Weak FMLP</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WEAK_FMLP_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WEAK_FMLP(5, "WeakFMLP", "WeakFMLP"),
+
+	/**
+	 * The '<em><b>EVA</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EVA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EVA(6, "EVA", "EVA");
+
+	/**
+	 * The '<em><b>RWper Task</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>RWper Task</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #RWPER_TASK
+	 * @model name="RWperTask"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RWPER_TASK_VALUE = 0;
+
+	/**
+	 * The '<em><b>RWper Call Sequence</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>RWper Call Sequence</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #RWPER_CALL_SEQUENCE
+	 * @model name="RWperCallSequence"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RWPER_CALL_SEQUENCE_VALUE = 1;
+
+	/**
+	 * The '<em><b>Rand Runnable</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Rand Runnable</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #RAND_RUNNABLE
+	 * @model name="RandRunnable"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RAND_RUNNABLE_VALUE = 2;
+
+	/**
+	 * The '<em><b>Whole CS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Whole CS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WHOLE_CS
+	 * @model name="WholeCS"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WHOLE_CS_VALUE = 3;
+
+	/**
+	 * The '<em><b>Grouped FMLP</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Grouped FMLP</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #GROUPED_FMLP
+	 * @model name="GroupedFMLP"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GROUPED_FMLP_VALUE = 4;
+
+	/**
+	 * The '<em><b>Weak FMLP</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Weak FMLP</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WEAK_FMLP
+	 * @model name="WeakFMLP"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WEAK_FMLP_VALUE = 5;
+
+	/**
+	 * The '<em><b>EVA</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>EVA</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #EVA
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EVA_VALUE = 6;
+
+	/**
+	 * An array of all the '<em><b>Semaphore Access Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SemaphoreAccessType[] VALUES_ARRAY =
+		new SemaphoreAccessType[] {
+			RWPER_TASK,
+			RWPER_CALL_SEQUENCE,
+			RAND_RUNNABLE,
+			WHOLE_CS,
+			GROUPED_FMLP,
+			WEAK_FMLP,
+			EVA,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Semaphore Access Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SemaphoreAccessType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Semaphore Access Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreAccessType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SemaphoreAccessType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Semaphore Access Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreAccessType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SemaphoreAccessType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Semaphore Access Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreAccessType get(int value) {
+		switch (value) {
+			case RWPER_TASK_VALUE: return RWPER_TASK;
+			case RWPER_CALL_SEQUENCE_VALUE: return RWPER_CALL_SEQUENCE;
+			case RAND_RUNNABLE_VALUE: return RAND_RUNNABLE;
+			case WHOLE_CS_VALUE: return WHOLE_CS;
+			case GROUPED_FMLP_VALUE: return GROUPED_FMLP;
+			case WEAK_FMLP_VALUE: return WEAK_FMLP;
+			case EVA_VALUE: return EVA;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private SemaphoreAccessType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //SemaphoreAccessType
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreProperties.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreProperties.java
new file mode 100644
index 0000000..c45b187
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreProperties.java
@@ -0,0 +1,176 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Semaphore Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#isPriorityCeilingProtocol <em>Priority Ceiling Protocol</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreType <em>Semaphore Type</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getWaitMode <em>Wait Mode</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreAccess <em>Semaphore Access</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreProperties()
+ * @model
+ * @generated
+ */
+public interface SemaphoreProperties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count</em>' containment reference.
+	 * @see #setCount(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreProperties_Count()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getCount <em>Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count</em>' containment reference.
+	 * @see #getCount()
+	 * @generated
+	 */
+	void setCount(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Priority Ceiling Protocol</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Priority Ceiling Protocol</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Priority Ceiling Protocol</em>' attribute.
+	 * @see #setPriorityCeilingProtocol(boolean)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreProperties_PriorityCeilingProtocol()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isPriorityCeilingProtocol();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#isPriorityCeilingProtocol <em>Priority Ceiling Protocol</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Priority Ceiling Protocol</em>' attribute.
+	 * @see #isPriorityCeilingProtocol()
+	 * @generated
+	 */
+	void setPriorityCeilingProtocol(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Semaphore Type</b></em>' attribute.
+	 * The default value is <code>"counting"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Semaphore Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Semaphore Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType
+	 * @see #setSemaphoreType(SemaphoreType)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreProperties_SemaphoreType()
+	 * @model default="counting" unique="false" required="true"
+	 * @generated
+	 */
+	SemaphoreType getSemaphoreType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreType <em>Semaphore Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Semaphore Type</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType
+	 * @see #getSemaphoreType()
+	 * @generated
+	 */
+	void setSemaphoreType(SemaphoreType value);
+
+	/**
+	 * Returns the value of the '<em><b>Wait Mode</b></em>' attribute.
+	 * The default value is <code>"active waiting"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.WaitModes}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Wait Mode</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Wait Mode</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.WaitModes
+	 * @see #setWaitMode(WaitModes)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreProperties_WaitMode()
+	 * @model default="active waiting" unique="false" required="true"
+	 * @generated
+	 */
+	WaitModes getWaitMode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getWaitMode <em>Wait Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Wait Mode</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.WaitModes
+	 * @see #getWaitMode()
+	 * @generated
+	 */
+	void setWaitMode(WaitModes value);
+
+	/**
+	 * Returns the value of the '<em><b>Semaphore Access</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Semaphore Access</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Semaphore Access</em>' containment reference.
+	 * @see #setSemaphoreAccess(SemaphoreAccessProperties)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreProperties_SemaphoreAccess()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	SemaphoreAccessProperties getSemaphoreAccess();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties#getSemaphoreAccess <em>Semaphore Access</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Semaphore Access</em>' containment reference.
+	 * @see #getSemaphoreAccess()
+	 * @generated
+	 */
+	void setSemaphoreAccess(SemaphoreAccessProperties value);
+
+} // SemaphoreProperties
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreRequestOrder.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreRequestOrder.java
new file mode 100644
index 0000000..4d9e934
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreRequestOrder.java
@@ -0,0 +1,251 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Semaphore Request Order</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreRequestOrder()
+ * @model
+ * @generated
+ */
+public enum SemaphoreRequestOrder implements Enumerator {
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(0, "none", "none"),
+
+	/**
+	 * The '<em><b>Request Grouped</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #REQUEST_GROUPED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	REQUEST_GROUPED(1, "requestGrouped", "requestGrouped"),
+
+	/**
+	 * The '<em><b>Name Increasing</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NAME_INCREASING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NAME_INCREASING(2, "nameIncreasing", "nameIncreasing");
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Request Grouped</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Request Grouped</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #REQUEST_GROUPED
+	 * @model name="requestGrouped"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int REQUEST_GROUPED_VALUE = 1;
+
+	/**
+	 * The '<em><b>Name Increasing</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Name Increasing</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NAME_INCREASING
+	 * @model name="nameIncreasing"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NAME_INCREASING_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Semaphore Request Order</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SemaphoreRequestOrder[] VALUES_ARRAY =
+		new SemaphoreRequestOrder[] {
+			NONE,
+			REQUEST_GROUPED,
+			NAME_INCREASING,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Semaphore Request Order</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SemaphoreRequestOrder> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Semaphore Request Order</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreRequestOrder get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SemaphoreRequestOrder result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Semaphore Request Order</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreRequestOrder getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SemaphoreRequestOrder result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Semaphore Request Order</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreRequestOrder get(int value) {
+		switch (value) {
+			case NONE_VALUE: return NONE;
+			case REQUEST_GROUPED_VALUE: return REQUEST_GROUPED;
+			case NAME_INCREASING_VALUE: return NAME_INCREASING;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private SemaphoreRequestOrder(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //SemaphoreRequestOrder
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreType.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreType.java
new file mode 100644
index 0000000..d3bd0dd
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SemaphoreType.java
@@ -0,0 +1,251 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Semaphore Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSemaphoreType()
+ * @model
+ * @generated
+ */
+public enum SemaphoreType implements Enumerator {
+	/**
+	 * The '<em><b>Binary</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BINARY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BINARY(0, "binary", "binary"),
+
+	/**
+	 * The '<em><b>Counting</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COUNTING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	COUNTING(1, "counting", "counting"),
+
+	/**
+	 * The '<em><b>Both</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOTH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOTH(2, "both", "both");
+
+	/**
+	 * The '<em><b>Binary</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Binary</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BINARY
+	 * @model name="binary"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BINARY_VALUE = 0;
+
+	/**
+	 * The '<em><b>Counting</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Counting</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #COUNTING
+	 * @model name="counting"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COUNTING_VALUE = 1;
+
+	/**
+	 * The '<em><b>Both</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Both</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BOTH
+	 * @model name="both"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOTH_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Semaphore Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SemaphoreType[] VALUES_ARRAY =
+		new SemaphoreType[] {
+			BINARY,
+			COUNTING,
+			BOTH,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Semaphore Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SemaphoreType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Semaphore Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SemaphoreType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Semaphore Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SemaphoreType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Semaphore Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SemaphoreType get(int value) {
+		switch (value) {
+			case BINARY_VALUE: return BINARY;
+			case COUNTING_VALUE: return COUNTING;
+			case BOTH_VALUE: return BOTH;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private SemaphoreType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //SemaphoreType
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SporadicActivation.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SporadicActivation.java
new file mode 100644
index 0000000..7a0887e
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/SporadicActivation.java
@@ -0,0 +1,113 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sporadic Activation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMaxValueDistance <em>Max Value Distance</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getAvgValueDistance <em>Avg Value Distance</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSporadicActivation()
+ * @model
+ * @generated
+ */
+public interface SporadicActivation extends Activation {
+	/**
+	 * Returns the value of the '<em><b>Min Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min Value</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min Value</em>' containment reference.
+	 * @see #setMinValue(IntegerTimeDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSporadicActivation_MinValue()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerTimeDistribution getMinValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMinValue <em>Min Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min Value</em>' containment reference.
+	 * @see #getMinValue()
+	 * @generated
+	 */
+	void setMinValue(IntegerTimeDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Value Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Value Distance</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max Value Distance</em>' containment reference.
+	 * @see #setMaxValueDistance(PercentageDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSporadicActivation_MaxValueDistance()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PercentageDistribution getMaxValueDistance();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getMaxValueDistance <em>Max Value Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Value Distance</em>' containment reference.
+	 * @see #getMaxValueDistance()
+	 * @generated
+	 */
+	void setMaxValueDistance(PercentageDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Avg Value Distance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Avg Value Distance</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Avg Value Distance</em>' containment reference.
+	 * @see #setAvgValueDistance(PercentageDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getSporadicActivation_AvgValueDistance()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PercentageDistribution getAvgValueDistance();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation#getAvgValueDistance <em>Avg Value Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Avg Value Distance</em>' containment reference.
+	 * @see #getAvgValueDistance()
+	 * @generated
+	 */
+	void setAvgValueDistance(PercentageDistribution value);
+
+} // SporadicActivation
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TaskProperties.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TaskProperties.java
new file mode 100644
index 0000000..1012cb2
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TaskProperties.java
@@ -0,0 +1,284 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Task Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getLoad <em>Load</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPerTaskGroup <em>Per Task Group</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMta <em>Mta</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getDeadlineFactor <em>Deadline Factor</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallSequencesBetweenSchedulePoints <em>Call Sequences Between Schedule Points</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallGraphs <em>Call Graphs</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMappingDetermination <em>Mapping Determination</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPriorityDetermination <em>Priority Determination</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties()
+ * @model
+ * @generated
+ */
+public interface TaskProperties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Count</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count</em>' containment reference.
+	 * @see #setCount(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_Count()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCount <em>Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count</em>' containment reference.
+	 * @see #getCount()
+	 * @generated
+	 */
+	void setCount(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Load</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Load</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Load</em>' containment reference.
+	 * @see #setLoad(PercentageDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_Load()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	PercentageDistribution getLoad();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getLoad <em>Load</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Load</em>' containment reference.
+	 * @see #getLoad()
+	 * @generated
+	 */
+	void setLoad(PercentageDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Per Task Group</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Per Task Group</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Per Task Group</em>' containment reference.
+	 * @see #setPerTaskGroup(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_PerTaskGroup()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getPerTaskGroup();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPerTaskGroup <em>Per Task Group</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Per Task Group</em>' containment reference.
+	 * @see #getPerTaskGroup()
+	 * @generated
+	 */
+	void setPerTaskGroup(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Mta</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mta</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mta</em>' containment reference.
+	 * @see #setMta(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_Mta()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getMta();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMta <em>Mta</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mta</em>' containment reference.
+	 * @see #getMta()
+	 * @generated
+	 */
+	void setMta(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Deadline Factor</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Deadline Factor</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Deadline Factor</em>' containment reference.
+	 * @see #setDeadlineFactor(DoubleDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_DeadlineFactor()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	DoubleDistribution getDeadlineFactor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getDeadlineFactor <em>Deadline Factor</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Deadline Factor</em>' containment reference.
+	 * @see #getDeadlineFactor()
+	 * @generated
+	 */
+	void setDeadlineFactor(DoubleDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Call Sequences Between Schedule Points</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Call Sequences Between Schedule Points</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Call Sequences Between Schedule Points</em>' containment reference.
+	 * @see #setCallSequencesBetweenSchedulePoints(IntegerDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_CallSequencesBetweenSchedulePoints()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	IntegerDistribution getCallSequencesBetweenSchedulePoints();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallSequencesBetweenSchedulePoints <em>Call Sequences Between Schedule Points</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Call Sequences Between Schedule Points</em>' containment reference.
+	 * @see #getCallSequencesBetweenSchedulePoints()
+	 * @generated
+	 */
+	void setCallSequencesBetweenSchedulePoints(IntegerDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Call Graphs</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Call Graphs</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Call Graphs</em>' containment reference.
+	 * @see #setCallGraphs(CallGraphProperties)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_CallGraphs()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	CallGraphProperties getCallGraphs();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getCallGraphs <em>Call Graphs</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Call Graphs</em>' containment reference.
+	 * @see #getCallGraphs()
+	 * @generated
+	 */
+	void setCallGraphs(CallGraphProperties value);
+
+	/**
+	 * Returns the value of the '<em><b>Mapping Determination</b></em>' attribute.
+	 * The default value is <code>"Worst Fit Decreasing"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mapping Determination</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mapping Determination</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms
+	 * @see #setMappingDetermination(ProcessMappingAlgorithms)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_MappingDetermination()
+	 * @model default="Worst Fit Decreasing" unique="false"
+	 * @generated
+	 */
+	ProcessMappingAlgorithms getMappingDetermination();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getMappingDetermination <em>Mapping Determination</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mapping Determination</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms
+	 * @see #getMappingDetermination()
+	 * @generated
+	 */
+	void setMappingDetermination(ProcessMappingAlgorithms value);
+
+	/**
+	 * Returns the value of the '<em><b>Priority Determination</b></em>' attribute.
+	 * The default value is <code>"Rate Monotonic"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Priority Determination</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Priority Determination</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm
+	 * @see #setPriorityDetermination(PriorityDeterminationAlgorithm)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTaskProperties_PriorityDetermination()
+	 * @model default="Rate Monotonic" unique="false"
+	 * @generated
+	 */
+	PriorityDeterminationAlgorithm getPriorityDetermination();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties#getPriorityDetermination <em>Priority Determination</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Priority Determination</em>' attribute.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm
+	 * @see #getPriorityDetermination()
+	 * @generated
+	 */
+	void setPriorityDetermination(PriorityDeterminationAlgorithm value);
+
+} // TaskProperties
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TimeUnit.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TimeUnit.java
new file mode 100644
index 0000000..36ef961
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TimeUnit.java
@@ -0,0 +1,305 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Time Unit</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTimeUnit()
+ * @model
+ * @generated
+ */
+public enum TimeUnit implements Enumerator {
+	/**
+	 * The '<em><b>Ps</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PS(0, "ps", "ps"),
+
+	/**
+	 * The '<em><b>Ns</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NS(1, "ns", "ns"),
+
+	/**
+	 * The '<em><b>Us</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #US_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	US(2, "us", "us"),
+
+	/**
+	 * The '<em><b>Ms</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MS(3, "ms", "ms"),
+
+	/**
+	 * The '<em><b>S</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #S_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	S(4, "s", "s");
+
+	/**
+	 * The '<em><b>Ps</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Ps</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PS
+	 * @model name="ps"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Ns</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Ns</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NS
+	 * @model name="ns"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NS_VALUE = 1;
+
+	/**
+	 * The '<em><b>Us</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Us</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #US
+	 * @model name="us"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int US_VALUE = 2;
+
+	/**
+	 * The '<em><b>Ms</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Ms</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MS
+	 * @model name="ms"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MS_VALUE = 3;
+
+	/**
+	 * The '<em><b>S</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>S</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #S
+	 * @model name="s"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int S_VALUE = 4;
+
+	/**
+	 * An array of all the '<em><b>Time Unit</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final TimeUnit[] VALUES_ARRAY =
+		new TimeUnit[] {
+			PS,
+			NS,
+			US,
+			MS,
+			S,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Time Unit</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<TimeUnit> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Time Unit</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TimeUnit get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TimeUnit result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Time Unit</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TimeUnit getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TimeUnit result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Time Unit</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TimeUnit get(int value) {
+		switch (value) {
+			case PS_VALUE: return PS;
+			case NS_VALUE: return NS;
+			case US_VALUE: return US;
+			case MS_VALUE: return MS;
+			case S_VALUE: return S;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private TimeUnit(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //TimeUnit
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TriangleClock.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TriangleClock.java
new file mode 100644
index 0000000..a3cb472
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/TriangleClock.java
@@ -0,0 +1,141 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Triangle Clock</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMin_start <em>Min start</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMax_end <em>Max end</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getShift <em>Shift</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getPeriod <em>Period</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTriangleClock()
+ * @model
+ * @generated
+ */
+public interface TriangleClock extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Min start</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min start</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min start</em>' containment reference.
+	 * @see #setMin_start(DoubleDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTriangleClock_Min_start()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DoubleDistribution getMin_start();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMin_start <em>Min start</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min start</em>' containment reference.
+	 * @see #getMin_start()
+	 * @generated
+	 */
+	void setMin_start(DoubleDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Max end</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max end</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max end</em>' containment reference.
+	 * @see #setMax_end(DoubleDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTriangleClock_Max_end()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DoubleDistribution getMax_end();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getMax_end <em>Max end</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max end</em>' containment reference.
+	 * @see #getMax_end()
+	 * @generated
+	 */
+	void setMax_end(DoubleDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Shift</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Shift</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Shift</em>' containment reference.
+	 * @see #setShift(IntegerTimeDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTriangleClock_Shift()
+	 * @model containment="true"
+	 * @generated
+	 */
+	IntegerTimeDistribution getShift();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getShift <em>Shift</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Shift</em>' containment reference.
+	 * @see #getShift()
+	 * @generated
+	 */
+	void setShift(IntegerTimeDistribution value);
+
+	/**
+	 * Returns the value of the '<em><b>Period</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Period</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Period</em>' containment reference.
+	 * @see #setPeriod(IntegerTimeDistribution)
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getTriangleClock_Period()
+	 * @model containment="true"
+	 * @generated
+	 */
+	IntegerTimeDistribution getPeriod();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock#getPeriod <em>Period</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Period</em>' containment reference.
+	 * @see #getPeriod()
+	 * @generated
+	 */
+	void setPeriod(IntegerTimeDistribution value);
+
+} // TriangleClock
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/WaitModes.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/WaitModes.java
new file mode 100644
index 0000000..8debc38
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/WaitModes.java
@@ -0,0 +1,224 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Wait Modes</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#getWaitModes()
+ * @model
+ * @generated
+ */
+public enum WaitModes implements Enumerator {
+	/**
+	 * The '<em><b>Polling</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #POLLING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	POLLING(0, "polling", "active waiting"),
+
+	/**
+	 * The '<em><b>Parking</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PARKING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PARKING(1, "parking", "passive waiting");
+
+	/**
+	 * The '<em><b>Polling</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Polling</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #POLLING
+	 * @model name="polling" literal="active waiting"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int POLLING_VALUE = 0;
+
+	/**
+	 * The '<em><b>Parking</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Parking</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PARKING
+	 * @model name="parking" literal="passive waiting"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PARKING_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Wait Modes</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final WaitModes[] VALUES_ARRAY =
+		new WaitModes[] {
+			POLLING,
+			PARKING,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Wait Modes</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<WaitModes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Wait Modes</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static WaitModes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			WaitModes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Wait Modes</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static WaitModes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			WaitModes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Wait Modes</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static WaitModes get(int value) {
+		switch (value) {
+			case POLLING_VALUE: return POLLING;
+			case PARKING_VALUE: return PARKING;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private WaitModes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //WaitModes
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/ActivationImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/ActivationImpl.java
new file mode 100644
index 0000000..3d34469
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/ActivationImpl.java
@@ -0,0 +1,175 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import java.math.BigInteger;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Activation;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Activation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationImpl#getAppearanceProbability <em>Appearance Probability</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ActivationImpl extends MinimalEObjectImpl.Container implements Activation {
+	/**
+	 * The default value of the '{@link #getAppearanceProbability() <em>Appearance Probability</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAppearanceProbability()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final BigInteger APPEARANCE_PROBABILITY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAppearanceProbability() <em>Appearance Probability</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAppearanceProbability()
+	 * @generated
+	 * @ordered
+	 */
+	protected BigInteger appearanceProbability = APPEARANCE_PROBABILITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ActivationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.ACTIVATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BigInteger getAppearanceProbability() {
+		return appearanceProbability;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAppearanceProbability(BigInteger newAppearanceProbability) {
+		BigInteger oldAppearanceProbability = appearanceProbability;
+		appearanceProbability = newAppearanceProbability;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.ACTIVATION__APPEARANCE_PROBABILITY, oldAppearanceProbability, appearanceProbability));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION__APPEARANCE_PROBABILITY:
+				return getAppearanceProbability();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION__APPEARANCE_PROBABILITY:
+				setAppearanceProbability((BigInteger)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION__APPEARANCE_PROBABILITY:
+				setAppearanceProbability(APPEARANCE_PROBABILITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION__APPEARANCE_PROBABILITY:
+				return APPEARANCE_PROBABILITY_EDEFAULT == null ? appearanceProbability != null : !APPEARANCE_PROBABILITY_EDEFAULT.equals(appearanceProbability);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (appearanceProbability: ");
+		result.append(appearanceProbability);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ActivationImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/ActivationPropertiesImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/ActivationPropertiesImpl.java
new file mode 100644
index 0000000..f2c2dcf
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/ActivationPropertiesImpl.java
@@ -0,0 +1,320 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation;
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Activation Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationPropertiesImpl#getPeriodicActivation <em>Periodic Activation</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationPropertiesImpl#getPeriodicTriangleShift <em>Periodic Triangle Shift</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.ActivationPropertiesImpl#getSporadicActivation <em>Sporadic Activation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ActivationPropertiesImpl extends MinimalEObjectImpl.Container implements ActivationProperties {
+	/**
+	 * The cached value of the '{@link #getPeriodicActivation() <em>Periodic Activation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPeriodicActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected PeriodicActivation periodicActivation;
+
+	/**
+	 * The cached value of the '{@link #getPeriodicTriangleShift() <em>Periodic Triangle Shift</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPeriodicTriangleShift()
+	 * @generated
+	 * @ordered
+	 */
+	protected PeriodicTriangleShift periodicTriangleShift;
+
+	/**
+	 * The cached value of the '{@link #getSporadicActivation() <em>Sporadic Activation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSporadicActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected SporadicActivation sporadicActivation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ActivationPropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.ACTIVATION_PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PeriodicActivation getPeriodicActivation() {
+		return periodicActivation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPeriodicActivation(PeriodicActivation newPeriodicActivation, NotificationChain msgs) {
+		PeriodicActivation oldPeriodicActivation = periodicActivation;
+		periodicActivation = newPeriodicActivation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION, oldPeriodicActivation, newPeriodicActivation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPeriodicActivation(PeriodicActivation newPeriodicActivation) {
+		if (newPeriodicActivation != periodicActivation) {
+			NotificationChain msgs = null;
+			if (periodicActivation != null)
+				msgs = ((InternalEObject)periodicActivation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION, null, msgs);
+			if (newPeriodicActivation != null)
+				msgs = ((InternalEObject)newPeriodicActivation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION, null, msgs);
+			msgs = basicSetPeriodicActivation(newPeriodicActivation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION, newPeriodicActivation, newPeriodicActivation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PeriodicTriangleShift getPeriodicTriangleShift() {
+		return periodicTriangleShift;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPeriodicTriangleShift(PeriodicTriangleShift newPeriodicTriangleShift, NotificationChain msgs) {
+		PeriodicTriangleShift oldPeriodicTriangleShift = periodicTriangleShift;
+		periodicTriangleShift = newPeriodicTriangleShift;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT, oldPeriodicTriangleShift, newPeriodicTriangleShift);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPeriodicTriangleShift(PeriodicTriangleShift newPeriodicTriangleShift) {
+		if (newPeriodicTriangleShift != periodicTriangleShift) {
+			NotificationChain msgs = null;
+			if (periodicTriangleShift != null)
+				msgs = ((InternalEObject)periodicTriangleShift).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT, null, msgs);
+			if (newPeriodicTriangleShift != null)
+				msgs = ((InternalEObject)newPeriodicTriangleShift).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT, null, msgs);
+			msgs = basicSetPeriodicTriangleShift(newPeriodicTriangleShift, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT, newPeriodicTriangleShift, newPeriodicTriangleShift));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SporadicActivation getSporadicActivation() {
+		return sporadicActivation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSporadicActivation(SporadicActivation newSporadicActivation, NotificationChain msgs) {
+		SporadicActivation oldSporadicActivation = sporadicActivation;
+		sporadicActivation = newSporadicActivation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION, oldSporadicActivation, newSporadicActivation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSporadicActivation(SporadicActivation newSporadicActivation) {
+		if (newSporadicActivation != sporadicActivation) {
+			NotificationChain msgs = null;
+			if (sporadicActivation != null)
+				msgs = ((InternalEObject)sporadicActivation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION, null, msgs);
+			if (newSporadicActivation != null)
+				msgs = ((InternalEObject)newSporadicActivation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION, null, msgs);
+			msgs = basicSetSporadicActivation(newSporadicActivation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION, newSporadicActivation, newSporadicActivation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION:
+				return basicSetPeriodicActivation(null, msgs);
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT:
+				return basicSetPeriodicTriangleShift(null, msgs);
+			case RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION:
+				return basicSetSporadicActivation(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION:
+				return getPeriodicActivation();
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT:
+				return getPeriodicTriangleShift();
+			case RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION:
+				return getSporadicActivation();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION:
+				setPeriodicActivation((PeriodicActivation)newValue);
+				return;
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT:
+				setPeriodicTriangleShift((PeriodicTriangleShift)newValue);
+				return;
+			case RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION:
+				setSporadicActivation((SporadicActivation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION:
+				setPeriodicActivation((PeriodicActivation)null);
+				return;
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT:
+				setPeriodicTriangleShift((PeriodicTriangleShift)null);
+				return;
+			case RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION:
+				setSporadicActivation((SporadicActivation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION:
+				return periodicActivation != null;
+			case RTMGCPackage.ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT:
+				return periodicTriangleShift != null;
+			case RTMGCPackage.ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION:
+				return sporadicActivation != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ActivationPropertiesImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/CallGraphPropertiesImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/CallGraphPropertiesImpl.java
new file mode 100644
index 0000000..d6b9a37
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/CallGraphPropertiesImpl.java
@@ -0,0 +1,252 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Call Graph Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.CallGraphPropertiesImpl#getSignalDomainCoverage <em>Signal Domain Coverage</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.CallGraphPropertiesImpl#getCallSequenceUsage <em>Call Sequence Usage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CallGraphPropertiesImpl extends MinimalEObjectImpl.Container implements CallGraphProperties {
+	/**
+	 * The cached value of the '{@link #getSignalDomainCoverage() <em>Signal Domain Coverage</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSignalDomainCoverage()
+	 * @generated
+	 * @ordered
+	 */
+	protected PercentageDistribution signalDomainCoverage;
+
+	/**
+	 * The cached value of the '{@link #getCallSequenceUsage() <em>Call Sequence Usage</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCallSequenceUsage()
+	 * @generated
+	 * @ordered
+	 */
+	protected PercentageDistribution callSequenceUsage;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CallGraphPropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.CALL_GRAPH_PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution getSignalDomainCoverage() {
+		return signalDomainCoverage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSignalDomainCoverage(PercentageDistribution newSignalDomainCoverage, NotificationChain msgs) {
+		PercentageDistribution oldSignalDomainCoverage = signalDomainCoverage;
+		signalDomainCoverage = newSignalDomainCoverage;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE, oldSignalDomainCoverage, newSignalDomainCoverage);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSignalDomainCoverage(PercentageDistribution newSignalDomainCoverage) {
+		if (newSignalDomainCoverage != signalDomainCoverage) {
+			NotificationChain msgs = null;
+			if (signalDomainCoverage != null)
+				msgs = ((InternalEObject)signalDomainCoverage).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE, null, msgs);
+			if (newSignalDomainCoverage != null)
+				msgs = ((InternalEObject)newSignalDomainCoverage).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE, null, msgs);
+			msgs = basicSetSignalDomainCoverage(newSignalDomainCoverage, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE, newSignalDomainCoverage, newSignalDomainCoverage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution getCallSequenceUsage() {
+		return callSequenceUsage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCallSequenceUsage(PercentageDistribution newCallSequenceUsage, NotificationChain msgs) {
+		PercentageDistribution oldCallSequenceUsage = callSequenceUsage;
+		callSequenceUsage = newCallSequenceUsage;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE, oldCallSequenceUsage, newCallSequenceUsage);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCallSequenceUsage(PercentageDistribution newCallSequenceUsage) {
+		if (newCallSequenceUsage != callSequenceUsage) {
+			NotificationChain msgs = null;
+			if (callSequenceUsage != null)
+				msgs = ((InternalEObject)callSequenceUsage).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE, null, msgs);
+			if (newCallSequenceUsage != null)
+				msgs = ((InternalEObject)newCallSequenceUsage).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE, null, msgs);
+			msgs = basicSetCallSequenceUsage(newCallSequenceUsage, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE, newCallSequenceUsage, newCallSequenceUsage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE:
+				return basicSetSignalDomainCoverage(null, msgs);
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE:
+				return basicSetCallSequenceUsage(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE:
+				return getSignalDomainCoverage();
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE:
+				return getCallSequenceUsage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE:
+				setSignalDomainCoverage((PercentageDistribution)newValue);
+				return;
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE:
+				setCallSequenceUsage((PercentageDistribution)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE:
+				setSignalDomainCoverage((PercentageDistribution)null);
+				return;
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE:
+				setCallSequenceUsage((PercentageDistribution)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE:
+				return signalDomainCoverage != null;
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE:
+				return callSequenceUsage != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CallGraphPropertiesImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/DistributionImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/DistributionImpl.java
new file mode 100644
index 0000000..cf7ca2b
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/DistributionImpl.java
@@ -0,0 +1,174 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Distribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DistributionImpl#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class DistributionImpl extends MinimalEObjectImpl.Container implements Distribution {
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final DistributionType TYPE_EDEFAULT = DistributionType.CONST;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected DistributionType type = TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DistributionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.DISTRIBUTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DistributionType getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(DistributionType newType) {
+		DistributionType oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.DISTRIBUTION__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.DISTRIBUTION__TYPE:
+				return getType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.DISTRIBUTION__TYPE:
+				setType((DistributionType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.DISTRIBUTION__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.DISTRIBUTION__TYPE:
+				return type != TYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (type: ");
+		result.append(type);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DistributionImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/DoubleDistributionImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/DoubleDistributionImpl.java
new file mode 100644
index 0000000..df1da62
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/DoubleDistributionImpl.java
@@ -0,0 +1,280 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DoubleDistributionImpl#getMin <em>Min</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DoubleDistributionImpl#getAvg <em>Avg</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.DoubleDistributionImpl#getMax <em>Max</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DoubleDistributionImpl extends DistributionImpl implements DoubleDistribution {
+	/**
+	 * The default value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MIN_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected double min = MIN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAvg() <em>Avg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAvg()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double AVG_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getAvg() <em>Avg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAvg()
+	 * @generated
+	 * @ordered
+	 */
+	protected double avg = AVG_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MAX_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected double max = MAX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleDistributionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.DOUBLE_DISTRIBUTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getMin() {
+		return min;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMin(double newMin) {
+		double oldMin = min;
+		min = newMin;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.DOUBLE_DISTRIBUTION__MIN, oldMin, min));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getAvg() {
+		return avg;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAvg(double newAvg) {
+		double oldAvg = avg;
+		avg = newAvg;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.DOUBLE_DISTRIBUTION__AVG, oldAvg, avg));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getMax() {
+		return max;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMax(double newMax) {
+		double oldMax = max;
+		max = newMax;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.DOUBLE_DISTRIBUTION__MAX, oldMax, max));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MIN:
+				return getMin();
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__AVG:
+				return getAvg();
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MAX:
+				return getMax();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MIN:
+				setMin((Double)newValue);
+				return;
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__AVG:
+				setAvg((Double)newValue);
+				return;
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MAX:
+				setMax((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MIN:
+				setMin(MIN_EDEFAULT);
+				return;
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__AVG:
+				setAvg(AVG_EDEFAULT);
+				return;
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MAX:
+				setMax(MAX_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MIN:
+				return min != MIN_EDEFAULT;
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__AVG:
+				return avg != AVG_EDEFAULT;
+			case RTMGCPackage.DOUBLE_DISTRIBUTION__MAX:
+				return max != MAX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (min: ");
+		result.append(min);
+		result.append(", avg: ");
+		result.append(avg);
+		result.append(", max: ");
+		result.append(max);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DoubleDistributionImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/GenerationImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/GenerationImpl.java
new file mode 100644
index 0000000..69e0124
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/GenerationImpl.java
@@ -0,0 +1,765 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import java.math.BigInteger;
+
+import java.util.Collection;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Generation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getBaseModel <em>Base Model</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getHwModels <em>Hw Models</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getOsModels <em>Os Models</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getSwModel <em>Sw Model</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getOutputFolder <em>Output Folder</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getActivations <em>Activations</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getLabels <em>Labels</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getRunnables <em>Runnables</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getSemaphores <em>Semaphores</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.GenerationImpl#getTasks <em>Tasks</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GenerationImpl extends MinimalEObjectImpl.Container implements Generation {
+	/**
+	 * The default value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final BigInteger COUNT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected BigInteger count = COUNT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBaseModel() <em>Base Model</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBaseModel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BASE_MODEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBaseModel() <em>Base Model</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBaseModel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String baseModel = BASE_MODEL_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getHwModels() <em>Hw Models</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHwModels()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> hwModels;
+
+	/**
+	 * The cached value of the '{@link #getOsModels() <em>Os Models</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOsModels()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> osModels;
+
+	/**
+	 * The default value of the '{@link #getSwModel() <em>Sw Model</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSwModel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SW_MODEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSwModel() <em>Sw Model</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSwModel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String swModel = SW_MODEL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOutputFolder() <em>Output Folder</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutputFolder()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String OUTPUT_FOLDER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getOutputFolder() <em>Output Folder</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutputFolder()
+	 * @generated
+	 * @ordered
+	 */
+	protected String outputFolder = OUTPUT_FOLDER_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getActivations() <em>Activations</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivations()
+	 * @generated
+	 * @ordered
+	 */
+	protected ActivationProperties activations;
+
+	/**
+	 * The cached value of the '{@link #getLabels() <em>Labels</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabels()
+	 * @generated
+	 * @ordered
+	 */
+	protected LabelProperties labels;
+
+	/**
+	 * The cached value of the '{@link #getRunnables() <em>Runnables</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRunnables()
+	 * @generated
+	 * @ordered
+	 */
+	protected RunnableProperties runnables;
+
+	/**
+	 * The cached value of the '{@link #getSemaphores() <em>Semaphores</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemaphores()
+	 * @generated
+	 * @ordered
+	 */
+	protected SemaphoreProperties semaphores;
+
+	/**
+	 * The cached value of the '{@link #getTasks() <em>Tasks</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTasks()
+	 * @generated
+	 * @ordered
+	 */
+	protected TaskProperties tasks;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GenerationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.GENERATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BigInteger getCount() {
+		return count;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCount(BigInteger newCount) {
+		BigInteger oldCount = count;
+		count = newCount;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__COUNT, oldCount, count));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getBaseModel() {
+		return baseModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBaseModel(String newBaseModel) {
+		String oldBaseModel = baseModel;
+		baseModel = newBaseModel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__BASE_MODEL, oldBaseModel, baseModel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<String> getHwModels() {
+		if (hwModels == null) {
+			hwModels = new EDataTypeEList<String>(String.class, this, RTMGCPackage.GENERATION__HW_MODELS);
+		}
+		return hwModels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<String> getOsModels() {
+		if (osModels == null) {
+			osModels = new EDataTypeEList<String>(String.class, this, RTMGCPackage.GENERATION__OS_MODELS);
+		}
+		return osModels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSwModel() {
+		return swModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSwModel(String newSwModel) {
+		String oldSwModel = swModel;
+		swModel = newSwModel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__SW_MODEL, oldSwModel, swModel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getOutputFolder() {
+		return outputFolder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOutputFolder(String newOutputFolder) {
+		String oldOutputFolder = outputFolder;
+		outputFolder = newOutputFolder;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__OUTPUT_FOLDER, oldOutputFolder, outputFolder));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ActivationProperties getActivations() {
+		return activations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetActivations(ActivationProperties newActivations, NotificationChain msgs) {
+		ActivationProperties oldActivations = activations;
+		activations = newActivations;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__ACTIVATIONS, oldActivations, newActivations);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setActivations(ActivationProperties newActivations) {
+		if (newActivations != activations) {
+			NotificationChain msgs = null;
+			if (activations != null)
+				msgs = ((InternalEObject)activations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__ACTIVATIONS, null, msgs);
+			if (newActivations != null)
+				msgs = ((InternalEObject)newActivations).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__ACTIVATIONS, null, msgs);
+			msgs = basicSetActivations(newActivations, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__ACTIVATIONS, newActivations, newActivations));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LabelProperties getLabels() {
+		return labels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLabels(LabelProperties newLabels, NotificationChain msgs) {
+		LabelProperties oldLabels = labels;
+		labels = newLabels;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__LABELS, oldLabels, newLabels);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLabels(LabelProperties newLabels) {
+		if (newLabels != labels) {
+			NotificationChain msgs = null;
+			if (labels != null)
+				msgs = ((InternalEObject)labels).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__LABELS, null, msgs);
+			if (newLabels != null)
+				msgs = ((InternalEObject)newLabels).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__LABELS, null, msgs);
+			msgs = basicSetLabels(newLabels, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__LABELS, newLabels, newLabels));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RunnableProperties getRunnables() {
+		return runnables;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRunnables(RunnableProperties newRunnables, NotificationChain msgs) {
+		RunnableProperties oldRunnables = runnables;
+		runnables = newRunnables;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__RUNNABLES, oldRunnables, newRunnables);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRunnables(RunnableProperties newRunnables) {
+		if (newRunnables != runnables) {
+			NotificationChain msgs = null;
+			if (runnables != null)
+				msgs = ((InternalEObject)runnables).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__RUNNABLES, null, msgs);
+			if (newRunnables != null)
+				msgs = ((InternalEObject)newRunnables).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__RUNNABLES, null, msgs);
+			msgs = basicSetRunnables(newRunnables, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__RUNNABLES, newRunnables, newRunnables));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreProperties getSemaphores() {
+		return semaphores;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSemaphores(SemaphoreProperties newSemaphores, NotificationChain msgs) {
+		SemaphoreProperties oldSemaphores = semaphores;
+		semaphores = newSemaphores;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__SEMAPHORES, oldSemaphores, newSemaphores);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSemaphores(SemaphoreProperties newSemaphores) {
+		if (newSemaphores != semaphores) {
+			NotificationChain msgs = null;
+			if (semaphores != null)
+				msgs = ((InternalEObject)semaphores).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__SEMAPHORES, null, msgs);
+			if (newSemaphores != null)
+				msgs = ((InternalEObject)newSemaphores).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__SEMAPHORES, null, msgs);
+			msgs = basicSetSemaphores(newSemaphores, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__SEMAPHORES, newSemaphores, newSemaphores));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskProperties getTasks() {
+		return tasks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTasks(TaskProperties newTasks, NotificationChain msgs) {
+		TaskProperties oldTasks = tasks;
+		tasks = newTasks;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__TASKS, oldTasks, newTasks);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTasks(TaskProperties newTasks) {
+		if (newTasks != tasks) {
+			NotificationChain msgs = null;
+			if (tasks != null)
+				msgs = ((InternalEObject)tasks).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__TASKS, null, msgs);
+			if (newTasks != null)
+				msgs = ((InternalEObject)newTasks).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.GENERATION__TASKS, null, msgs);
+			msgs = basicSetTasks(newTasks, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.GENERATION__TASKS, newTasks, newTasks));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.GENERATION__ACTIVATIONS:
+				return basicSetActivations(null, msgs);
+			case RTMGCPackage.GENERATION__LABELS:
+				return basicSetLabels(null, msgs);
+			case RTMGCPackage.GENERATION__RUNNABLES:
+				return basicSetRunnables(null, msgs);
+			case RTMGCPackage.GENERATION__SEMAPHORES:
+				return basicSetSemaphores(null, msgs);
+			case RTMGCPackage.GENERATION__TASKS:
+				return basicSetTasks(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.GENERATION__COUNT:
+				return getCount();
+			case RTMGCPackage.GENERATION__BASE_MODEL:
+				return getBaseModel();
+			case RTMGCPackage.GENERATION__HW_MODELS:
+				return getHwModels();
+			case RTMGCPackage.GENERATION__OS_MODELS:
+				return getOsModels();
+			case RTMGCPackage.GENERATION__SW_MODEL:
+				return getSwModel();
+			case RTMGCPackage.GENERATION__OUTPUT_FOLDER:
+				return getOutputFolder();
+			case RTMGCPackage.GENERATION__ACTIVATIONS:
+				return getActivations();
+			case RTMGCPackage.GENERATION__LABELS:
+				return getLabels();
+			case RTMGCPackage.GENERATION__RUNNABLES:
+				return getRunnables();
+			case RTMGCPackage.GENERATION__SEMAPHORES:
+				return getSemaphores();
+			case RTMGCPackage.GENERATION__TASKS:
+				return getTasks();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.GENERATION__COUNT:
+				setCount((BigInteger)newValue);
+				return;
+			case RTMGCPackage.GENERATION__BASE_MODEL:
+				setBaseModel((String)newValue);
+				return;
+			case RTMGCPackage.GENERATION__HW_MODELS:
+				getHwModels().clear();
+				getHwModels().addAll((Collection<? extends String>)newValue);
+				return;
+			case RTMGCPackage.GENERATION__OS_MODELS:
+				getOsModels().clear();
+				getOsModels().addAll((Collection<? extends String>)newValue);
+				return;
+			case RTMGCPackage.GENERATION__SW_MODEL:
+				setSwModel((String)newValue);
+				return;
+			case RTMGCPackage.GENERATION__OUTPUT_FOLDER:
+				setOutputFolder((String)newValue);
+				return;
+			case RTMGCPackage.GENERATION__ACTIVATIONS:
+				setActivations((ActivationProperties)newValue);
+				return;
+			case RTMGCPackage.GENERATION__LABELS:
+				setLabels((LabelProperties)newValue);
+				return;
+			case RTMGCPackage.GENERATION__RUNNABLES:
+				setRunnables((RunnableProperties)newValue);
+				return;
+			case RTMGCPackage.GENERATION__SEMAPHORES:
+				setSemaphores((SemaphoreProperties)newValue);
+				return;
+			case RTMGCPackage.GENERATION__TASKS:
+				setTasks((TaskProperties)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.GENERATION__COUNT:
+				setCount(COUNT_EDEFAULT);
+				return;
+			case RTMGCPackage.GENERATION__BASE_MODEL:
+				setBaseModel(BASE_MODEL_EDEFAULT);
+				return;
+			case RTMGCPackage.GENERATION__HW_MODELS:
+				getHwModels().clear();
+				return;
+			case RTMGCPackage.GENERATION__OS_MODELS:
+				getOsModels().clear();
+				return;
+			case RTMGCPackage.GENERATION__SW_MODEL:
+				setSwModel(SW_MODEL_EDEFAULT);
+				return;
+			case RTMGCPackage.GENERATION__OUTPUT_FOLDER:
+				setOutputFolder(OUTPUT_FOLDER_EDEFAULT);
+				return;
+			case RTMGCPackage.GENERATION__ACTIVATIONS:
+				setActivations((ActivationProperties)null);
+				return;
+			case RTMGCPackage.GENERATION__LABELS:
+				setLabels((LabelProperties)null);
+				return;
+			case RTMGCPackage.GENERATION__RUNNABLES:
+				setRunnables((RunnableProperties)null);
+				return;
+			case RTMGCPackage.GENERATION__SEMAPHORES:
+				setSemaphores((SemaphoreProperties)null);
+				return;
+			case RTMGCPackage.GENERATION__TASKS:
+				setTasks((TaskProperties)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.GENERATION__COUNT:
+				return COUNT_EDEFAULT == null ? count != null : !COUNT_EDEFAULT.equals(count);
+			case RTMGCPackage.GENERATION__BASE_MODEL:
+				return BASE_MODEL_EDEFAULT == null ? baseModel != null : !BASE_MODEL_EDEFAULT.equals(baseModel);
+			case RTMGCPackage.GENERATION__HW_MODELS:
+				return hwModels != null && !hwModels.isEmpty();
+			case RTMGCPackage.GENERATION__OS_MODELS:
+				return osModels != null && !osModels.isEmpty();
+			case RTMGCPackage.GENERATION__SW_MODEL:
+				return SW_MODEL_EDEFAULT == null ? swModel != null : !SW_MODEL_EDEFAULT.equals(swModel);
+			case RTMGCPackage.GENERATION__OUTPUT_FOLDER:
+				return OUTPUT_FOLDER_EDEFAULT == null ? outputFolder != null : !OUTPUT_FOLDER_EDEFAULT.equals(outputFolder);
+			case RTMGCPackage.GENERATION__ACTIVATIONS:
+				return activations != null;
+			case RTMGCPackage.GENERATION__LABELS:
+				return labels != null;
+			case RTMGCPackage.GENERATION__RUNNABLES:
+				return runnables != null;
+			case RTMGCPackage.GENERATION__SEMAPHORES:
+				return semaphores != null;
+			case RTMGCPackage.GENERATION__TASKS:
+				return tasks != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (count: ");
+		result.append(count);
+		result.append(", baseModel: ");
+		result.append(baseModel);
+		result.append(", hwModels: ");
+		result.append(hwModels);
+		result.append(", osModels: ");
+		result.append(osModels);
+		result.append(", swModel: ");
+		result.append(swModel);
+		result.append(", outputFolder: ");
+		result.append(outputFolder);
+		result.append(')');
+		return result.toString();
+	}
+
+} //GenerationImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/IntegerDistributionImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/IntegerDistributionImpl.java
new file mode 100644
index 0000000..c631904
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/IntegerDistributionImpl.java
@@ -0,0 +1,280 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerDistributionImpl#getMin <em>Min</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerDistributionImpl#getAvg <em>Avg</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerDistributionImpl#getMax <em>Max</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IntegerDistributionImpl extends DistributionImpl implements IntegerDistribution {
+	/**
+	 * The default value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final long MIN_EDEFAULT = 0L;
+
+	/**
+	 * The cached value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected long min = MIN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAvg() <em>Avg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAvg()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final long AVG_EDEFAULT = 0L;
+
+	/**
+	 * The cached value of the '{@link #getAvg() <em>Avg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAvg()
+	 * @generated
+	 * @ordered
+	 */
+	protected long avg = AVG_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final long MAX_EDEFAULT = 0L;
+
+	/**
+	 * The cached value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected long max = MAX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntegerDistributionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.INTEGER_DISTRIBUTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public long getMin() {
+		return min;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMin(long newMin) {
+		long oldMin = min;
+		min = newMin;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.INTEGER_DISTRIBUTION__MIN, oldMin, min));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public long getAvg() {
+		return avg;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAvg(long newAvg) {
+		long oldAvg = avg;
+		avg = newAvg;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.INTEGER_DISTRIBUTION__AVG, oldAvg, avg));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public long getMax() {
+		return max;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMax(long newMax) {
+		long oldMax = max;
+		max = newMax;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.INTEGER_DISTRIBUTION__MAX, oldMax, max));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MIN:
+				return getMin();
+			case RTMGCPackage.INTEGER_DISTRIBUTION__AVG:
+				return getAvg();
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MAX:
+				return getMax();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MIN:
+				setMin((Long)newValue);
+				return;
+			case RTMGCPackage.INTEGER_DISTRIBUTION__AVG:
+				setAvg((Long)newValue);
+				return;
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MAX:
+				setMax((Long)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MIN:
+				setMin(MIN_EDEFAULT);
+				return;
+			case RTMGCPackage.INTEGER_DISTRIBUTION__AVG:
+				setAvg(AVG_EDEFAULT);
+				return;
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MAX:
+				setMax(MAX_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MIN:
+				return min != MIN_EDEFAULT;
+			case RTMGCPackage.INTEGER_DISTRIBUTION__AVG:
+				return avg != AVG_EDEFAULT;
+			case RTMGCPackage.INTEGER_DISTRIBUTION__MAX:
+				return max != MAX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (min: ");
+		result.append(min);
+		result.append(", avg: ");
+		result.append(avg);
+		result.append(", max: ");
+		result.append(max);
+		result.append(')');
+		return result.toString();
+	}
+
+} //IntegerDistributionImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/IntegerTimeDistributionImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/IntegerTimeDistributionImpl.java
new file mode 100644
index 0000000..d15df95
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/IntegerTimeDistributionImpl.java
@@ -0,0 +1,173 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Time Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.IntegerTimeDistributionImpl#getUnit <em>Unit</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IntegerTimeDistributionImpl extends IntegerDistributionImpl implements IntegerTimeDistribution {
+	/**
+	 * The default value of the '{@link #getUnit() <em>Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnit()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final TimeUnit UNIT_EDEFAULT = TimeUnit.MS;
+
+	/**
+	 * The cached value of the '{@link #getUnit() <em>Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnit()
+	 * @generated
+	 * @ordered
+	 */
+	protected TimeUnit unit = UNIT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntegerTimeDistributionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.INTEGER_TIME_DISTRIBUTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TimeUnit getUnit() {
+		return unit;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUnit(TimeUnit newUnit) {
+		TimeUnit oldUnit = unit;
+		unit = newUnit == null ? UNIT_EDEFAULT : newUnit;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.INTEGER_TIME_DISTRIBUTION__UNIT, oldUnit, unit));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_TIME_DISTRIBUTION__UNIT:
+				return getUnit();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_TIME_DISTRIBUTION__UNIT:
+				setUnit((TimeUnit)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_TIME_DISTRIBUTION__UNIT:
+				setUnit(UNIT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.INTEGER_TIME_DISTRIBUTION__UNIT:
+				return unit != UNIT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (unit: ");
+		result.append(unit);
+		result.append(')');
+		return result.toString();
+	}
+
+} //IntegerTimeDistributionImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/LabelPropertiesImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/LabelPropertiesImpl.java
new file mode 100644
index 0000000..f1ab48e
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/LabelPropertiesImpl.java
@@ -0,0 +1,318 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Label Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.LabelPropertiesImpl#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.LabelPropertiesImpl#getBitSize <em>Bit Size</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.LabelPropertiesImpl#getPerSWC <em>Per SWC</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LabelPropertiesImpl extends MinimalEObjectImpl.Container implements LabelProperties {
+	/**
+	 * The cached value of the '{@link #getCount() <em>Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution count;
+
+	/**
+	 * The cached value of the '{@link #getBitSize() <em>Bit Size</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBitSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution bitSize;
+
+	/**
+	 * The cached value of the '{@link #getPerSWC() <em>Per SWC</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPerSWC()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution perSWC;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LabelPropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.LABEL_PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getCount() {
+		return count;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCount(IntegerDistribution newCount, NotificationChain msgs) {
+		IntegerDistribution oldCount = count;
+		count = newCount;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.LABEL_PROPERTIES__COUNT, oldCount, newCount);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCount(IntegerDistribution newCount) {
+		if (newCount != count) {
+			NotificationChain msgs = null;
+			if (count != null)
+				msgs = ((InternalEObject)count).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.LABEL_PROPERTIES__COUNT, null, msgs);
+			if (newCount != null)
+				msgs = ((InternalEObject)newCount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.LABEL_PROPERTIES__COUNT, null, msgs);
+			msgs = basicSetCount(newCount, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.LABEL_PROPERTIES__COUNT, newCount, newCount));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getBitSize() {
+		return bitSize;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetBitSize(IntegerDistribution newBitSize, NotificationChain msgs) {
+		IntegerDistribution oldBitSize = bitSize;
+		bitSize = newBitSize;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE, oldBitSize, newBitSize);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBitSize(IntegerDistribution newBitSize) {
+		if (newBitSize != bitSize) {
+			NotificationChain msgs = null;
+			if (bitSize != null)
+				msgs = ((InternalEObject)bitSize).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE, null, msgs);
+			if (newBitSize != null)
+				msgs = ((InternalEObject)newBitSize).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE, null, msgs);
+			msgs = basicSetBitSize(newBitSize, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE, newBitSize, newBitSize));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getPerSWC() {
+		return perSWC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPerSWC(IntegerDistribution newPerSWC, NotificationChain msgs) {
+		IntegerDistribution oldPerSWC = perSWC;
+		perSWC = newPerSWC;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.LABEL_PROPERTIES__PER_SWC, oldPerSWC, newPerSWC);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPerSWC(IntegerDistribution newPerSWC) {
+		if (newPerSWC != perSWC) {
+			NotificationChain msgs = null;
+			if (perSWC != null)
+				msgs = ((InternalEObject)perSWC).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.LABEL_PROPERTIES__PER_SWC, null, msgs);
+			if (newPerSWC != null)
+				msgs = ((InternalEObject)newPerSWC).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.LABEL_PROPERTIES__PER_SWC, null, msgs);
+			msgs = basicSetPerSWC(newPerSWC, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.LABEL_PROPERTIES__PER_SWC, newPerSWC, newPerSWC));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.LABEL_PROPERTIES__COUNT:
+				return basicSetCount(null, msgs);
+			case RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE:
+				return basicSetBitSize(null, msgs);
+			case RTMGCPackage.LABEL_PROPERTIES__PER_SWC:
+				return basicSetPerSWC(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.LABEL_PROPERTIES__COUNT:
+				return getCount();
+			case RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE:
+				return getBitSize();
+			case RTMGCPackage.LABEL_PROPERTIES__PER_SWC:
+				return getPerSWC();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.LABEL_PROPERTIES__COUNT:
+				setCount((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE:
+				setBitSize((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.LABEL_PROPERTIES__PER_SWC:
+				setPerSWC((IntegerDistribution)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.LABEL_PROPERTIES__COUNT:
+				setCount((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE:
+				setBitSize((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.LABEL_PROPERTIES__PER_SWC:
+				setPerSWC((IntegerDistribution)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.LABEL_PROPERTIES__COUNT:
+				return count != null;
+			case RTMGCPackage.LABEL_PROPERTIES__BIT_SIZE:
+				return bitSize != null;
+			case RTMGCPackage.LABEL_PROPERTIES__PER_SWC:
+				return perSWC != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LabelPropertiesImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PercentageDistributionImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PercentageDistributionImpl.java
new file mode 100644
index 0000000..3b2e384
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PercentageDistributionImpl.java
@@ -0,0 +1,280 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Percentage Distribution</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PercentageDistributionImpl#getMinPercentage <em>Min Percentage</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PercentageDistributionImpl#getAvgPercentage <em>Avg Percentage</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PercentageDistributionImpl#getMaxPercentage <em>Max Percentage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PercentageDistributionImpl extends DistributionImpl implements PercentageDistribution {
+	/**
+	 * The default value of the '{@link #getMinPercentage() <em>Min Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MIN_PERCENTAGE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMinPercentage() <em>Min Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected double minPercentage = MIN_PERCENTAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAvgPercentage() <em>Avg Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAvgPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double AVG_PERCENTAGE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getAvgPercentage() <em>Avg Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAvgPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected double avgPercentage = AVG_PERCENTAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxPercentage() <em>Max Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MAX_PERCENTAGE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMaxPercentage() <em>Max Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected double maxPercentage = MAX_PERCENTAGE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PercentageDistributionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.PERCENTAGE_DISTRIBUTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getMinPercentage() {
+		return minPercentage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinPercentage(double newMinPercentage) {
+		double oldMinPercentage = minPercentage;
+		minPercentage = newMinPercentage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE, oldMinPercentage, minPercentage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getAvgPercentage() {
+		return avgPercentage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAvgPercentage(double newAvgPercentage) {
+		double oldAvgPercentage = avgPercentage;
+		avgPercentage = newAvgPercentage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE, oldAvgPercentage, avgPercentage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getMaxPercentage() {
+		return maxPercentage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMaxPercentage(double newMaxPercentage) {
+		double oldMaxPercentage = maxPercentage;
+		maxPercentage = newMaxPercentage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE, oldMaxPercentage, maxPercentage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE:
+				return getMinPercentage();
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE:
+				return getAvgPercentage();
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE:
+				return getMaxPercentage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE:
+				setMinPercentage((Double)newValue);
+				return;
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE:
+				setAvgPercentage((Double)newValue);
+				return;
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE:
+				setMaxPercentage((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE:
+				setMinPercentage(MIN_PERCENTAGE_EDEFAULT);
+				return;
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE:
+				setAvgPercentage(AVG_PERCENTAGE_EDEFAULT);
+				return;
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE:
+				setMaxPercentage(MAX_PERCENTAGE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE:
+				return minPercentage != MIN_PERCENTAGE_EDEFAULT;
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE:
+				return avgPercentage != AVG_PERCENTAGE_EDEFAULT;
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE:
+				return maxPercentage != MAX_PERCENTAGE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (minPercentage: ");
+		result.append(minPercentage);
+		result.append(", avgPercentage: ");
+		result.append(avgPercentage);
+		result.append(", maxPercentage: ");
+		result.append(maxPercentage);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PercentageDistributionImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PeriodicActivationImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PeriodicActivationImpl.java
new file mode 100644
index 0000000..1a71445
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PeriodicActivationImpl.java
@@ -0,0 +1,252 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.Recurrence;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Periodic Activation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicActivationImpl#getRecurrence <em>Recurrence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicActivationImpl#getOffset <em>Offset</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PeriodicActivationImpl extends ActivationImpl implements PeriodicActivation {
+	/**
+	 * The cached value of the '{@link #getRecurrence() <em>Recurrence</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrence()
+	 * @generated
+	 * @ordered
+	 */
+	protected Recurrence recurrence;
+
+	/**
+	 * The cached value of the '{@link #getOffset() <em>Offset</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOffset()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerTimeDistribution offset;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PeriodicActivationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.PERIODIC_ACTIVATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Recurrence getRecurrence() {
+		return recurrence;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRecurrence(Recurrence newRecurrence, NotificationChain msgs) {
+		Recurrence oldRecurrence = recurrence;
+		recurrence = newRecurrence;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE, oldRecurrence, newRecurrence);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRecurrence(Recurrence newRecurrence) {
+		if (newRecurrence != recurrence) {
+			NotificationChain msgs = null;
+			if (recurrence != null)
+				msgs = ((InternalEObject)recurrence).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE, null, msgs);
+			if (newRecurrence != null)
+				msgs = ((InternalEObject)newRecurrence).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE, null, msgs);
+			msgs = basicSetRecurrence(newRecurrence, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE, newRecurrence, newRecurrence));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerTimeDistribution getOffset() {
+		return offset;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOffset(IntegerTimeDistribution newOffset, NotificationChain msgs) {
+		IntegerTimeDistribution oldOffset = offset;
+		offset = newOffset;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERIODIC_ACTIVATION__OFFSET, oldOffset, newOffset);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOffset(IntegerTimeDistribution newOffset) {
+		if (newOffset != offset) {
+			NotificationChain msgs = null;
+			if (offset != null)
+				msgs = ((InternalEObject)offset).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.PERIODIC_ACTIVATION__OFFSET, null, msgs);
+			if (newOffset != null)
+				msgs = ((InternalEObject)newOffset).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.PERIODIC_ACTIVATION__OFFSET, null, msgs);
+			msgs = basicSetOffset(newOffset, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERIODIC_ACTIVATION__OFFSET, newOffset, newOffset));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE:
+				return basicSetRecurrence(null, msgs);
+			case RTMGCPackage.PERIODIC_ACTIVATION__OFFSET:
+				return basicSetOffset(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE:
+				return getRecurrence();
+			case RTMGCPackage.PERIODIC_ACTIVATION__OFFSET:
+				return getOffset();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE:
+				setRecurrence((Recurrence)newValue);
+				return;
+			case RTMGCPackage.PERIODIC_ACTIVATION__OFFSET:
+				setOffset((IntegerTimeDistribution)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE:
+				setRecurrence((Recurrence)null);
+				return;
+			case RTMGCPackage.PERIODIC_ACTIVATION__OFFSET:
+				setOffset((IntegerTimeDistribution)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_ACTIVATION__RECURRENCE:
+				return recurrence != null;
+			case RTMGCPackage.PERIODIC_ACTIVATION__OFFSET:
+				return offset != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PeriodicActivationImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PeriodicTriangleShiftImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PeriodicTriangleShiftImpl.java
new file mode 100644
index 0000000..8adab1b
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/PeriodicTriangleShiftImpl.java
@@ -0,0 +1,185 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Periodic Triangle Shift</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.PeriodicTriangleShiftImpl#getClock <em>Clock</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PeriodicTriangleShiftImpl extends PeriodicActivationImpl implements PeriodicTriangleShift {
+	/**
+	 * The cached value of the '{@link #getClock() <em>Clock</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClock()
+	 * @generated
+	 * @ordered
+	 */
+	protected TriangleClock clock;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PeriodicTriangleShiftImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.PERIODIC_TRIANGLE_SHIFT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TriangleClock getClock() {
+		return clock;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetClock(TriangleClock newClock, NotificationChain msgs) {
+		TriangleClock oldClock = clock;
+		clock = newClock;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK, oldClock, newClock);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setClock(TriangleClock newClock) {
+		if (newClock != clock) {
+			NotificationChain msgs = null;
+			if (clock != null)
+				msgs = ((InternalEObject)clock).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK, null, msgs);
+			if (newClock != null)
+				msgs = ((InternalEObject)newClock).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK, null, msgs);
+			msgs = basicSetClock(newClock, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK, newClock, newClock));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK:
+				return basicSetClock(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK:
+				return getClock();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK:
+				setClock((TriangleClock)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK:
+				setClock((TriangleClock)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.PERIODIC_TRIANGLE_SHIFT__CLOCK:
+				return clock != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PeriodicTriangleShiftImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCFactoryImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCFactoryImpl.java
new file mode 100644
index 0000000..42b40cb
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCFactoryImpl.java
@@ -0,0 +1,559 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RTMGCFactoryImpl extends EFactoryImpl implements RTMGCFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RTMGCFactory init() {
+		try {
+			RTMGCFactory theRTMGCFactory = (RTMGCFactory)EPackage.Registry.INSTANCE.getEFactory(RTMGCPackage.eNS_URI);
+			if (theRTMGCFactory != null) {
+				return theRTMGCFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new RTMGCFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RTMGCFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case RTMGCPackage.RTMGC: return createRTMGC();
+			case RTMGCPackage.GENERATION: return createGeneration();
+			case RTMGCPackage.ACTIVATION_PROPERTIES: return createActivationProperties();
+			case RTMGCPackage.PERIODIC_ACTIVATION: return createPeriodicActivation();
+			case RTMGCPackage.PERIODIC_TRIANGLE_SHIFT: return createPeriodicTriangleShift();
+			case RTMGCPackage.TRIANGLE_CLOCK: return createTriangleClock();
+			case RTMGCPackage.SPORADIC_ACTIVATION: return createSporadicActivation();
+			case RTMGCPackage.RECURRENCE: return createRecurrence();
+			case RTMGCPackage.LABEL_PROPERTIES: return createLabelProperties();
+			case RTMGCPackage.RUNNABLE_PROPERTIES: return createRunnableProperties();
+			case RTMGCPackage.SEMAPHORE_PROPERTIES: return createSemaphoreProperties();
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES: return createSemaphoreAccessProperties();
+			case RTMGCPackage.TASK_PROPERTIES: return createTaskProperties();
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES: return createCallGraphProperties();
+			case RTMGCPackage.INTEGER_DISTRIBUTION: return createIntegerDistribution();
+			case RTMGCPackage.INTEGER_TIME_DISTRIBUTION: return createIntegerTimeDistribution();
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION: return createPercentageDistribution();
+			case RTMGCPackage.DOUBLE_DISTRIBUTION: return createDoubleDistribution();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case RTMGCPackage.RECURRENCE_TYPE:
+				return createRecurrenceTypeFromString(eDataType, initialValue);
+			case RTMGCPackage.RUNTIME_TYPE:
+				return createRuntimeTypeFromString(eDataType, initialValue);
+			case RTMGCPackage.SEMAPHORE_REQUEST_ORDER:
+				return createSemaphoreRequestOrderFromString(eDataType, initialValue);
+			case RTMGCPackage.SEMAPHORE_ACCESS_TYPE:
+				return createSemaphoreAccessTypeFromString(eDataType, initialValue);
+			case RTMGCPackage.SEMAPHORE_TYPE:
+				return createSemaphoreTypeFromString(eDataType, initialValue);
+			case RTMGCPackage.WAIT_MODES:
+				return createWaitModesFromString(eDataType, initialValue);
+			case RTMGCPackage.DISTRIBUTION_TYPE:
+				return createDistributionTypeFromString(eDataType, initialValue);
+			case RTMGCPackage.PROCESS_MAPPING_ALGORITHMS:
+				return createProcessMappingAlgorithmsFromString(eDataType, initialValue);
+			case RTMGCPackage.PRIORITY_DETERMINATION_ALGORITHM:
+				return createPriorityDeterminationAlgorithmFromString(eDataType, initialValue);
+			case RTMGCPackage.TIME_UNIT:
+				return createTimeUnitFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case RTMGCPackage.RECURRENCE_TYPE:
+				return convertRecurrenceTypeToString(eDataType, instanceValue);
+			case RTMGCPackage.RUNTIME_TYPE:
+				return convertRuntimeTypeToString(eDataType, instanceValue);
+			case RTMGCPackage.SEMAPHORE_REQUEST_ORDER:
+				return convertSemaphoreRequestOrderToString(eDataType, instanceValue);
+			case RTMGCPackage.SEMAPHORE_ACCESS_TYPE:
+				return convertSemaphoreAccessTypeToString(eDataType, instanceValue);
+			case RTMGCPackage.SEMAPHORE_TYPE:
+				return convertSemaphoreTypeToString(eDataType, instanceValue);
+			case RTMGCPackage.WAIT_MODES:
+				return convertWaitModesToString(eDataType, instanceValue);
+			case RTMGCPackage.DISTRIBUTION_TYPE:
+				return convertDistributionTypeToString(eDataType, instanceValue);
+			case RTMGCPackage.PROCESS_MAPPING_ALGORITHMS:
+				return convertProcessMappingAlgorithmsToString(eDataType, instanceValue);
+			case RTMGCPackage.PRIORITY_DETERMINATION_ALGORITHM:
+				return convertPriorityDeterminationAlgorithmToString(eDataType, instanceValue);
+			case RTMGCPackage.TIME_UNIT:
+				return convertTimeUnitToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RTMGC createRTMGC() {
+		RTMGCImpl rtmgc = new RTMGCImpl();
+		return rtmgc;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Generation createGeneration() {
+		GenerationImpl generation = new GenerationImpl();
+		return generation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ActivationProperties createActivationProperties() {
+		ActivationPropertiesImpl activationProperties = new ActivationPropertiesImpl();
+		return activationProperties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PeriodicActivation createPeriodicActivation() {
+		PeriodicActivationImpl periodicActivation = new PeriodicActivationImpl();
+		return periodicActivation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PeriodicTriangleShift createPeriodicTriangleShift() {
+		PeriodicTriangleShiftImpl periodicTriangleShift = new PeriodicTriangleShiftImpl();
+		return periodicTriangleShift;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TriangleClock createTriangleClock() {
+		TriangleClockImpl triangleClock = new TriangleClockImpl();
+		return triangleClock;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SporadicActivation createSporadicActivation() {
+		SporadicActivationImpl sporadicActivation = new SporadicActivationImpl();
+		return sporadicActivation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Recurrence createRecurrence() {
+		RecurrenceImpl recurrence = new RecurrenceImpl();
+		return recurrence;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LabelProperties createLabelProperties() {
+		LabelPropertiesImpl labelProperties = new LabelPropertiesImpl();
+		return labelProperties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RunnableProperties createRunnableProperties() {
+		RunnablePropertiesImpl runnableProperties = new RunnablePropertiesImpl();
+		return runnableProperties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreProperties createSemaphoreProperties() {
+		SemaphorePropertiesImpl semaphoreProperties = new SemaphorePropertiesImpl();
+		return semaphoreProperties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreAccessProperties createSemaphoreAccessProperties() {
+		SemaphoreAccessPropertiesImpl semaphoreAccessProperties = new SemaphoreAccessPropertiesImpl();
+		return semaphoreAccessProperties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskProperties createTaskProperties() {
+		TaskPropertiesImpl taskProperties = new TaskPropertiesImpl();
+		return taskProperties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CallGraphProperties createCallGraphProperties() {
+		CallGraphPropertiesImpl callGraphProperties = new CallGraphPropertiesImpl();
+		return callGraphProperties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution createIntegerDistribution() {
+		IntegerDistributionImpl integerDistribution = new IntegerDistributionImpl();
+		return integerDistribution;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerTimeDistribution createIntegerTimeDistribution() {
+		IntegerTimeDistributionImpl integerTimeDistribution = new IntegerTimeDistributionImpl();
+		return integerTimeDistribution;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution createPercentageDistribution() {
+		PercentageDistributionImpl percentageDistribution = new PercentageDistributionImpl();
+		return percentageDistribution;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleDistribution createDoubleDistribution() {
+		DoubleDistributionImpl doubleDistribution = new DoubleDistributionImpl();
+		return doubleDistribution;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RecurrenceType createRecurrenceTypeFromString(EDataType eDataType, String initialValue) {
+		RecurrenceType result = RecurrenceType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertRecurrenceTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RuntimeType createRuntimeTypeFromString(EDataType eDataType, String initialValue) {
+		RuntimeType result = RuntimeType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertRuntimeTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreRequestOrder createSemaphoreRequestOrderFromString(EDataType eDataType, String initialValue) {
+		SemaphoreRequestOrder result = SemaphoreRequestOrder.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertSemaphoreRequestOrderToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreAccessType createSemaphoreAccessTypeFromString(EDataType eDataType, String initialValue) {
+		SemaphoreAccessType result = SemaphoreAccessType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertSemaphoreAccessTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreType createSemaphoreTypeFromString(EDataType eDataType, String initialValue) {
+		SemaphoreType result = SemaphoreType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertSemaphoreTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WaitModes createWaitModesFromString(EDataType eDataType, String initialValue) {
+		WaitModes result = WaitModes.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertWaitModesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DistributionType createDistributionTypeFromString(EDataType eDataType, String initialValue) {
+		DistributionType result = DistributionType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDistributionTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProcessMappingAlgorithms createProcessMappingAlgorithmsFromString(EDataType eDataType, String initialValue) {
+		ProcessMappingAlgorithms result = ProcessMappingAlgorithms.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertProcessMappingAlgorithmsToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PriorityDeterminationAlgorithm createPriorityDeterminationAlgorithmFromString(EDataType eDataType, String initialValue) {
+		PriorityDeterminationAlgorithm result = PriorityDeterminationAlgorithm.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertPriorityDeterminationAlgorithmToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TimeUnit createTimeUnitFromString(EDataType eDataType, String initialValue) {
+		TimeUnit result = TimeUnit.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertTimeUnitToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RTMGCPackage getRTMGCPackage() {
+		return (RTMGCPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static RTMGCPackage getPackage() {
+		return RTMGCPackage.eINSTANCE;
+	}
+
+} //RTMGCFactoryImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCImpl.java
new file mode 100644
index 0000000..67a70b9
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCImpl.java
@@ -0,0 +1,186 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>RTMGC</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RTMGCImpl#getGeneration <em>Generation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RTMGCImpl extends MinimalEObjectImpl.Container implements RTMGC {
+	/**
+	 * The cached value of the '{@link #getGeneration() <em>Generation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGeneration()
+	 * @generated
+	 * @ordered
+	 */
+	protected Generation generation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RTMGCImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.RTMGC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Generation getGeneration() {
+		return generation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetGeneration(Generation newGeneration, NotificationChain msgs) {
+		Generation oldGeneration = generation;
+		generation = newGeneration;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.RTMGC__GENERATION, oldGeneration, newGeneration);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGeneration(Generation newGeneration) {
+		if (newGeneration != generation) {
+			NotificationChain msgs = null;
+			if (generation != null)
+				msgs = ((InternalEObject)generation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RTMGC__GENERATION, null, msgs);
+			if (newGeneration != null)
+				msgs = ((InternalEObject)newGeneration).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RTMGC__GENERATION, null, msgs);
+			msgs = basicSetGeneration(newGeneration, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RTMGC__GENERATION, newGeneration, newGeneration));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.RTMGC__GENERATION:
+				return basicSetGeneration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.RTMGC__GENERATION:
+				return getGeneration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.RTMGC__GENERATION:
+				setGeneration((Generation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.RTMGC__GENERATION:
+				setGeneration((Generation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.RTMGC__GENERATION:
+				return generation != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //RTMGCImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCPackageImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCPackageImpl.java
new file mode 100644
index 0000000..262621f
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RTMGCPackageImpl.java
@@ -0,0 +1,1568 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Activation;
+import org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.Distribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation;
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift;
+import org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm;
+import org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.Recurrence;
+import org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType;
+import org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType;
+import org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation;
+import org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit;
+import org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock;
+import org.eclipse.app4mc.amalthea.generator.configuration.WaitModes;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RTMGCPackageImpl extends EPackageImpl implements RTMGCPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass rtmgcEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass generationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass activationPropertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass activationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass periodicActivationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass periodicTriangleShiftEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass triangleClockEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass sporadicActivationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass recurrenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass labelPropertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass runnablePropertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass semaphorePropertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass semaphoreAccessPropertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass taskPropertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass callGraphPropertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass distributionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass integerDistributionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass integerTimeDistributionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass percentageDistributionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass doubleDistributionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum recurrenceTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum runtimeTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum semaphoreRequestOrderEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum semaphoreAccessTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum semaphoreTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum waitModesEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum distributionTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum processMappingAlgorithmsEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum priorityDeterminationAlgorithmEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum timeUnitEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private RTMGCPackageImpl() {
+		super(eNS_URI, RTMGCFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link RTMGCPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static RTMGCPackage init() {
+		if (isInited) return (RTMGCPackage)EPackage.Registry.INSTANCE.getEPackage(RTMGCPackage.eNS_URI);
+
+		// Obtain or create and register package
+		RTMGCPackageImpl theRTMGCPackage = (RTMGCPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof RTMGCPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new RTMGCPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		XMLTypePackage.eINSTANCE.eClass();
+		EcorePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theRTMGCPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theRTMGCPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theRTMGCPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(RTMGCPackage.eNS_URI, theRTMGCPackage);
+		return theRTMGCPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRTMGC() {
+		return rtmgcEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRTMGC_Generation() {
+		return (EReference)rtmgcEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getGeneration() {
+		return generationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getGeneration_Count() {
+		return (EAttribute)generationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getGeneration_BaseModel() {
+		return (EAttribute)generationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getGeneration_HwModels() {
+		return (EAttribute)generationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getGeneration_OsModels() {
+		return (EAttribute)generationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getGeneration_SwModel() {
+		return (EAttribute)generationEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getGeneration_OutputFolder() {
+		return (EAttribute)generationEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGeneration_Activations() {
+		return (EReference)generationEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGeneration_Labels() {
+		return (EReference)generationEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGeneration_Runnables() {
+		return (EReference)generationEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGeneration_Semaphores() {
+		return (EReference)generationEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGeneration_Tasks() {
+		return (EReference)generationEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getActivationProperties() {
+		return activationPropertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActivationProperties_PeriodicActivation() {
+		return (EReference)activationPropertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActivationProperties_PeriodicTriangleShift() {
+		return (EReference)activationPropertiesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActivationProperties_SporadicActivation() {
+		return (EReference)activationPropertiesEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getActivation() {
+		return activationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActivation_AppearanceProbability() {
+		return (EAttribute)activationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPeriodicActivation() {
+		return periodicActivationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPeriodicActivation_Recurrence() {
+		return (EReference)periodicActivationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPeriodicActivation_Offset() {
+		return (EReference)periodicActivationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPeriodicTriangleShift() {
+		return periodicTriangleShiftEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPeriodicTriangleShift_Clock() {
+		return (EReference)periodicTriangleShiftEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTriangleClock() {
+		return triangleClockEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTriangleClock_Min_start() {
+		return (EReference)triangleClockEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTriangleClock_Max_end() {
+		return (EReference)triangleClockEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTriangleClock_Shift() {
+		return (EReference)triangleClockEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTriangleClock_Period() {
+		return (EReference)triangleClockEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSporadicActivation() {
+		return sporadicActivationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSporadicActivation_MinValue() {
+		return (EReference)sporadicActivationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSporadicActivation_MaxValueDistance() {
+		return (EReference)sporadicActivationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSporadicActivation_AvgValueDistance() {
+		return (EReference)sporadicActivationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRecurrence() {
+		return recurrenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getRecurrence_RecurrenceType() {
+		return (EAttribute)recurrenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLabelProperties() {
+		return labelPropertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLabelProperties_Count() {
+		return (EReference)labelPropertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLabelProperties_BitSize() {
+		return (EReference)labelPropertiesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLabelProperties_PerSWC() {
+		return (EReference)labelPropertiesEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRunnableProperties() {
+		return runnablePropertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getRunnableProperties_RuntimeType() {
+		return (EAttribute)runnablePropertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRunnableProperties_InstructionsPerRunnables() {
+		return (EReference)runnablePropertiesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRunnableProperties_RunnablesPerCallSequence() {
+		return (EReference)runnablePropertiesEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRunnableProperties_RunnablesPerSWC() {
+		return (EReference)runnablePropertiesEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRunnableProperties_MinStatisticsDistance() {
+		return (EReference)runnablePropertiesEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRunnableProperties_MaxStatisticsDistance() {
+		return (EReference)runnablePropertiesEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSemaphoreProperties() {
+		return semaphorePropertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSemaphoreProperties_Count() {
+		return (EReference)semaphorePropertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSemaphoreProperties_PriorityCeilingProtocol() {
+		return (EAttribute)semaphorePropertiesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSemaphoreProperties_SemaphoreType() {
+		return (EAttribute)semaphorePropertiesEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSemaphoreProperties_WaitMode() {
+		return (EAttribute)semaphorePropertiesEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSemaphoreProperties_SemaphoreAccess() {
+		return (EReference)semaphorePropertiesEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSemaphoreAccessProperties() {
+		return semaphoreAccessPropertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSemaphoreAccessProperties_PerUnitReadAccessCount() {
+		return (EReference)semaphoreAccessPropertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSemaphoreAccessProperties_PerUnitWriteAccessCount() {
+		return (EReference)semaphoreAccessPropertiesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSemaphoreAccessProperties_RequestOrder() {
+		return (EAttribute)semaphoreAccessPropertiesEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSemaphoreAccessProperties_AccessType() {
+		return (EAttribute)semaphoreAccessPropertiesEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTaskProperties() {
+		return taskPropertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTaskProperties_Count() {
+		return (EReference)taskPropertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTaskProperties_Load() {
+		return (EReference)taskPropertiesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTaskProperties_PerTaskGroup() {
+		return (EReference)taskPropertiesEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTaskProperties_Mta() {
+		return (EReference)taskPropertiesEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTaskProperties_DeadlineFactor() {
+		return (EReference)taskPropertiesEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTaskProperties_CallSequencesBetweenSchedulePoints() {
+		return (EReference)taskPropertiesEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTaskProperties_CallGraphs() {
+		return (EReference)taskPropertiesEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTaskProperties_MappingDetermination() {
+		return (EAttribute)taskPropertiesEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTaskProperties_PriorityDetermination() {
+		return (EAttribute)taskPropertiesEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCallGraphProperties() {
+		return callGraphPropertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCallGraphProperties_SignalDomainCoverage() {
+		return (EReference)callGraphPropertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCallGraphProperties_CallSequenceUsage() {
+		return (EReference)callGraphPropertiesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDistribution() {
+		return distributionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDistribution_Type() {
+		return (EAttribute)distributionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getIntegerDistribution() {
+		return integerDistributionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIntegerDistribution_Min() {
+		return (EAttribute)integerDistributionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIntegerDistribution_Avg() {
+		return (EAttribute)integerDistributionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIntegerDistribution_Max() {
+		return (EAttribute)integerDistributionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getIntegerTimeDistribution() {
+		return integerTimeDistributionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIntegerTimeDistribution_Unit() {
+		return (EAttribute)integerTimeDistributionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPercentageDistribution() {
+		return percentageDistributionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPercentageDistribution_MinPercentage() {
+		return (EAttribute)percentageDistributionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPercentageDistribution_AvgPercentage() {
+		return (EAttribute)percentageDistributionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPercentageDistribution_MaxPercentage() {
+		return (EAttribute)percentageDistributionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDoubleDistribution() {
+		return doubleDistributionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDoubleDistribution_Min() {
+		return (EAttribute)doubleDistributionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDoubleDistribution_Avg() {
+		return (EAttribute)doubleDistributionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDoubleDistribution_Max() {
+		return (EAttribute)doubleDistributionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getRecurrenceType() {
+		return recurrenceTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getRuntimeType() {
+		return runtimeTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSemaphoreRequestOrder() {
+		return semaphoreRequestOrderEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSemaphoreAccessType() {
+		return semaphoreAccessTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSemaphoreType() {
+		return semaphoreTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getWaitModes() {
+		return waitModesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getDistributionType() {
+		return distributionTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getProcessMappingAlgorithms() {
+		return processMappingAlgorithmsEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getPriorityDeterminationAlgorithm() {
+		return priorityDeterminationAlgorithmEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getTimeUnit() {
+		return timeUnitEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RTMGCFactory getRTMGCFactory() {
+		return (RTMGCFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		rtmgcEClass = createEClass(RTMGC);
+		createEReference(rtmgcEClass, RTMGC__GENERATION);
+
+		generationEClass = createEClass(GENERATION);
+		createEAttribute(generationEClass, GENERATION__COUNT);
+		createEAttribute(generationEClass, GENERATION__BASE_MODEL);
+		createEAttribute(generationEClass, GENERATION__HW_MODELS);
+		createEAttribute(generationEClass, GENERATION__OS_MODELS);
+		createEAttribute(generationEClass, GENERATION__SW_MODEL);
+		createEAttribute(generationEClass, GENERATION__OUTPUT_FOLDER);
+		createEReference(generationEClass, GENERATION__ACTIVATIONS);
+		createEReference(generationEClass, GENERATION__LABELS);
+		createEReference(generationEClass, GENERATION__RUNNABLES);
+		createEReference(generationEClass, GENERATION__SEMAPHORES);
+		createEReference(generationEClass, GENERATION__TASKS);
+
+		activationPropertiesEClass = createEClass(ACTIVATION_PROPERTIES);
+		createEReference(activationPropertiesEClass, ACTIVATION_PROPERTIES__PERIODIC_ACTIVATION);
+		createEReference(activationPropertiesEClass, ACTIVATION_PROPERTIES__PERIODIC_TRIANGLE_SHIFT);
+		createEReference(activationPropertiesEClass, ACTIVATION_PROPERTIES__SPORADIC_ACTIVATION);
+
+		activationEClass = createEClass(ACTIVATION);
+		createEAttribute(activationEClass, ACTIVATION__APPEARANCE_PROBABILITY);
+
+		periodicActivationEClass = createEClass(PERIODIC_ACTIVATION);
+		createEReference(periodicActivationEClass, PERIODIC_ACTIVATION__RECURRENCE);
+		createEReference(periodicActivationEClass, PERIODIC_ACTIVATION__OFFSET);
+
+		periodicTriangleShiftEClass = createEClass(PERIODIC_TRIANGLE_SHIFT);
+		createEReference(periodicTriangleShiftEClass, PERIODIC_TRIANGLE_SHIFT__CLOCK);
+
+		triangleClockEClass = createEClass(TRIANGLE_CLOCK);
+		createEReference(triangleClockEClass, TRIANGLE_CLOCK__MIN_START);
+		createEReference(triangleClockEClass, TRIANGLE_CLOCK__MAX_END);
+		createEReference(triangleClockEClass, TRIANGLE_CLOCK__SHIFT);
+		createEReference(triangleClockEClass, TRIANGLE_CLOCK__PERIOD);
+
+		sporadicActivationEClass = createEClass(SPORADIC_ACTIVATION);
+		createEReference(sporadicActivationEClass, SPORADIC_ACTIVATION__MIN_VALUE);
+		createEReference(sporadicActivationEClass, SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE);
+		createEReference(sporadicActivationEClass, SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE);
+
+		recurrenceEClass = createEClass(RECURRENCE);
+		createEAttribute(recurrenceEClass, RECURRENCE__RECURRENCE_TYPE);
+
+		labelPropertiesEClass = createEClass(LABEL_PROPERTIES);
+		createEReference(labelPropertiesEClass, LABEL_PROPERTIES__COUNT);
+		createEReference(labelPropertiesEClass, LABEL_PROPERTIES__BIT_SIZE);
+		createEReference(labelPropertiesEClass, LABEL_PROPERTIES__PER_SWC);
+
+		runnablePropertiesEClass = createEClass(RUNNABLE_PROPERTIES);
+		createEAttribute(runnablePropertiesEClass, RUNNABLE_PROPERTIES__RUNTIME_TYPE);
+		createEReference(runnablePropertiesEClass, RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES);
+		createEReference(runnablePropertiesEClass, RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE);
+		createEReference(runnablePropertiesEClass, RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC);
+		createEReference(runnablePropertiesEClass, RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE);
+		createEReference(runnablePropertiesEClass, RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE);
+
+		semaphorePropertiesEClass = createEClass(SEMAPHORE_PROPERTIES);
+		createEReference(semaphorePropertiesEClass, SEMAPHORE_PROPERTIES__COUNT);
+		createEAttribute(semaphorePropertiesEClass, SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL);
+		createEAttribute(semaphorePropertiesEClass, SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE);
+		createEAttribute(semaphorePropertiesEClass, SEMAPHORE_PROPERTIES__WAIT_MODE);
+		createEReference(semaphorePropertiesEClass, SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS);
+
+		semaphoreAccessPropertiesEClass = createEClass(SEMAPHORE_ACCESS_PROPERTIES);
+		createEReference(semaphoreAccessPropertiesEClass, SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT);
+		createEReference(semaphoreAccessPropertiesEClass, SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT);
+		createEAttribute(semaphoreAccessPropertiesEClass, SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER);
+		createEAttribute(semaphoreAccessPropertiesEClass, SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE);
+
+		taskPropertiesEClass = createEClass(TASK_PROPERTIES);
+		createEReference(taskPropertiesEClass, TASK_PROPERTIES__COUNT);
+		createEReference(taskPropertiesEClass, TASK_PROPERTIES__LOAD);
+		createEReference(taskPropertiesEClass, TASK_PROPERTIES__PER_TASK_GROUP);
+		createEReference(taskPropertiesEClass, TASK_PROPERTIES__MTA);
+		createEReference(taskPropertiesEClass, TASK_PROPERTIES__DEADLINE_FACTOR);
+		createEReference(taskPropertiesEClass, TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS);
+		createEReference(taskPropertiesEClass, TASK_PROPERTIES__CALL_GRAPHS);
+		createEAttribute(taskPropertiesEClass, TASK_PROPERTIES__MAPPING_DETERMINATION);
+		createEAttribute(taskPropertiesEClass, TASK_PROPERTIES__PRIORITY_DETERMINATION);
+
+		callGraphPropertiesEClass = createEClass(CALL_GRAPH_PROPERTIES);
+		createEReference(callGraphPropertiesEClass, CALL_GRAPH_PROPERTIES__SIGNAL_DOMAIN_COVERAGE);
+		createEReference(callGraphPropertiesEClass, CALL_GRAPH_PROPERTIES__CALL_SEQUENCE_USAGE);
+
+		distributionEClass = createEClass(DISTRIBUTION);
+		createEAttribute(distributionEClass, DISTRIBUTION__TYPE);
+
+		integerDistributionEClass = createEClass(INTEGER_DISTRIBUTION);
+		createEAttribute(integerDistributionEClass, INTEGER_DISTRIBUTION__MIN);
+		createEAttribute(integerDistributionEClass, INTEGER_DISTRIBUTION__AVG);
+		createEAttribute(integerDistributionEClass, INTEGER_DISTRIBUTION__MAX);
+
+		integerTimeDistributionEClass = createEClass(INTEGER_TIME_DISTRIBUTION);
+		createEAttribute(integerTimeDistributionEClass, INTEGER_TIME_DISTRIBUTION__UNIT);
+
+		percentageDistributionEClass = createEClass(PERCENTAGE_DISTRIBUTION);
+		createEAttribute(percentageDistributionEClass, PERCENTAGE_DISTRIBUTION__MIN_PERCENTAGE);
+		createEAttribute(percentageDistributionEClass, PERCENTAGE_DISTRIBUTION__AVG_PERCENTAGE);
+		createEAttribute(percentageDistributionEClass, PERCENTAGE_DISTRIBUTION__MAX_PERCENTAGE);
+
+		doubleDistributionEClass = createEClass(DOUBLE_DISTRIBUTION);
+		createEAttribute(doubleDistributionEClass, DOUBLE_DISTRIBUTION__MIN);
+		createEAttribute(doubleDistributionEClass, DOUBLE_DISTRIBUTION__AVG);
+		createEAttribute(doubleDistributionEClass, DOUBLE_DISTRIBUTION__MAX);
+
+		// Create enums
+		recurrenceTypeEEnum = createEEnum(RECURRENCE_TYPE);
+		runtimeTypeEEnum = createEEnum(RUNTIME_TYPE);
+		semaphoreRequestOrderEEnum = createEEnum(SEMAPHORE_REQUEST_ORDER);
+		semaphoreAccessTypeEEnum = createEEnum(SEMAPHORE_ACCESS_TYPE);
+		semaphoreTypeEEnum = createEEnum(SEMAPHORE_TYPE);
+		waitModesEEnum = createEEnum(WAIT_MODES);
+		distributionTypeEEnum = createEEnum(DISTRIBUTION_TYPE);
+		processMappingAlgorithmsEEnum = createEEnum(PROCESS_MAPPING_ALGORITHMS);
+		priorityDeterminationAlgorithmEEnum = createEEnum(PRIORITY_DETERMINATION_ALGORITHM);
+		timeUnitEEnum = createEEnum(TIME_UNIT);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		periodicActivationEClass.getESuperTypes().add(this.getActivation());
+		periodicTriangleShiftEClass.getESuperTypes().add(this.getPeriodicActivation());
+		sporadicActivationEClass.getESuperTypes().add(this.getActivation());
+		recurrenceEClass.getESuperTypes().add(this.getIntegerTimeDistribution());
+		integerDistributionEClass.getESuperTypes().add(this.getDistribution());
+		integerTimeDistributionEClass.getESuperTypes().add(this.getIntegerDistribution());
+		percentageDistributionEClass.getESuperTypes().add(this.getDistribution());
+		doubleDistributionEClass.getESuperTypes().add(this.getDistribution());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(rtmgcEClass, org.eclipse.app4mc.amalthea.generator.configuration.RTMGC.class, "RTMGC", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getRTMGC_Generation(), this.getGeneration(), null, "generation", null, 1, 1, org.eclipse.app4mc.amalthea.generator.configuration.RTMGC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(generationEClass, Generation.class, "Generation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getGeneration_Count(), theXMLTypePackage.getPositiveInteger(), "count", null, 0, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeneration_BaseModel(), theEcorePackage.getEString(), "baseModel", null, 0, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeneration_HwModels(), theEcorePackage.getEString(), "hwModels", null, 1, -1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeneration_OsModels(), theEcorePackage.getEString(), "osModels", null, 1, -1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeneration_SwModel(), theEcorePackage.getEString(), "swModel", null, 0, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeneration_OutputFolder(), theEcorePackage.getEString(), "outputFolder", null, 0, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getGeneration_Activations(), this.getActivationProperties(), null, "activations", null, 1, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getGeneration_Labels(), this.getLabelProperties(), null, "labels", null, 1, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getGeneration_Runnables(), this.getRunnableProperties(), null, "runnables", null, 1, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getGeneration_Semaphores(), this.getSemaphoreProperties(), null, "semaphores", null, 1, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getGeneration_Tasks(), this.getTaskProperties(), null, "tasks", null, 1, 1, Generation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(activationPropertiesEClass, ActivationProperties.class, "ActivationProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getActivationProperties_PeriodicActivation(), this.getPeriodicActivation(), null, "periodicActivation", null, 1, 1, ActivationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActivationProperties_PeriodicTriangleShift(), this.getPeriodicTriangleShift(), null, "periodicTriangleShift", null, 1, 1, ActivationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActivationProperties_SporadicActivation(), this.getSporadicActivation(), null, "sporadicActivation", null, 1, 1, ActivationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(activationEClass, Activation.class, "Activation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getActivation_AppearanceProbability(), theXMLTypePackage.getPositiveInteger(), "appearanceProbability", null, 0, 1, Activation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(periodicActivationEClass, PeriodicActivation.class, "PeriodicActivation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPeriodicActivation_Recurrence(), this.getRecurrence(), null, "recurrence", null, 1, 1, PeriodicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPeriodicActivation_Offset(), this.getIntegerTimeDistribution(), null, "offset", null, 1, 1, PeriodicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(periodicTriangleShiftEClass, PeriodicTriangleShift.class, "PeriodicTriangleShift", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPeriodicTriangleShift_Clock(), this.getTriangleClock(), null, "clock", null, 1, 1, PeriodicTriangleShift.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(triangleClockEClass, TriangleClock.class, "TriangleClock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTriangleClock_Min_start(), this.getDoubleDistribution(), null, "min_start", null, 0, 1, TriangleClock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTriangleClock_Max_end(), this.getDoubleDistribution(), null, "max_end", null, 0, 1, TriangleClock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTriangleClock_Shift(), this.getIntegerTimeDistribution(), null, "shift", null, 0, 1, TriangleClock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTriangleClock_Period(), this.getIntegerTimeDistribution(), null, "period", null, 0, 1, TriangleClock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(sporadicActivationEClass, SporadicActivation.class, "SporadicActivation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSporadicActivation_MinValue(), this.getIntegerTimeDistribution(), null, "minValue", null, 1, 1, SporadicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSporadicActivation_MaxValueDistance(), this.getPercentageDistribution(), null, "maxValueDistance", null, 1, 1, SporadicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSporadicActivation_AvgValueDistance(), this.getPercentageDistribution(), null, "avgValueDistance", null, 1, 1, SporadicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(recurrenceEClass, Recurrence.class, "Recurrence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRecurrence_RecurrenceType(), this.getRecurrenceType(), "recurrenceType", "random", 0, 1, Recurrence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(labelPropertiesEClass, LabelProperties.class, "LabelProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLabelProperties_Count(), this.getIntegerDistribution(), null, "count", null, 1, 1, LabelProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLabelProperties_BitSize(), this.getIntegerDistribution(), null, "bitSize", null, 1, 1, LabelProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLabelProperties_PerSWC(), this.getIntegerDistribution(), null, "perSWC", null, 1, 1, LabelProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(runnablePropertiesEClass, RunnableProperties.class, "RunnableProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRunnableProperties_RuntimeType(), this.getRuntimeType(), "runtimeType", "instructionsConst", 1, 1, RunnableProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRunnableProperties_InstructionsPerRunnables(), this.getIntegerDistribution(), null, "instructionsPerRunnables", null, 1, 1, RunnableProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRunnableProperties_RunnablesPerCallSequence(), this.getIntegerDistribution(), null, "runnablesPerCallSequence", null, 1, 1, RunnableProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRunnableProperties_RunnablesPerSWC(), this.getIntegerDistribution(), null, "runnablesPerSWC", null, 1, 1, RunnableProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRunnableProperties_MinStatisticsDistance(), this.getPercentageDistribution(), null, "minStatisticsDistance", null, 1, 1, RunnableProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRunnableProperties_MaxStatisticsDistance(), this.getPercentageDistribution(), null, "maxStatisticsDistance", null, 1, 1, RunnableProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(semaphorePropertiesEClass, SemaphoreProperties.class, "SemaphoreProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSemaphoreProperties_Count(), this.getIntegerDistribution(), null, "count", null, 1, 1, SemaphoreProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSemaphoreProperties_PriorityCeilingProtocol(), theEcorePackage.getEBoolean(), "priorityCeilingProtocol", null, 0, 1, SemaphoreProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSemaphoreProperties_SemaphoreType(), this.getSemaphoreType(), "semaphoreType", "counting", 1, 1, SemaphoreProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSemaphoreProperties_WaitMode(), this.getWaitModes(), "waitMode", "active waiting", 1, 1, SemaphoreProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSemaphoreProperties_SemaphoreAccess(), this.getSemaphoreAccessProperties(), null, "SemaphoreAccess", null, 1, 1, SemaphoreProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(semaphoreAccessPropertiesEClass, SemaphoreAccessProperties.class, "SemaphoreAccessProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSemaphoreAccessProperties_PerUnitReadAccessCount(), this.getIntegerDistribution(), null, "perUnitReadAccessCount", null, 1, 1, SemaphoreAccessProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSemaphoreAccessProperties_PerUnitWriteAccessCount(), this.getIntegerDistribution(), null, "perUnitWriteAccessCount", null, 1, 1, SemaphoreAccessProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSemaphoreAccessProperties_RequestOrder(), this.getSemaphoreRequestOrder(), "requestOrder", "none", 1, 1, SemaphoreAccessProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSemaphoreAccessProperties_AccessType(), this.getSemaphoreAccessType(), "accessType", "RandRunnable", 1, 1, SemaphoreAccessProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(taskPropertiesEClass, TaskProperties.class, "TaskProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTaskProperties_Count(), this.getIntegerDistribution(), null, "count", null, 1, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTaskProperties_Load(), this.getPercentageDistribution(), null, "load", null, 1, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTaskProperties_PerTaskGroup(), this.getIntegerDistribution(), null, "perTaskGroup", null, 1, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTaskProperties_Mta(), this.getIntegerDistribution(), null, "mta", null, 1, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTaskProperties_DeadlineFactor(), this.getDoubleDistribution(), null, "deadlineFactor", null, 1, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTaskProperties_CallSequencesBetweenSchedulePoints(), this.getIntegerDistribution(), null, "callSequencesBetweenSchedulePoints", null, 1, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTaskProperties_CallGraphs(), this.getCallGraphProperties(), null, "callGraphs", null, 1, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTaskProperties_MappingDetermination(), this.getProcessMappingAlgorithms(), "mappingDetermination", "Worst Fit Decreasing", 0, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTaskProperties_PriorityDetermination(), this.getPriorityDeterminationAlgorithm(), "priorityDetermination", "Rate Monotonic", 0, 1, TaskProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(callGraphPropertiesEClass, CallGraphProperties.class, "CallGraphProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCallGraphProperties_SignalDomainCoverage(), this.getPercentageDistribution(), null, "signalDomainCoverage", null, 1, 1, CallGraphProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCallGraphProperties_CallSequenceUsage(), this.getPercentageDistribution(), null, "callSequenceUsage", null, 1, 1, CallGraphProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(distributionEClass, Distribution.class, "Distribution", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDistribution_Type(), this.getDistributionType(), "type", "Constant Value", 0, 1, Distribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(integerDistributionEClass, IntegerDistribution.class, "IntegerDistribution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getIntegerDistribution_Min(), theXMLTypePackage.getUnsignedInt(), "min", null, 0, 1, IntegerDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIntegerDistribution_Avg(), theXMLTypePackage.getUnsignedInt(), "avg", null, 0, 1, IntegerDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIntegerDistribution_Max(), theXMLTypePackage.getUnsignedInt(), "max", null, 0, 1, IntegerDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(integerTimeDistributionEClass, IntegerTimeDistribution.class, "IntegerTimeDistribution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getIntegerTimeDistribution_Unit(), this.getTimeUnit(), "unit", "ms", 0, 1, IntegerTimeDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(percentageDistributionEClass, PercentageDistribution.class, "PercentageDistribution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPercentageDistribution_MinPercentage(), theEcorePackage.getEDouble(), "minPercentage", null, 0, 1, PercentageDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPercentageDistribution_AvgPercentage(), theEcorePackage.getEDouble(), "avgPercentage", null, 0, 1, PercentageDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPercentageDistribution_MaxPercentage(), theEcorePackage.getEDouble(), "maxPercentage", null, 0, 1, PercentageDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(doubleDistributionEClass, DoubleDistribution.class, "DoubleDistribution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDoubleDistribution_Min(), theEcorePackage.getEDouble(), "min", null, 0, 1, DoubleDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDoubleDistribution_Avg(), theEcorePackage.getEDouble(), "avg", null, 0, 1, DoubleDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDoubleDistribution_Max(), theEcorePackage.getEDouble(), "max", null, 0, 1, DoubleDistribution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(recurrenceTypeEEnum, RecurrenceType.class, "RecurrenceType");
+		addEEnumLiteral(recurrenceTypeEEnum, RecurrenceType.RANDOM);
+		addEEnumLiteral(recurrenceTypeEEnum, RecurrenceType.HARMONIC);
+
+		initEEnum(runtimeTypeEEnum, RuntimeType.class, "RuntimeType");
+		addEEnumLiteral(runtimeTypeEEnum, RuntimeType.INSTRUCTIONS_CONST);
+		addEEnumLiteral(runtimeTypeEEnum, RuntimeType.INSTRUCTIONS_STATISTICS);
+
+		initEEnum(semaphoreRequestOrderEEnum, SemaphoreRequestOrder.class, "SemaphoreRequestOrder");
+		addEEnumLiteral(semaphoreRequestOrderEEnum, SemaphoreRequestOrder.NONE);
+		addEEnumLiteral(semaphoreRequestOrderEEnum, SemaphoreRequestOrder.REQUEST_GROUPED);
+		addEEnumLiteral(semaphoreRequestOrderEEnum, SemaphoreRequestOrder.NAME_INCREASING);
+
+		initEEnum(semaphoreAccessTypeEEnum, SemaphoreAccessType.class, "SemaphoreAccessType");
+		addEEnumLiteral(semaphoreAccessTypeEEnum, SemaphoreAccessType.RWPER_TASK);
+		addEEnumLiteral(semaphoreAccessTypeEEnum, SemaphoreAccessType.RWPER_CALL_SEQUENCE);
+		addEEnumLiteral(semaphoreAccessTypeEEnum, SemaphoreAccessType.RAND_RUNNABLE);
+		addEEnumLiteral(semaphoreAccessTypeEEnum, SemaphoreAccessType.WHOLE_CS);
+		addEEnumLiteral(semaphoreAccessTypeEEnum, SemaphoreAccessType.GROUPED_FMLP);
+		addEEnumLiteral(semaphoreAccessTypeEEnum, SemaphoreAccessType.WEAK_FMLP);
+		addEEnumLiteral(semaphoreAccessTypeEEnum, SemaphoreAccessType.EVA);
+
+		initEEnum(semaphoreTypeEEnum, SemaphoreType.class, "SemaphoreType");
+		addEEnumLiteral(semaphoreTypeEEnum, SemaphoreType.BINARY);
+		addEEnumLiteral(semaphoreTypeEEnum, SemaphoreType.COUNTING);
+		addEEnumLiteral(semaphoreTypeEEnum, SemaphoreType.BOTH);
+
+		initEEnum(waitModesEEnum, WaitModes.class, "WaitModes");
+		addEEnumLiteral(waitModesEEnum, WaitModes.POLLING);
+		addEEnumLiteral(waitModesEEnum, WaitModes.PARKING);
+
+		initEEnum(distributionTypeEEnum, DistributionType.class, "DistributionType");
+		addEEnumLiteral(distributionTypeEEnum, DistributionType.CONST);
+		addEEnumLiteral(distributionTypeEEnum, DistributionType.UNIFORM);
+		addEEnumLiteral(distributionTypeEEnum, DistributionType.WEIBULL);
+
+		initEEnum(processMappingAlgorithmsEEnum, ProcessMappingAlgorithms.class, "ProcessMappingAlgorithms");
+		addEEnumLiteral(processMappingAlgorithmsEEnum, ProcessMappingAlgorithms.WFD);
+		addEEnumLiteral(processMappingAlgorithmsEEnum, ProcessMappingAlgorithms.WFI);
+		addEEnumLiteral(processMappingAlgorithmsEEnum, ProcessMappingAlgorithms.BFD);
+		addEEnumLiteral(processMappingAlgorithmsEEnum, ProcessMappingAlgorithms.BFI);
+
+		initEEnum(priorityDeterminationAlgorithmEEnum, PriorityDeterminationAlgorithm.class, "PriorityDeterminationAlgorithm");
+		addEEnumLiteral(priorityDeterminationAlgorithmEEnum, PriorityDeterminationAlgorithm.RM);
+		addEEnumLiteral(priorityDeterminationAlgorithmEEnum, PriorityDeterminationAlgorithm.DM);
+
+		initEEnum(timeUnitEEnum, TimeUnit.class, "TimeUnit");
+		addEEnumLiteral(timeUnitEEnum, TimeUnit.PS);
+		addEEnumLiteral(timeUnitEEnum, TimeUnit.NS);
+		addEEnumLiteral(timeUnitEEnum, TimeUnit.US);
+		addEEnumLiteral(timeUnitEEnum, TimeUnit.MS);
+		addEEnumLiteral(timeUnitEEnum, TimeUnit.S);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //RTMGCPackageImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RecurrenceImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RecurrenceImpl.java
new file mode 100644
index 0000000..efddbd1
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RecurrenceImpl.java
@@ -0,0 +1,173 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.Recurrence;
+import org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Recurrence</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RecurrenceImpl#getRecurrenceType <em>Recurrence Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RecurrenceImpl extends IntegerTimeDistributionImpl implements Recurrence {
+	/**
+	 * The default value of the '{@link #getRecurrenceType() <em>Recurrence Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrenceType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final RecurrenceType RECURRENCE_TYPE_EDEFAULT = RecurrenceType.RANDOM;
+
+	/**
+	 * The cached value of the '{@link #getRecurrenceType() <em>Recurrence Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrenceType()
+	 * @generated
+	 * @ordered
+	 */
+	protected RecurrenceType recurrenceType = RECURRENCE_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RecurrenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.RECURRENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RecurrenceType getRecurrenceType() {
+		return recurrenceType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRecurrenceType(RecurrenceType newRecurrenceType) {
+		RecurrenceType oldRecurrenceType = recurrenceType;
+		recurrenceType = newRecurrenceType == null ? RECURRENCE_TYPE_EDEFAULT : newRecurrenceType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RECURRENCE__RECURRENCE_TYPE, oldRecurrenceType, recurrenceType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.RECURRENCE__RECURRENCE_TYPE:
+				return getRecurrenceType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.RECURRENCE__RECURRENCE_TYPE:
+				setRecurrenceType((RecurrenceType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.RECURRENCE__RECURRENCE_TYPE:
+				setRecurrenceType(RECURRENCE_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.RECURRENCE__RECURRENCE_TYPE:
+				return recurrenceType != RECURRENCE_TYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (recurrenceType: ");
+		result.append(recurrenceType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RecurrenceImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RunnablePropertiesImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RunnablePropertiesImpl.java
new file mode 100644
index 0000000..63090a5
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/RunnablePropertiesImpl.java
@@ -0,0 +1,520 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Runnable Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl#getRuntimeType <em>Runtime Type</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl#getInstructionsPerRunnables <em>Instructions Per Runnables</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl#getRunnablesPerCallSequence <em>Runnables Per Call Sequence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl#getRunnablesPerSWC <em>Runnables Per SWC</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl#getMinStatisticsDistance <em>Min Statistics Distance</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.RunnablePropertiesImpl#getMaxStatisticsDistance <em>Max Statistics Distance</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RunnablePropertiesImpl extends MinimalEObjectImpl.Container implements RunnableProperties {
+	/**
+	 * The default value of the '{@link #getRuntimeType() <em>Runtime Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRuntimeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final RuntimeType RUNTIME_TYPE_EDEFAULT = RuntimeType.INSTRUCTIONS_CONST;
+
+	/**
+	 * The cached value of the '{@link #getRuntimeType() <em>Runtime Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRuntimeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected RuntimeType runtimeType = RUNTIME_TYPE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getInstructionsPerRunnables() <em>Instructions Per Runnables</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInstructionsPerRunnables()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution instructionsPerRunnables;
+
+	/**
+	 * The cached value of the '{@link #getRunnablesPerCallSequence() <em>Runnables Per Call Sequence</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRunnablesPerCallSequence()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution runnablesPerCallSequence;
+
+	/**
+	 * The cached value of the '{@link #getRunnablesPerSWC() <em>Runnables Per SWC</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRunnablesPerSWC()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution runnablesPerSWC;
+
+	/**
+	 * The cached value of the '{@link #getMinStatisticsDistance() <em>Min Statistics Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinStatisticsDistance()
+	 * @generated
+	 * @ordered
+	 */
+	protected PercentageDistribution minStatisticsDistance;
+
+	/**
+	 * The cached value of the '{@link #getMaxStatisticsDistance() <em>Max Statistics Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxStatisticsDistance()
+	 * @generated
+	 * @ordered
+	 */
+	protected PercentageDistribution maxStatisticsDistance;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RunnablePropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.RUNNABLE_PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RuntimeType getRuntimeType() {
+		return runtimeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRuntimeType(RuntimeType newRuntimeType) {
+		RuntimeType oldRuntimeType = runtimeType;
+		runtimeType = newRuntimeType == null ? RUNTIME_TYPE_EDEFAULT : newRuntimeType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__RUNTIME_TYPE, oldRuntimeType, runtimeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getInstructionsPerRunnables() {
+		return instructionsPerRunnables;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInstructionsPerRunnables(IntegerDistribution newInstructionsPerRunnables, NotificationChain msgs) {
+		IntegerDistribution oldInstructionsPerRunnables = instructionsPerRunnables;
+		instructionsPerRunnables = newInstructionsPerRunnables;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES, oldInstructionsPerRunnables, newInstructionsPerRunnables);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInstructionsPerRunnables(IntegerDistribution newInstructionsPerRunnables) {
+		if (newInstructionsPerRunnables != instructionsPerRunnables) {
+			NotificationChain msgs = null;
+			if (instructionsPerRunnables != null)
+				msgs = ((InternalEObject)instructionsPerRunnables).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES, null, msgs);
+			if (newInstructionsPerRunnables != null)
+				msgs = ((InternalEObject)newInstructionsPerRunnables).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES, null, msgs);
+			msgs = basicSetInstructionsPerRunnables(newInstructionsPerRunnables, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES, newInstructionsPerRunnables, newInstructionsPerRunnables));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getRunnablesPerCallSequence() {
+		return runnablesPerCallSequence;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRunnablesPerCallSequence(IntegerDistribution newRunnablesPerCallSequence, NotificationChain msgs) {
+		IntegerDistribution oldRunnablesPerCallSequence = runnablesPerCallSequence;
+		runnablesPerCallSequence = newRunnablesPerCallSequence;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE, oldRunnablesPerCallSequence, newRunnablesPerCallSequence);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRunnablesPerCallSequence(IntegerDistribution newRunnablesPerCallSequence) {
+		if (newRunnablesPerCallSequence != runnablesPerCallSequence) {
+			NotificationChain msgs = null;
+			if (runnablesPerCallSequence != null)
+				msgs = ((InternalEObject)runnablesPerCallSequence).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE, null, msgs);
+			if (newRunnablesPerCallSequence != null)
+				msgs = ((InternalEObject)newRunnablesPerCallSequence).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE, null, msgs);
+			msgs = basicSetRunnablesPerCallSequence(newRunnablesPerCallSequence, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE, newRunnablesPerCallSequence, newRunnablesPerCallSequence));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getRunnablesPerSWC() {
+		return runnablesPerSWC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRunnablesPerSWC(IntegerDistribution newRunnablesPerSWC, NotificationChain msgs) {
+		IntegerDistribution oldRunnablesPerSWC = runnablesPerSWC;
+		runnablesPerSWC = newRunnablesPerSWC;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC, oldRunnablesPerSWC, newRunnablesPerSWC);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRunnablesPerSWC(IntegerDistribution newRunnablesPerSWC) {
+		if (newRunnablesPerSWC != runnablesPerSWC) {
+			NotificationChain msgs = null;
+			if (runnablesPerSWC != null)
+				msgs = ((InternalEObject)runnablesPerSWC).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC, null, msgs);
+			if (newRunnablesPerSWC != null)
+				msgs = ((InternalEObject)newRunnablesPerSWC).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC, null, msgs);
+			msgs = basicSetRunnablesPerSWC(newRunnablesPerSWC, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC, newRunnablesPerSWC, newRunnablesPerSWC));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution getMinStatisticsDistance() {
+		return minStatisticsDistance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMinStatisticsDistance(PercentageDistribution newMinStatisticsDistance, NotificationChain msgs) {
+		PercentageDistribution oldMinStatisticsDistance = minStatisticsDistance;
+		minStatisticsDistance = newMinStatisticsDistance;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE, oldMinStatisticsDistance, newMinStatisticsDistance);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinStatisticsDistance(PercentageDistribution newMinStatisticsDistance) {
+		if (newMinStatisticsDistance != minStatisticsDistance) {
+			NotificationChain msgs = null;
+			if (minStatisticsDistance != null)
+				msgs = ((InternalEObject)minStatisticsDistance).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE, null, msgs);
+			if (newMinStatisticsDistance != null)
+				msgs = ((InternalEObject)newMinStatisticsDistance).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE, null, msgs);
+			msgs = basicSetMinStatisticsDistance(newMinStatisticsDistance, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE, newMinStatisticsDistance, newMinStatisticsDistance));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution getMaxStatisticsDistance() {
+		return maxStatisticsDistance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMaxStatisticsDistance(PercentageDistribution newMaxStatisticsDistance, NotificationChain msgs) {
+		PercentageDistribution oldMaxStatisticsDistance = maxStatisticsDistance;
+		maxStatisticsDistance = newMaxStatisticsDistance;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE, oldMaxStatisticsDistance, newMaxStatisticsDistance);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMaxStatisticsDistance(PercentageDistribution newMaxStatisticsDistance) {
+		if (newMaxStatisticsDistance != maxStatisticsDistance) {
+			NotificationChain msgs = null;
+			if (maxStatisticsDistance != null)
+				msgs = ((InternalEObject)maxStatisticsDistance).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE, null, msgs);
+			if (newMaxStatisticsDistance != null)
+				msgs = ((InternalEObject)newMaxStatisticsDistance).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE, null, msgs);
+			msgs = basicSetMaxStatisticsDistance(newMaxStatisticsDistance, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE, newMaxStatisticsDistance, newMaxStatisticsDistance));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES:
+				return basicSetInstructionsPerRunnables(null, msgs);
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE:
+				return basicSetRunnablesPerCallSequence(null, msgs);
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC:
+				return basicSetRunnablesPerSWC(null, msgs);
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE:
+				return basicSetMinStatisticsDistance(null, msgs);
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE:
+				return basicSetMaxStatisticsDistance(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNTIME_TYPE:
+				return getRuntimeType();
+			case RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES:
+				return getInstructionsPerRunnables();
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE:
+				return getRunnablesPerCallSequence();
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC:
+				return getRunnablesPerSWC();
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE:
+				return getMinStatisticsDistance();
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE:
+				return getMaxStatisticsDistance();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNTIME_TYPE:
+				setRuntimeType((RuntimeType)newValue);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES:
+				setInstructionsPerRunnables((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE:
+				setRunnablesPerCallSequence((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC:
+				setRunnablesPerSWC((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE:
+				setMinStatisticsDistance((PercentageDistribution)newValue);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE:
+				setMaxStatisticsDistance((PercentageDistribution)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNTIME_TYPE:
+				setRuntimeType(RUNTIME_TYPE_EDEFAULT);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES:
+				setInstructionsPerRunnables((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE:
+				setRunnablesPerCallSequence((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC:
+				setRunnablesPerSWC((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE:
+				setMinStatisticsDistance((PercentageDistribution)null);
+				return;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE:
+				setMaxStatisticsDistance((PercentageDistribution)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNTIME_TYPE:
+				return runtimeType != RUNTIME_TYPE_EDEFAULT;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__INSTRUCTIONS_PER_RUNNABLES:
+				return instructionsPerRunnables != null;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_CALL_SEQUENCE:
+				return runnablesPerCallSequence != null;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__RUNNABLES_PER_SWC:
+				return runnablesPerSWC != null;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MIN_STATISTICS_DISTANCE:
+				return minStatisticsDistance != null;
+			case RTMGCPackage.RUNNABLE_PROPERTIES__MAX_STATISTICS_DISTANCE:
+				return maxStatisticsDistance != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (runtimeType: ");
+		result.append(runtimeType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RunnablePropertiesImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SemaphoreAccessPropertiesImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SemaphoreAccessPropertiesImpl.java
new file mode 100644
index 0000000..faacf32
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SemaphoreAccessPropertiesImpl.java
@@ -0,0 +1,376 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Semaphore Access Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getPerUnitReadAccessCount <em>Per Unit Read Access Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getPerUnitWriteAccessCount <em>Per Unit Write Access Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getRequestOrder <em>Request Order</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getAccessType <em>Access Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SemaphoreAccessPropertiesImpl extends MinimalEObjectImpl.Container implements SemaphoreAccessProperties {
+	/**
+	 * The cached value of the '{@link #getPerUnitReadAccessCount() <em>Per Unit Read Access Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPerUnitReadAccessCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution perUnitReadAccessCount;
+
+	/**
+	 * The cached value of the '{@link #getPerUnitWriteAccessCount() <em>Per Unit Write Access Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPerUnitWriteAccessCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution perUnitWriteAccessCount;
+
+	/**
+	 * The default value of the '{@link #getRequestOrder() <em>Request Order</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRequestOrder()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SemaphoreRequestOrder REQUEST_ORDER_EDEFAULT = SemaphoreRequestOrder.NONE;
+
+	/**
+	 * The cached value of the '{@link #getRequestOrder() <em>Request Order</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRequestOrder()
+	 * @generated
+	 * @ordered
+	 */
+	protected SemaphoreRequestOrder requestOrder = REQUEST_ORDER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAccessType() <em>Access Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAccessType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SemaphoreAccessType ACCESS_TYPE_EDEFAULT = SemaphoreAccessType.RAND_RUNNABLE;
+
+	/**
+	 * The cached value of the '{@link #getAccessType() <em>Access Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAccessType()
+	 * @generated
+	 * @ordered
+	 */
+	protected SemaphoreAccessType accessType = ACCESS_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SemaphoreAccessPropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.SEMAPHORE_ACCESS_PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getPerUnitReadAccessCount() {
+		return perUnitReadAccessCount;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPerUnitReadAccessCount(IntegerDistribution newPerUnitReadAccessCount, NotificationChain msgs) {
+		IntegerDistribution oldPerUnitReadAccessCount = perUnitReadAccessCount;
+		perUnitReadAccessCount = newPerUnitReadAccessCount;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, oldPerUnitReadAccessCount, newPerUnitReadAccessCount);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPerUnitReadAccessCount(IntegerDistribution newPerUnitReadAccessCount) {
+		if (newPerUnitReadAccessCount != perUnitReadAccessCount) {
+			NotificationChain msgs = null;
+			if (perUnitReadAccessCount != null)
+				msgs = ((InternalEObject)perUnitReadAccessCount).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, null, msgs);
+			if (newPerUnitReadAccessCount != null)
+				msgs = ((InternalEObject)newPerUnitReadAccessCount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, null, msgs);
+			msgs = basicSetPerUnitReadAccessCount(newPerUnitReadAccessCount, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, newPerUnitReadAccessCount, newPerUnitReadAccessCount));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getPerUnitWriteAccessCount() {
+		return perUnitWriteAccessCount;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPerUnitWriteAccessCount(IntegerDistribution newPerUnitWriteAccessCount, NotificationChain msgs) {
+		IntegerDistribution oldPerUnitWriteAccessCount = perUnitWriteAccessCount;
+		perUnitWriteAccessCount = newPerUnitWriteAccessCount;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, oldPerUnitWriteAccessCount, newPerUnitWriteAccessCount);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPerUnitWriteAccessCount(IntegerDistribution newPerUnitWriteAccessCount) {
+		if (newPerUnitWriteAccessCount != perUnitWriteAccessCount) {
+			NotificationChain msgs = null;
+			if (perUnitWriteAccessCount != null)
+				msgs = ((InternalEObject)perUnitWriteAccessCount).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, null, msgs);
+			if (newPerUnitWriteAccessCount != null)
+				msgs = ((InternalEObject)newPerUnitWriteAccessCount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, null, msgs);
+			msgs = basicSetPerUnitWriteAccessCount(newPerUnitWriteAccessCount, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, newPerUnitWriteAccessCount, newPerUnitWriteAccessCount));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreRequestOrder getRequestOrder() {
+		return requestOrder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRequestOrder(SemaphoreRequestOrder newRequestOrder) {
+		SemaphoreRequestOrder oldRequestOrder = requestOrder;
+		requestOrder = newRequestOrder == null ? REQUEST_ORDER_EDEFAULT : newRequestOrder;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER, oldRequestOrder, requestOrder));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreAccessType getAccessType() {
+		return accessType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAccessType(SemaphoreAccessType newAccessType) {
+		SemaphoreAccessType oldAccessType = accessType;
+		accessType = newAccessType == null ? ACCESS_TYPE_EDEFAULT : newAccessType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE, oldAccessType, accessType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
+				return basicSetPerUnitReadAccessCount(null, msgs);
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
+				return basicSetPerUnitWriteAccessCount(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
+				return getPerUnitReadAccessCount();
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
+				return getPerUnitWriteAccessCount();
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
+				return getRequestOrder();
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
+				return getAccessType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
+				setPerUnitReadAccessCount((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
+				setPerUnitWriteAccessCount((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
+				setRequestOrder((SemaphoreRequestOrder)newValue);
+				return;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
+				setAccessType((SemaphoreAccessType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
+				setPerUnitReadAccessCount((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
+				setPerUnitWriteAccessCount((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
+				setRequestOrder(REQUEST_ORDER_EDEFAULT);
+				return;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
+				setAccessType(ACCESS_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
+				return perUnitReadAccessCount != null;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
+				return perUnitWriteAccessCount != null;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
+				return requestOrder != REQUEST_ORDER_EDEFAULT;
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
+				return accessType != ACCESS_TYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (requestOrder: ");
+		result.append(requestOrder);
+		result.append(", accessType: ");
+		result.append(accessType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SemaphoreAccessPropertiesImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SemaphorePropertiesImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SemaphorePropertiesImpl.java
new file mode 100644
index 0000000..10d2f67
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SemaphorePropertiesImpl.java
@@ -0,0 +1,431 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType;
+import org.eclipse.app4mc.amalthea.generator.configuration.WaitModes;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Semaphore Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl#isPriorityCeilingProtocol <em>Priority Ceiling Protocol</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl#getSemaphoreType <em>Semaphore Type</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl#getWaitMode <em>Wait Mode</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphorePropertiesImpl#getSemaphoreAccess <em>Semaphore Access</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SemaphorePropertiesImpl extends MinimalEObjectImpl.Container implements SemaphoreProperties {
+	/**
+	 * The cached value of the '{@link #getCount() <em>Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution count;
+
+	/**
+	 * The default value of the '{@link #isPriorityCeilingProtocol() <em>Priority Ceiling Protocol</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPriorityCeilingProtocol()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean PRIORITY_CEILING_PROTOCOL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isPriorityCeilingProtocol() <em>Priority Ceiling Protocol</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPriorityCeilingProtocol()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean priorityCeilingProtocol = PRIORITY_CEILING_PROTOCOL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSemaphoreType() <em>Semaphore Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemaphoreType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SemaphoreType SEMAPHORE_TYPE_EDEFAULT = SemaphoreType.COUNTING;
+
+	/**
+	 * The cached value of the '{@link #getSemaphoreType() <em>Semaphore Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemaphoreType()
+	 * @generated
+	 * @ordered
+	 */
+	protected SemaphoreType semaphoreType = SEMAPHORE_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getWaitMode() <em>Wait Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWaitMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final WaitModes WAIT_MODE_EDEFAULT = WaitModes.POLLING;
+
+	/**
+	 * The cached value of the '{@link #getWaitMode() <em>Wait Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWaitMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected WaitModes waitMode = WAIT_MODE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getSemaphoreAccess() <em>Semaphore Access</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemaphoreAccess()
+	 * @generated
+	 * @ordered
+	 */
+	protected SemaphoreAccessProperties semaphoreAccess;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SemaphorePropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.SEMAPHORE_PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getCount() {
+		return count;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCount(IntegerDistribution newCount, NotificationChain msgs) {
+		IntegerDistribution oldCount = count;
+		count = newCount;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT, oldCount, newCount);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCount(IntegerDistribution newCount) {
+		if (newCount != count) {
+			NotificationChain msgs = null;
+			if (count != null)
+				msgs = ((InternalEObject)count).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT, null, msgs);
+			if (newCount != null)
+				msgs = ((InternalEObject)newCount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT, null, msgs);
+			msgs = basicSetCount(newCount, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT, newCount, newCount));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isPriorityCeilingProtocol() {
+		return priorityCeilingProtocol;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPriorityCeilingProtocol(boolean newPriorityCeilingProtocol) {
+		boolean oldPriorityCeilingProtocol = priorityCeilingProtocol;
+		priorityCeilingProtocol = newPriorityCeilingProtocol;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL, oldPriorityCeilingProtocol, priorityCeilingProtocol));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreType getSemaphoreType() {
+		return semaphoreType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSemaphoreType(SemaphoreType newSemaphoreType) {
+		SemaphoreType oldSemaphoreType = semaphoreType;
+		semaphoreType = newSemaphoreType == null ? SEMAPHORE_TYPE_EDEFAULT : newSemaphoreType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE, oldSemaphoreType, semaphoreType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WaitModes getWaitMode() {
+		return waitMode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWaitMode(WaitModes newWaitMode) {
+		WaitModes oldWaitMode = waitMode;
+		waitMode = newWaitMode == null ? WAIT_MODE_EDEFAULT : newWaitMode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_PROPERTIES__WAIT_MODE, oldWaitMode, waitMode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreAccessProperties getSemaphoreAccess() {
+		return semaphoreAccess;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSemaphoreAccess(SemaphoreAccessProperties newSemaphoreAccess, NotificationChain msgs) {
+		SemaphoreAccessProperties oldSemaphoreAccess = semaphoreAccess;
+		semaphoreAccess = newSemaphoreAccess;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS, oldSemaphoreAccess, newSemaphoreAccess);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSemaphoreAccess(SemaphoreAccessProperties newSemaphoreAccess) {
+		if (newSemaphoreAccess != semaphoreAccess) {
+			NotificationChain msgs = null;
+			if (semaphoreAccess != null)
+				msgs = ((InternalEObject)semaphoreAccess).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS, null, msgs);
+			if (newSemaphoreAccess != null)
+				msgs = ((InternalEObject)newSemaphoreAccess).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS, null, msgs);
+			msgs = basicSetSemaphoreAccess(newSemaphoreAccess, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS, newSemaphoreAccess, newSemaphoreAccess));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT:
+				return basicSetCount(null, msgs);
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS:
+				return basicSetSemaphoreAccess(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT:
+				return getCount();
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL:
+				return isPriorityCeilingProtocol();
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE:
+				return getSemaphoreType();
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__WAIT_MODE:
+				return getWaitMode();
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS:
+				return getSemaphoreAccess();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT:
+				setCount((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL:
+				setPriorityCeilingProtocol((Boolean)newValue);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE:
+				setSemaphoreType((SemaphoreType)newValue);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__WAIT_MODE:
+				setWaitMode((WaitModes)newValue);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS:
+				setSemaphoreAccess((SemaphoreAccessProperties)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT:
+				setCount((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL:
+				setPriorityCeilingProtocol(PRIORITY_CEILING_PROTOCOL_EDEFAULT);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE:
+				setSemaphoreType(SEMAPHORE_TYPE_EDEFAULT);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__WAIT_MODE:
+				setWaitMode(WAIT_MODE_EDEFAULT);
+				return;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS:
+				setSemaphoreAccess((SemaphoreAccessProperties)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__COUNT:
+				return count != null;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__PRIORITY_CEILING_PROTOCOL:
+				return priorityCeilingProtocol != PRIORITY_CEILING_PROTOCOL_EDEFAULT;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_TYPE:
+				return semaphoreType != SEMAPHORE_TYPE_EDEFAULT;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__WAIT_MODE:
+				return waitMode != WAIT_MODE_EDEFAULT;
+			case RTMGCPackage.SEMAPHORE_PROPERTIES__SEMAPHORE_ACCESS:
+				return semaphoreAccess != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (priorityCeilingProtocol: ");
+		result.append(priorityCeilingProtocol);
+		result.append(", semaphoreType: ");
+		result.append(semaphoreType);
+		result.append(", waitMode: ");
+		result.append(waitMode);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SemaphorePropertiesImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SporadicActivationImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SporadicActivationImpl.java
new file mode 100644
index 0000000..649d095
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/SporadicActivationImpl.java
@@ -0,0 +1,318 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sporadic Activation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SporadicActivationImpl#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SporadicActivationImpl#getMaxValueDistance <em>Max Value Distance</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SporadicActivationImpl#getAvgValueDistance <em>Avg Value Distance</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SporadicActivationImpl extends ActivationImpl implements SporadicActivation {
+	/**
+	 * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerTimeDistribution minValue;
+
+	/**
+	 * The cached value of the '{@link #getMaxValueDistance() <em>Max Value Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxValueDistance()
+	 * @generated
+	 * @ordered
+	 */
+	protected PercentageDistribution maxValueDistance;
+
+	/**
+	 * The cached value of the '{@link #getAvgValueDistance() <em>Avg Value Distance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAvgValueDistance()
+	 * @generated
+	 * @ordered
+	 */
+	protected PercentageDistribution avgValueDistance;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SporadicActivationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.SPORADIC_ACTIVATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerTimeDistribution getMinValue() {
+		return minValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMinValue(IntegerTimeDistribution newMinValue, NotificationChain msgs) {
+		IntegerTimeDistribution oldMinValue = minValue;
+		minValue = newMinValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE, oldMinValue, newMinValue);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinValue(IntegerTimeDistribution newMinValue) {
+		if (newMinValue != minValue) {
+			NotificationChain msgs = null;
+			if (minValue != null)
+				msgs = ((InternalEObject)minValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE, null, msgs);
+			if (newMinValue != null)
+				msgs = ((InternalEObject)newMinValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE, null, msgs);
+			msgs = basicSetMinValue(newMinValue, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE, newMinValue, newMinValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution getMaxValueDistance() {
+		return maxValueDistance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMaxValueDistance(PercentageDistribution newMaxValueDistance, NotificationChain msgs) {
+		PercentageDistribution oldMaxValueDistance = maxValueDistance;
+		maxValueDistance = newMaxValueDistance;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE, oldMaxValueDistance, newMaxValueDistance);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMaxValueDistance(PercentageDistribution newMaxValueDistance) {
+		if (newMaxValueDistance != maxValueDistance) {
+			NotificationChain msgs = null;
+			if (maxValueDistance != null)
+				msgs = ((InternalEObject)maxValueDistance).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE, null, msgs);
+			if (newMaxValueDistance != null)
+				msgs = ((InternalEObject)newMaxValueDistance).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE, null, msgs);
+			msgs = basicSetMaxValueDistance(newMaxValueDistance, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE, newMaxValueDistance, newMaxValueDistance));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution getAvgValueDistance() {
+		return avgValueDistance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAvgValueDistance(PercentageDistribution newAvgValueDistance, NotificationChain msgs) {
+		PercentageDistribution oldAvgValueDistance = avgValueDistance;
+		avgValueDistance = newAvgValueDistance;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE, oldAvgValueDistance, newAvgValueDistance);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAvgValueDistance(PercentageDistribution newAvgValueDistance) {
+		if (newAvgValueDistance != avgValueDistance) {
+			NotificationChain msgs = null;
+			if (avgValueDistance != null)
+				msgs = ((InternalEObject)avgValueDistance).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE, null, msgs);
+			if (newAvgValueDistance != null)
+				msgs = ((InternalEObject)newAvgValueDistance).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE, null, msgs);
+			msgs = basicSetAvgValueDistance(newAvgValueDistance, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE, newAvgValueDistance, newAvgValueDistance));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE:
+				return basicSetMinValue(null, msgs);
+			case RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE:
+				return basicSetMaxValueDistance(null, msgs);
+			case RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE:
+				return basicSetAvgValueDistance(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE:
+				return getMinValue();
+			case RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE:
+				return getMaxValueDistance();
+			case RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE:
+				return getAvgValueDistance();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE:
+				setMinValue((IntegerTimeDistribution)newValue);
+				return;
+			case RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE:
+				setMaxValueDistance((PercentageDistribution)newValue);
+				return;
+			case RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE:
+				setAvgValueDistance((PercentageDistribution)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE:
+				setMinValue((IntegerTimeDistribution)null);
+				return;
+			case RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE:
+				setMaxValueDistance((PercentageDistribution)null);
+				return;
+			case RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE:
+				setAvgValueDistance((PercentageDistribution)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.SPORADIC_ACTIVATION__MIN_VALUE:
+				return minValue != null;
+			case RTMGCPackage.SPORADIC_ACTIVATION__MAX_VALUE_DISTANCE:
+				return maxValueDistance != null;
+			case RTMGCPackage.SPORADIC_ACTIVATION__AVG_VALUE_DISTANCE:
+				return avgValueDistance != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SporadicActivationImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/TaskPropertiesImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/TaskPropertiesImpl.java
new file mode 100644
index 0000000..12511cf
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/TaskPropertiesImpl.java
@@ -0,0 +1,709 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm;
+import org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Task Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getCount <em>Count</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getLoad <em>Load</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getPerTaskGroup <em>Per Task Group</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getMta <em>Mta</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getDeadlineFactor <em>Deadline Factor</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getCallSequencesBetweenSchedulePoints <em>Call Sequences Between Schedule Points</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getCallGraphs <em>Call Graphs</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getMappingDetermination <em>Mapping Determination</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TaskPropertiesImpl#getPriorityDetermination <em>Priority Determination</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TaskPropertiesImpl extends MinimalEObjectImpl.Container implements TaskProperties {
+	/**
+	 * The cached value of the '{@link #getCount() <em>Count</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution count;
+
+	/**
+	 * The cached value of the '{@link #getLoad() <em>Load</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLoad()
+	 * @generated
+	 * @ordered
+	 */
+	protected PercentageDistribution load;
+
+	/**
+	 * The cached value of the '{@link #getPerTaskGroup() <em>Per Task Group</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPerTaskGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution perTaskGroup;
+
+	/**
+	 * The cached value of the '{@link #getMta() <em>Mta</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMta()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution mta;
+
+	/**
+	 * The cached value of the '{@link #getDeadlineFactor() <em>Deadline Factor</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDeadlineFactor()
+	 * @generated
+	 * @ordered
+	 */
+	protected DoubleDistribution deadlineFactor;
+
+	/**
+	 * The cached value of the '{@link #getCallSequencesBetweenSchedulePoints() <em>Call Sequences Between Schedule Points</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCallSequencesBetweenSchedulePoints()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerDistribution callSequencesBetweenSchedulePoints;
+
+	/**
+	 * The cached value of the '{@link #getCallGraphs() <em>Call Graphs</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCallGraphs()
+	 * @generated
+	 * @ordered
+	 */
+	protected CallGraphProperties callGraphs;
+
+	/**
+	 * The default value of the '{@link #getMappingDetermination() <em>Mapping Determination</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMappingDetermination()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ProcessMappingAlgorithms MAPPING_DETERMINATION_EDEFAULT = ProcessMappingAlgorithms.WFD;
+
+	/**
+	 * The cached value of the '{@link #getMappingDetermination() <em>Mapping Determination</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMappingDetermination()
+	 * @generated
+	 * @ordered
+	 */
+	protected ProcessMappingAlgorithms mappingDetermination = MAPPING_DETERMINATION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPriorityDetermination() <em>Priority Determination</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPriorityDetermination()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final PriorityDeterminationAlgorithm PRIORITY_DETERMINATION_EDEFAULT = PriorityDeterminationAlgorithm.RM;
+
+	/**
+	 * The cached value of the '{@link #getPriorityDetermination() <em>Priority Determination</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPriorityDetermination()
+	 * @generated
+	 * @ordered
+	 */
+	protected PriorityDeterminationAlgorithm priorityDetermination = PRIORITY_DETERMINATION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TaskPropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.TASK_PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getCount() {
+		return count;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCount(IntegerDistribution newCount, NotificationChain msgs) {
+		IntegerDistribution oldCount = count;
+		count = newCount;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__COUNT, oldCount, newCount);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCount(IntegerDistribution newCount) {
+		if (newCount != count) {
+			NotificationChain msgs = null;
+			if (count != null)
+				msgs = ((InternalEObject)count).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__COUNT, null, msgs);
+			if (newCount != null)
+				msgs = ((InternalEObject)newCount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__COUNT, null, msgs);
+			msgs = basicSetCount(newCount, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__COUNT, newCount, newCount));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PercentageDistribution getLoad() {
+		return load;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLoad(PercentageDistribution newLoad, NotificationChain msgs) {
+		PercentageDistribution oldLoad = load;
+		load = newLoad;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__LOAD, oldLoad, newLoad);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLoad(PercentageDistribution newLoad) {
+		if (newLoad != load) {
+			NotificationChain msgs = null;
+			if (load != null)
+				msgs = ((InternalEObject)load).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__LOAD, null, msgs);
+			if (newLoad != null)
+				msgs = ((InternalEObject)newLoad).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__LOAD, null, msgs);
+			msgs = basicSetLoad(newLoad, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__LOAD, newLoad, newLoad));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getPerTaskGroup() {
+		return perTaskGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPerTaskGroup(IntegerDistribution newPerTaskGroup, NotificationChain msgs) {
+		IntegerDistribution oldPerTaskGroup = perTaskGroup;
+		perTaskGroup = newPerTaskGroup;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP, oldPerTaskGroup, newPerTaskGroup);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPerTaskGroup(IntegerDistribution newPerTaskGroup) {
+		if (newPerTaskGroup != perTaskGroup) {
+			NotificationChain msgs = null;
+			if (perTaskGroup != null)
+				msgs = ((InternalEObject)perTaskGroup).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP, null, msgs);
+			if (newPerTaskGroup != null)
+				msgs = ((InternalEObject)newPerTaskGroup).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP, null, msgs);
+			msgs = basicSetPerTaskGroup(newPerTaskGroup, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP, newPerTaskGroup, newPerTaskGroup));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getMta() {
+		return mta;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMta(IntegerDistribution newMta, NotificationChain msgs) {
+		IntegerDistribution oldMta = mta;
+		mta = newMta;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__MTA, oldMta, newMta);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMta(IntegerDistribution newMta) {
+		if (newMta != mta) {
+			NotificationChain msgs = null;
+			if (mta != null)
+				msgs = ((InternalEObject)mta).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__MTA, null, msgs);
+			if (newMta != null)
+				msgs = ((InternalEObject)newMta).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__MTA, null, msgs);
+			msgs = basicSetMta(newMta, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__MTA, newMta, newMta));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleDistribution getDeadlineFactor() {
+		return deadlineFactor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDeadlineFactor(DoubleDistribution newDeadlineFactor, NotificationChain msgs) {
+		DoubleDistribution oldDeadlineFactor = deadlineFactor;
+		deadlineFactor = newDeadlineFactor;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR, oldDeadlineFactor, newDeadlineFactor);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDeadlineFactor(DoubleDistribution newDeadlineFactor) {
+		if (newDeadlineFactor != deadlineFactor) {
+			NotificationChain msgs = null;
+			if (deadlineFactor != null)
+				msgs = ((InternalEObject)deadlineFactor).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR, null, msgs);
+			if (newDeadlineFactor != null)
+				msgs = ((InternalEObject)newDeadlineFactor).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR, null, msgs);
+			msgs = basicSetDeadlineFactor(newDeadlineFactor, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR, newDeadlineFactor, newDeadlineFactor));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerDistribution getCallSequencesBetweenSchedulePoints() {
+		return callSequencesBetweenSchedulePoints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCallSequencesBetweenSchedulePoints(IntegerDistribution newCallSequencesBetweenSchedulePoints, NotificationChain msgs) {
+		IntegerDistribution oldCallSequencesBetweenSchedulePoints = callSequencesBetweenSchedulePoints;
+		callSequencesBetweenSchedulePoints = newCallSequencesBetweenSchedulePoints;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS, oldCallSequencesBetweenSchedulePoints, newCallSequencesBetweenSchedulePoints);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCallSequencesBetweenSchedulePoints(IntegerDistribution newCallSequencesBetweenSchedulePoints) {
+		if (newCallSequencesBetweenSchedulePoints != callSequencesBetweenSchedulePoints) {
+			NotificationChain msgs = null;
+			if (callSequencesBetweenSchedulePoints != null)
+				msgs = ((InternalEObject)callSequencesBetweenSchedulePoints).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS, null, msgs);
+			if (newCallSequencesBetweenSchedulePoints != null)
+				msgs = ((InternalEObject)newCallSequencesBetweenSchedulePoints).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS, null, msgs);
+			msgs = basicSetCallSequencesBetweenSchedulePoints(newCallSequencesBetweenSchedulePoints, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS, newCallSequencesBetweenSchedulePoints, newCallSequencesBetweenSchedulePoints));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CallGraphProperties getCallGraphs() {
+		return callGraphs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCallGraphs(CallGraphProperties newCallGraphs, NotificationChain msgs) {
+		CallGraphProperties oldCallGraphs = callGraphs;
+		callGraphs = newCallGraphs;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS, oldCallGraphs, newCallGraphs);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCallGraphs(CallGraphProperties newCallGraphs) {
+		if (newCallGraphs != callGraphs) {
+			NotificationChain msgs = null;
+			if (callGraphs != null)
+				msgs = ((InternalEObject)callGraphs).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS, null, msgs);
+			if (newCallGraphs != null)
+				msgs = ((InternalEObject)newCallGraphs).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS, null, msgs);
+			msgs = basicSetCallGraphs(newCallGraphs, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS, newCallGraphs, newCallGraphs));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProcessMappingAlgorithms getMappingDetermination() {
+		return mappingDetermination;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMappingDetermination(ProcessMappingAlgorithms newMappingDetermination) {
+		ProcessMappingAlgorithms oldMappingDetermination = mappingDetermination;
+		mappingDetermination = newMappingDetermination == null ? MAPPING_DETERMINATION_EDEFAULT : newMappingDetermination;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__MAPPING_DETERMINATION, oldMappingDetermination, mappingDetermination));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PriorityDeterminationAlgorithm getPriorityDetermination() {
+		return priorityDetermination;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPriorityDetermination(PriorityDeterminationAlgorithm newPriorityDetermination) {
+		PriorityDeterminationAlgorithm oldPriorityDetermination = priorityDetermination;
+		priorityDetermination = newPriorityDetermination == null ? PRIORITY_DETERMINATION_EDEFAULT : newPriorityDetermination;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TASK_PROPERTIES__PRIORITY_DETERMINATION, oldPriorityDetermination, priorityDetermination));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.TASK_PROPERTIES__COUNT:
+				return basicSetCount(null, msgs);
+			case RTMGCPackage.TASK_PROPERTIES__LOAD:
+				return basicSetLoad(null, msgs);
+			case RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP:
+				return basicSetPerTaskGroup(null, msgs);
+			case RTMGCPackage.TASK_PROPERTIES__MTA:
+				return basicSetMta(null, msgs);
+			case RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR:
+				return basicSetDeadlineFactor(null, msgs);
+			case RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS:
+				return basicSetCallSequencesBetweenSchedulePoints(null, msgs);
+			case RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS:
+				return basicSetCallGraphs(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.TASK_PROPERTIES__COUNT:
+				return getCount();
+			case RTMGCPackage.TASK_PROPERTIES__LOAD:
+				return getLoad();
+			case RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP:
+				return getPerTaskGroup();
+			case RTMGCPackage.TASK_PROPERTIES__MTA:
+				return getMta();
+			case RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR:
+				return getDeadlineFactor();
+			case RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS:
+				return getCallSequencesBetweenSchedulePoints();
+			case RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS:
+				return getCallGraphs();
+			case RTMGCPackage.TASK_PROPERTIES__MAPPING_DETERMINATION:
+				return getMappingDetermination();
+			case RTMGCPackage.TASK_PROPERTIES__PRIORITY_DETERMINATION:
+				return getPriorityDetermination();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.TASK_PROPERTIES__COUNT:
+				setCount((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__LOAD:
+				setLoad((PercentageDistribution)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP:
+				setPerTaskGroup((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__MTA:
+				setMta((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR:
+				setDeadlineFactor((DoubleDistribution)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS:
+				setCallSequencesBetweenSchedulePoints((IntegerDistribution)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS:
+				setCallGraphs((CallGraphProperties)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__MAPPING_DETERMINATION:
+				setMappingDetermination((ProcessMappingAlgorithms)newValue);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__PRIORITY_DETERMINATION:
+				setPriorityDetermination((PriorityDeterminationAlgorithm)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.TASK_PROPERTIES__COUNT:
+				setCount((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__LOAD:
+				setLoad((PercentageDistribution)null);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP:
+				setPerTaskGroup((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__MTA:
+				setMta((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR:
+				setDeadlineFactor((DoubleDistribution)null);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS:
+				setCallSequencesBetweenSchedulePoints((IntegerDistribution)null);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS:
+				setCallGraphs((CallGraphProperties)null);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__MAPPING_DETERMINATION:
+				setMappingDetermination(MAPPING_DETERMINATION_EDEFAULT);
+				return;
+			case RTMGCPackage.TASK_PROPERTIES__PRIORITY_DETERMINATION:
+				setPriorityDetermination(PRIORITY_DETERMINATION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.TASK_PROPERTIES__COUNT:
+				return count != null;
+			case RTMGCPackage.TASK_PROPERTIES__LOAD:
+				return load != null;
+			case RTMGCPackage.TASK_PROPERTIES__PER_TASK_GROUP:
+				return perTaskGroup != null;
+			case RTMGCPackage.TASK_PROPERTIES__MTA:
+				return mta != null;
+			case RTMGCPackage.TASK_PROPERTIES__DEADLINE_FACTOR:
+				return deadlineFactor != null;
+			case RTMGCPackage.TASK_PROPERTIES__CALL_SEQUENCES_BETWEEN_SCHEDULE_POINTS:
+				return callSequencesBetweenSchedulePoints != null;
+			case RTMGCPackage.TASK_PROPERTIES__CALL_GRAPHS:
+				return callGraphs != null;
+			case RTMGCPackage.TASK_PROPERTIES__MAPPING_DETERMINATION:
+				return mappingDetermination != MAPPING_DETERMINATION_EDEFAULT;
+			case RTMGCPackage.TASK_PROPERTIES__PRIORITY_DETERMINATION:
+				return priorityDetermination != PRIORITY_DETERMINATION_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (mappingDetermination: ");
+		result.append(mappingDetermination);
+		result.append(", priorityDetermination: ");
+		result.append(priorityDetermination);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TaskPropertiesImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/TriangleClockImpl.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/TriangleClockImpl.java
new file mode 100644
index 0000000..88af902
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/impl/TriangleClockImpl.java
@@ -0,0 +1,385 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.impl;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Triangle Clock</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl#getMin_start <em>Min start</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl#getMax_end <em>Max end</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl#getShift <em>Shift</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.TriangleClockImpl#getPeriod <em>Period</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TriangleClockImpl extends MinimalEObjectImpl.Container implements TriangleClock {
+	/**
+	 * The cached value of the '{@link #getMin_start() <em>Min start</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin_start()
+	 * @generated
+	 * @ordered
+	 */
+	protected DoubleDistribution min_start;
+
+	/**
+	 * The cached value of the '{@link #getMax_end() <em>Max end</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax_end()
+	 * @generated
+	 * @ordered
+	 */
+	protected DoubleDistribution max_end;
+
+	/**
+	 * The cached value of the '{@link #getShift() <em>Shift</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getShift()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerTimeDistribution shift;
+
+	/**
+	 * The cached value of the '{@link #getPeriod() <em>Period</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPeriod()
+	 * @generated
+	 * @ordered
+	 */
+	protected IntegerTimeDistribution period;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TriangleClockImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RTMGCPackage.Literals.TRIANGLE_CLOCK;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleDistribution getMin_start() {
+		return min_start;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMin_start(DoubleDistribution newMin_start, NotificationChain msgs) {
+		DoubleDistribution oldMin_start = min_start;
+		min_start = newMin_start;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__MIN_START, oldMin_start, newMin_start);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMin_start(DoubleDistribution newMin_start) {
+		if (newMin_start != min_start) {
+			NotificationChain msgs = null;
+			if (min_start != null)
+				msgs = ((InternalEObject)min_start).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__MIN_START, null, msgs);
+			if (newMin_start != null)
+				msgs = ((InternalEObject)newMin_start).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__MIN_START, null, msgs);
+			msgs = basicSetMin_start(newMin_start, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__MIN_START, newMin_start, newMin_start));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleDistribution getMax_end() {
+		return max_end;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMax_end(DoubleDistribution newMax_end, NotificationChain msgs) {
+		DoubleDistribution oldMax_end = max_end;
+		max_end = newMax_end;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__MAX_END, oldMax_end, newMax_end);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMax_end(DoubleDistribution newMax_end) {
+		if (newMax_end != max_end) {
+			NotificationChain msgs = null;
+			if (max_end != null)
+				msgs = ((InternalEObject)max_end).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__MAX_END, null, msgs);
+			if (newMax_end != null)
+				msgs = ((InternalEObject)newMax_end).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__MAX_END, null, msgs);
+			msgs = basicSetMax_end(newMax_end, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__MAX_END, newMax_end, newMax_end));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerTimeDistribution getShift() {
+		return shift;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetShift(IntegerTimeDistribution newShift, NotificationChain msgs) {
+		IntegerTimeDistribution oldShift = shift;
+		shift = newShift;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__SHIFT, oldShift, newShift);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setShift(IntegerTimeDistribution newShift) {
+		if (newShift != shift) {
+			NotificationChain msgs = null;
+			if (shift != null)
+				msgs = ((InternalEObject)shift).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__SHIFT, null, msgs);
+			if (newShift != null)
+				msgs = ((InternalEObject)newShift).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__SHIFT, null, msgs);
+			msgs = basicSetShift(newShift, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__SHIFT, newShift, newShift));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerTimeDistribution getPeriod() {
+		return period;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPeriod(IntegerTimeDistribution newPeriod, NotificationChain msgs) {
+		IntegerTimeDistribution oldPeriod = period;
+		period = newPeriod;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__PERIOD, oldPeriod, newPeriod);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPeriod(IntegerTimeDistribution newPeriod) {
+		if (newPeriod != period) {
+			NotificationChain msgs = null;
+			if (period != null)
+				msgs = ((InternalEObject)period).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__PERIOD, null, msgs);
+			if (newPeriod != null)
+				msgs = ((InternalEObject)newPeriod).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.TRIANGLE_CLOCK__PERIOD, null, msgs);
+			msgs = basicSetPeriod(newPeriod, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.TRIANGLE_CLOCK__PERIOD, newPeriod, newPeriod));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RTMGCPackage.TRIANGLE_CLOCK__MIN_START:
+				return basicSetMin_start(null, msgs);
+			case RTMGCPackage.TRIANGLE_CLOCK__MAX_END:
+				return basicSetMax_end(null, msgs);
+			case RTMGCPackage.TRIANGLE_CLOCK__SHIFT:
+				return basicSetShift(null, msgs);
+			case RTMGCPackage.TRIANGLE_CLOCK__PERIOD:
+				return basicSetPeriod(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RTMGCPackage.TRIANGLE_CLOCK__MIN_START:
+				return getMin_start();
+			case RTMGCPackage.TRIANGLE_CLOCK__MAX_END:
+				return getMax_end();
+			case RTMGCPackage.TRIANGLE_CLOCK__SHIFT:
+				return getShift();
+			case RTMGCPackage.TRIANGLE_CLOCK__PERIOD:
+				return getPeriod();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RTMGCPackage.TRIANGLE_CLOCK__MIN_START:
+				setMin_start((DoubleDistribution)newValue);
+				return;
+			case RTMGCPackage.TRIANGLE_CLOCK__MAX_END:
+				setMax_end((DoubleDistribution)newValue);
+				return;
+			case RTMGCPackage.TRIANGLE_CLOCK__SHIFT:
+				setShift((IntegerTimeDistribution)newValue);
+				return;
+			case RTMGCPackage.TRIANGLE_CLOCK__PERIOD:
+				setPeriod((IntegerTimeDistribution)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.TRIANGLE_CLOCK__MIN_START:
+				setMin_start((DoubleDistribution)null);
+				return;
+			case RTMGCPackage.TRIANGLE_CLOCK__MAX_END:
+				setMax_end((DoubleDistribution)null);
+				return;
+			case RTMGCPackage.TRIANGLE_CLOCK__SHIFT:
+				setShift((IntegerTimeDistribution)null);
+				return;
+			case RTMGCPackage.TRIANGLE_CLOCK__PERIOD:
+				setPeriod((IntegerTimeDistribution)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RTMGCPackage.TRIANGLE_CLOCK__MIN_START:
+				return min_start != null;
+			case RTMGCPackage.TRIANGLE_CLOCK__MAX_END:
+				return max_end != null;
+			case RTMGCPackage.TRIANGLE_CLOCK__SHIFT:
+				return shift != null;
+			case RTMGCPackage.TRIANGLE_CLOCK__PERIOD:
+				return period != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TriangleClockImpl
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/util/RTMGCAdapterFactory.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/util/RTMGCAdapterFactory.java
new file mode 100644
index 0000000..94ba61b
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/util/RTMGCAdapterFactory.java
@@ -0,0 +1,472 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.util;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage
+ * @generated
+ */
+public class RTMGCAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static RTMGCPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RTMGCAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = RTMGCPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RTMGCSwitch<Adapter> modelSwitch =
+		new RTMGCSwitch<Adapter>() {
+			@Override
+			public Adapter caseRTMGC(RTMGC object) {
+				return createRTMGCAdapter();
+			}
+			@Override
+			public Adapter caseGeneration(Generation object) {
+				return createGenerationAdapter();
+			}
+			@Override
+			public Adapter caseActivationProperties(ActivationProperties object) {
+				return createActivationPropertiesAdapter();
+			}
+			@Override
+			public Adapter caseActivation(Activation object) {
+				return createActivationAdapter();
+			}
+			@Override
+			public Adapter casePeriodicActivation(PeriodicActivation object) {
+				return createPeriodicActivationAdapter();
+			}
+			@Override
+			public Adapter casePeriodicTriangleShift(PeriodicTriangleShift object) {
+				return createPeriodicTriangleShiftAdapter();
+			}
+			@Override
+			public Adapter caseTriangleClock(TriangleClock object) {
+				return createTriangleClockAdapter();
+			}
+			@Override
+			public Adapter caseSporadicActivation(SporadicActivation object) {
+				return createSporadicActivationAdapter();
+			}
+			@Override
+			public Adapter caseRecurrence(Recurrence object) {
+				return createRecurrenceAdapter();
+			}
+			@Override
+			public Adapter caseLabelProperties(LabelProperties object) {
+				return createLabelPropertiesAdapter();
+			}
+			@Override
+			public Adapter caseRunnableProperties(RunnableProperties object) {
+				return createRunnablePropertiesAdapter();
+			}
+			@Override
+			public Adapter caseSemaphoreProperties(SemaphoreProperties object) {
+				return createSemaphorePropertiesAdapter();
+			}
+			@Override
+			public Adapter caseSemaphoreAccessProperties(SemaphoreAccessProperties object) {
+				return createSemaphoreAccessPropertiesAdapter();
+			}
+			@Override
+			public Adapter caseTaskProperties(TaskProperties object) {
+				return createTaskPropertiesAdapter();
+			}
+			@Override
+			public Adapter caseCallGraphProperties(CallGraphProperties object) {
+				return createCallGraphPropertiesAdapter();
+			}
+			@Override
+			public Adapter caseDistribution(Distribution object) {
+				return createDistributionAdapter();
+			}
+			@Override
+			public Adapter caseIntegerDistribution(IntegerDistribution object) {
+				return createIntegerDistributionAdapter();
+			}
+			@Override
+			public Adapter caseIntegerTimeDistribution(IntegerTimeDistribution object) {
+				return createIntegerTimeDistributionAdapter();
+			}
+			@Override
+			public Adapter casePercentageDistribution(PercentageDistribution object) {
+				return createPercentageDistributionAdapter();
+			}
+			@Override
+			public Adapter caseDoubleDistribution(DoubleDistribution object) {
+				return createDoubleDistributionAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.RTMGC <em>RTMGC</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGC
+	 * @generated
+	 */
+	public Adapter createRTMGCAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Generation <em>Generation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Generation
+	 * @generated
+	 */
+	public Adapter createGenerationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties <em>Activation Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties
+	 * @generated
+	 */
+	public Adapter createActivationPropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Activation <em>Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Activation
+	 * @generated
+	 */
+	public Adapter createActivationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation <em>Periodic Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation
+	 * @generated
+	 */
+	public Adapter createPeriodicActivationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift <em>Periodic Triangle Shift</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift
+	 * @generated
+	 */
+	public Adapter createPeriodicTriangleShiftAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock <em>Triangle Clock</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock
+	 * @generated
+	 */
+	public Adapter createTriangleClockAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation <em>Sporadic Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation
+	 * @generated
+	 */
+	public Adapter createSporadicActivationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Recurrence <em>Recurrence</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Recurrence
+	 * @generated
+	 */
+	public Adapter createRecurrenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties <em>Label Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties
+	 * @generated
+	 */
+	public Adapter createLabelPropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties <em>Runnable Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties
+	 * @generated
+	 */
+	public Adapter createRunnablePropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties <em>Semaphore Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties
+	 * @generated
+	 */
+	public Adapter createSemaphorePropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties <em>Semaphore Access Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties
+	 * @generated
+	 */
+	public Adapter createSemaphoreAccessPropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties <em>Task Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties
+	 * @generated
+	 */
+	public Adapter createTaskPropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties <em>Call Graph Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.CallGraphProperties
+	 * @generated
+	 */
+	public Adapter createCallGraphPropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.Distribution <em>Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.Distribution
+	 * @generated
+	 */
+	public Adapter createDistributionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution <em>Integer Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution
+	 * @generated
+	 */
+	public Adapter createIntegerDistributionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution <em>Integer Time Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution
+	 * @generated
+	 */
+	public Adapter createIntegerTimeDistributionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution <em>Percentage Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution
+	 * @generated
+	 */
+	public Adapter createPercentageDistributionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution <em>Double Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution
+	 * @generated
+	 */
+	public Adapter createDoubleDistributionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //RTMGCAdapterFactory
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/util/RTMGCSwitch.java b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/util/RTMGCSwitch.java
new file mode 100644
index 0000000..ea92389
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.configuration/src-gen/org/eclipse/app4mc/amalthea/generator/configuration/util/RTMGCSwitch.java
@@ -0,0 +1,531 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *     Generated using Eclipse EMF
+ * 
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.configuration.util;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage
+ * @generated
+ */
+public class RTMGCSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static RTMGCPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RTMGCSwitch() {
+		if (modelPackage == null) {
+			modelPackage = RTMGCPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case RTMGCPackage.RTMGC: {
+				RTMGC rtmgc = (RTMGC)theEObject;
+				T result = caseRTMGC(rtmgc);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.GENERATION: {
+				Generation generation = (Generation)theEObject;
+				T result = caseGeneration(generation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.ACTIVATION_PROPERTIES: {
+				ActivationProperties activationProperties = (ActivationProperties)theEObject;
+				T result = caseActivationProperties(activationProperties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.ACTIVATION: {
+				Activation activation = (Activation)theEObject;
+				T result = caseActivation(activation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.PERIODIC_ACTIVATION: {
+				PeriodicActivation periodicActivation = (PeriodicActivation)theEObject;
+				T result = casePeriodicActivation(periodicActivation);
+				if (result == null) result = caseActivation(periodicActivation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.PERIODIC_TRIANGLE_SHIFT: {
+				PeriodicTriangleShift periodicTriangleShift = (PeriodicTriangleShift)theEObject;
+				T result = casePeriodicTriangleShift(periodicTriangleShift);
+				if (result == null) result = casePeriodicActivation(periodicTriangleShift);
+				if (result == null) result = caseActivation(periodicTriangleShift);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.TRIANGLE_CLOCK: {
+				TriangleClock triangleClock = (TriangleClock)theEObject;
+				T result = caseTriangleClock(triangleClock);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.SPORADIC_ACTIVATION: {
+				SporadicActivation sporadicActivation = (SporadicActivation)theEObject;
+				T result = caseSporadicActivation(sporadicActivation);
+				if (result == null) result = caseActivation(sporadicActivation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.RECURRENCE: {
+				Recurrence recurrence = (Recurrence)theEObject;
+				T result = caseRecurrence(recurrence);
+				if (result == null) result = caseIntegerTimeDistribution(recurrence);
+				if (result == null) result = caseIntegerDistribution(recurrence);
+				if (result == null) result = caseDistribution(recurrence);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.LABEL_PROPERTIES: {
+				LabelProperties labelProperties = (LabelProperties)theEObject;
+				T result = caseLabelProperties(labelProperties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.RUNNABLE_PROPERTIES: {
+				RunnableProperties runnableProperties = (RunnableProperties)theEObject;
+				T result = caseRunnableProperties(runnableProperties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.SEMAPHORE_PROPERTIES: {
+				SemaphoreProperties semaphoreProperties = (SemaphoreProperties)theEObject;
+				T result = caseSemaphoreProperties(semaphoreProperties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES: {
+				SemaphoreAccessProperties semaphoreAccessProperties = (SemaphoreAccessProperties)theEObject;
+				T result = caseSemaphoreAccessProperties(semaphoreAccessProperties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.TASK_PROPERTIES: {
+				TaskProperties taskProperties = (TaskProperties)theEObject;
+				T result = caseTaskProperties(taskProperties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.CALL_GRAPH_PROPERTIES: {
+				CallGraphProperties callGraphProperties = (CallGraphProperties)theEObject;
+				T result = caseCallGraphProperties(callGraphProperties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.DISTRIBUTION: {
+				Distribution distribution = (Distribution)theEObject;
+				T result = caseDistribution(distribution);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.INTEGER_DISTRIBUTION: {
+				IntegerDistribution integerDistribution = (IntegerDistribution)theEObject;
+				T result = caseIntegerDistribution(integerDistribution);
+				if (result == null) result = caseDistribution(integerDistribution);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.INTEGER_TIME_DISTRIBUTION: {
+				IntegerTimeDistribution integerTimeDistribution = (IntegerTimeDistribution)theEObject;
+				T result = caseIntegerTimeDistribution(integerTimeDistribution);
+				if (result == null) result = caseIntegerDistribution(integerTimeDistribution);
+				if (result == null) result = caseDistribution(integerTimeDistribution);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.PERCENTAGE_DISTRIBUTION: {
+				PercentageDistribution percentageDistribution = (PercentageDistribution)theEObject;
+				T result = casePercentageDistribution(percentageDistribution);
+				if (result == null) result = caseDistribution(percentageDistribution);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RTMGCPackage.DOUBLE_DISTRIBUTION: {
+				DoubleDistribution doubleDistribution = (DoubleDistribution)theEObject;
+				T result = caseDoubleDistribution(doubleDistribution);
+				if (result == null) result = caseDistribution(doubleDistribution);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>RTMGC</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>RTMGC</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRTMGC(RTMGC object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Generation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Generation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGeneration(Generation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Activation Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Activation Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseActivationProperties(ActivationProperties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Activation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Activation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseActivation(Activation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Periodic Activation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Periodic Activation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePeriodicActivation(PeriodicActivation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Periodic Triangle Shift</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Periodic Triangle Shift</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePeriodicTriangleShift(PeriodicTriangleShift object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Triangle Clock</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Triangle Clock</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTriangleClock(TriangleClock object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Sporadic Activation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Sporadic Activation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSporadicActivation(SporadicActivation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Recurrence</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Recurrence</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRecurrence(Recurrence object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Label Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLabelProperties(LabelProperties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Runnable Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Runnable Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRunnableProperties(RunnableProperties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Semaphore Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Semaphore Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSemaphoreProperties(SemaphoreProperties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Semaphore Access Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Semaphore Access Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSemaphoreAccessProperties(SemaphoreAccessProperties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Task Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Task Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTaskProperties(TaskProperties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Call Graph Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Call Graph Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCallGraphProperties(CallGraphProperties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Distribution</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDistribution(Distribution object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integer Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Integer Distribution</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIntegerDistribution(IntegerDistribution object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integer Time Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Integer Time Distribution</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIntegerTimeDistribution(IntegerTimeDistribution object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Percentage Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Percentage Distribution</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePercentageDistribution(PercentageDistribution object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Double Distribution</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Double Distribution</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDoubleDistribution(DoubleDistribution object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //RTMGCSwitch
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/.classpath b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/.gitignore b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.gitignore
new file mode 100644
index 0000000..934e0e0
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/target
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/.project b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.project
new file mode 100644
index 0000000..75b47e2
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.app4mc.amalthea.generator.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.app4mc.amalthea.generator.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0eca855
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC Amalthea Model Generator UI
+Bundle-SymbolicName: org.eclipse.app4mc.amalthea.generator.ui;singleton:=true
+Bundle-Version: 0.8.1.qualifier
+Bundle-Activator: org.eclipse.app4mc.amalthea.generator.ui.Activator
+Bundle-Vendor: Eclipse.org
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.equinox.common,
+ org.eclipse.jface,
+ org.eclipse.swt
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.app4mc.amalthea.generator,
+ org.eclipse.app4mc.amalthea.generator.configuration,
+ org.eclipse.core.resources,
+ org.eclipse.emf.common.util,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.resource,
+ org.eclipse.emf.ecore.resource.impl,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.emf.ecore.xmi.impl,
+ org.eclipse.ui.dialogs
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/build.properties b/plugins/org.eclipse.app4mc.amalthea.generator.ui/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/icons/amalthea.gif b/plugins/org.eclipse.app4mc.amalthea.generator.ui/icons/amalthea.gif
new file mode 100644
index 0000000..f7e26f4
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/icons/amalthea.gif
Binary files differ
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/plugin.xml b/plugins/org.eclipse.app4mc.amalthea.generator.ui/plugin.xml
new file mode 100644
index 0000000..77f58d7
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/plugin.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.eclipse.app4mc.amalthea.generator.ui.UserInterface"
+            id="org.eclipse.app4mc.amalthea.generator.ui.ModelGenerator"
+            name="Model Generator">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="toolbar:org.eclipse.ui.main.toolbar">
+         <toolbar
+               id="org.eclipse.app4mc.amalthea.generator.ui.toolbar1">
+            <command
+                  commandId="org.eclipse.app4mc.amalthea.generator.ui.ModelGenerator"
+                  icon="icons/amalthea.gif"
+                  label="Start Model Generator"
+                  style="push">
+            </command>
+         </toolbar>
+      </menuContribution>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/pom.xml b/plugins/org.eclipse.app4mc.amalthea.generator.ui/pom.xml
new file mode 100644
index 0000000..b6214b6
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<relativePath>../../build/org.eclipse.app4mc.build/pom.xml</relativePath>
+		<groupId>org.eclipse.app4mc.build</groupId>
+		<artifactId>parent</artifactId>
+		<version>0.8.1-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.app4mc.amalthea.generator.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ActivationsConfigurationHelper.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ActivationsConfigurationHelper.java
new file mode 100644
index 0000000..e12260a
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ActivationsConfigurationHelper.java
@@ -0,0 +1,241 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.math.BigInteger;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.ActivationProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicActivation;
+import org.eclipse.app4mc.amalthea.generator.configuration.PeriodicTriangleShift;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.Recurrence;
+import org.eclipse.app4mc.amalthea.generator.configuration.SporadicActivation;
+import org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit;
+import org.eclipse.app4mc.amalthea.generator.configuration.TriangleClock;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+
+public class ActivationsConfigurationHelper implements IConfigurationHelper {
+	
+	private Spinner periodicProbabilitySpinner;
+	private IntegerTimeDistributionGroup periodicOffset;
+	private RecurrenceGroup periodicRecurrence;
+
+	private Spinner triangleProbabilitySpinner;
+	private IntegerTimeDistributionGroup triangleOffset;
+	private RecurrenceGroup triangleRecurrence;
+	
+	private Spinner sporadicProbabilitySpinner;
+	private IntegerTimeDistributionGroup sporadicMin;
+	private PercentageDistributionGroup sporadicAvg;
+	private PercentageDistributionGroup sporadicMax;
+
+	public void addTabItem(TabFolder parent) {
+		TabItem tab = new TabItem(parent, SWT.NONE);
+		tab.setText("Activations");
+		
+		ScrolledComposite sc = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL);
+		
+		Composite container = new Composite(sc, SWT.NONE);
+		container.setLayout(new GridLayout());
+		GridLayout gridLayout = new GridLayout();
+	    container.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+		
+	    sc.setExpandVertical(true);
+	    sc.setExpandHorizontal(true);
+		
+	    // periodic
+	    Label label = new Label(container, SWT.NONE);
+	    label.setText("Periodic Activations [%]");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    periodicProbabilitySpinner = new Spinner(container, SWT.NONE);
+	    periodicProbabilitySpinner.setMinimum(0);
+	    periodicProbabilitySpinner.setMaximum(100);
+	    periodicProbabilitySpinner.setIncrement(1);
+	    periodicProbabilitySpinner.setSelection(100);
+	    
+	    this.periodicOffset = new IntegerTimeDistributionGroup(container, "Offset", 0, 5, 50, TimeUnit.MS);
+	    this.periodicRecurrence = new RecurrenceGroup(container, "Recurrence", 1, 10, 1000, TimeUnit.MS);	    
+	    
+	    // periodic triangle shift
+	    label = new Label(container, SWT.NONE);
+	    label.setText("");
+	    GridData gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 2;
+		gridData.heightHint = 30;
+		label.setLayoutData(gridData);
+	    label = new Label(container, SWT.NONE);
+	    label.setText("Periodic Triangle Shifts [%]");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    triangleProbabilitySpinner = new Spinner(container, SWT.NONE);
+	    triangleProbabilitySpinner.setMinimum(0);
+	    triangleProbabilitySpinner.setMaximum(Integer.MAX_VALUE);
+	    triangleProbabilitySpinner.setIncrement(1);
+	    triangleProbabilitySpinner.setSelection(0);
+	    
+	    this.triangleRecurrence = new RecurrenceGroup(container, "Recurrence");
+	    this.triangleOffset = new IntegerTimeDistributionGroup(container, "Offset");
+	    
+	    // sporadic
+	    label = new Label(container, SWT.NONE);
+	    label.setText("");
+	    gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 2;
+		gridData.heightHint = 30;
+		label.setLayoutData(gridData);
+	    label = new Label(container, SWT.NONE);
+	    label.setText("Sporadic Activations  [%]");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    sporadicProbabilitySpinner = new Spinner(container, SWT.NONE);
+	    sporadicProbabilitySpinner.setMinimum(0);
+	    sporadicProbabilitySpinner.setMaximum(Integer.MAX_VALUE);
+	    sporadicProbabilitySpinner.setIncrement(1);
+	    sporadicProbabilitySpinner.setSelection(0);
+	    
+	    // min value
+	    this.sporadicMin = new IntegerTimeDistributionGroup(container, "Minimum Value");
+	    this.sporadicAvg = new PercentageDistributionGroup(container, "Average Distance");
+	    this.sporadicMax = new PercentageDistributionGroup(container, "Maximum Distance");
+	    
+	    sc.setContent(container);
+		sc.setMinSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+	    tab.setControl(sc);;
+	}
+
+	public void loadConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null != generation) {
+				ActivationProperties activations = generation.getActivations();
+				if(null != activations) {
+					PeriodicActivation periodic = activations.getPeriodicActivation();
+					if(null != periodic) {
+						this.periodicProbabilitySpinner.setSelection(periodic.getAppearanceProbability().intValue());
+						IntegerTimeDistribution offset = periodic.getOffset();
+						this.periodicOffset.set(offset);
+						Recurrence recurrence = periodic.getRecurrence();
+						this.periodicRecurrence.set(recurrence);
+					}
+					PeriodicTriangleShift triangle = activations.getPeriodicTriangleShift();
+					if(null != triangle) {
+						this.triangleProbabilitySpinner.setSelection(triangle.getAppearanceProbability().intValue());
+						IntegerTimeDistribution offset = triangle.getOffset();
+						this.triangleOffset.set(offset);
+						Recurrence recurrence = triangle.getRecurrence();
+						this.triangleRecurrence.set(recurrence);
+
+						TriangleClock clock = triangle.getClock();
+						if(null != clock) {
+							//TODO:
+						}
+					}
+					SporadicActivation sporadic = activations.getSporadicActivation();
+					if(null != sporadic) {
+						this.sporadicProbabilitySpinner.setSelection(sporadic.getAppearanceProbability().intValue());
+						IntegerTimeDistribution min = sporadic.getMinValue();
+						this.sporadicMin.set(min);
+						PercentageDistribution avg = sporadic.getAvgValueDistance();
+						this.sporadicAvg.set(avg);
+						PercentageDistribution max = sporadic.getMaxValueDistance();
+						this.sporadicMax.set(max);
+					}
+				}
+			}
+		}
+	}
+	
+	/*
+	 * Update configuration values with the values from the UI widgets
+	 */
+	public void updateConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null == generation) {
+				generation = RTMGCFactory.eINSTANCE.createGeneration();
+				rtmgc.setGeneration(generation);
+			}
+			ActivationProperties activations = generation.getActivations();
+			if(null == activations) {
+				activations = RTMGCFactory.eINSTANCE.createActivationProperties();
+				generation.setActivations(activations);
+			}
+			updatePeriodic(activations);
+			updateTriangle(activations);
+			updateSporadic(activations);
+		}
+	}
+	
+	private void updatePeriodic(ActivationProperties activations) {
+		PeriodicActivation periodic = activations.getPeriodicActivation();
+		if(null == periodic) {
+			periodic = RTMGCFactory.eINSTANCE.createPeriodicActivation();
+			activations.setPeriodicActivation(periodic);
+		}
+		periodic.setAppearanceProbability(BigInteger.valueOf(this.periodicProbabilitySpinner.getSelection()));
+		IntegerTimeDistribution offset = this.periodicOffset.get();
+		periodic.setOffset(offset);
+		Recurrence recurrence = this.periodicRecurrence.get();
+		periodic.setRecurrence(recurrence);
+	}
+		
+	private void updateTriangle(ActivationProperties activations) {
+		PeriodicTriangleShift triangle = activations.getPeriodicTriangleShift();
+		if(null == triangle) {
+			triangle = RTMGCFactory.eINSTANCE.createPeriodicTriangleShift();
+			activations.setPeriodicTriangleShift(triangle);
+		}
+		triangle.setAppearanceProbability(BigInteger.valueOf(this.triangleProbabilitySpinner.getSelection()));
+		IntegerTimeDistribution offset = this.triangleOffset.get();
+		triangle.setOffset(offset);
+		Recurrence recurrence = this.triangleRecurrence.get();
+		triangle.setRecurrence(recurrence);
+		
+		TriangleClock clock = triangle.getClock();
+		if(null == clock) {
+			//TODO:
+		}
+	}
+	
+	private void updateSporadic(final ActivationProperties activations) {
+		SporadicActivation sporadic = activations.getSporadicActivation();
+		if(null == sporadic) {
+			sporadic = RTMGCFactory.eINSTANCE.createSporadicActivation();
+			activations.setSporadicActivation(sporadic);
+		}
+		sporadic.setAppearanceProbability(BigInteger.valueOf(this.sporadicProbabilitySpinner.getSelection()));
+		IntegerTimeDistribution min = this.sporadicMin.get();
+		sporadic.setMinValue(min);
+		PercentageDistribution avg = this.sporadicAvg.get();
+		sporadic.setAvgValueDistance(avg);
+		PercentageDistribution max = this.sporadicMax.get();
+		sporadic.setMaxValueDistance(max);
+	}
+
+	@Override
+	public boolean isValid() {
+		return true;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/Activator.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/Activator.java
new file mode 100644
index 0000000..0bfe3c9
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.app4mc.amalthea.generator.ui"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationPage.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationPage.java
new file mode 100644
index 0000000..dbbc202
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationPage.java
@@ -0,0 +1,140 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.graphics.Point;
+
+public class ConfigurationPage extends WizardPage {
+	
+	private final GeneralConfigurationHelper generalHelper = new GeneralConfigurationHelper(this); 
+	private final ActivationsConfigurationHelper activationsHelper = new ActivationsConfigurationHelper();
+	private final LabelsConfigurationHelper labelsHelper = new LabelsConfigurationHelper();
+	private final RunnablesConfigurationHelper runnablesHelper = new RunnablesConfigurationHelper();
+	private final SemaphoresConfigurationHelper semaphoresHelper = new SemaphoresConfigurationHelper();
+	private final TasksConfigurationHelper tasksHelper = new TasksConfigurationHelper();
+	
+	protected ConfigurationPage() {
+		super("Configuration");
+		setTitle("Configuration");
+        setDescription("Configure the settings for the random model generation");
+	}
+
+	@Override
+	public void createControl(Composite parent) {
+		TabFolder folder = new TabFolder(parent, SWT.NONE);
+		
+		this.generalHelper.addTabItem(folder);
+		this.activationsHelper.addTabItem(folder);
+		this.labelsHelper.addTabItem(folder);
+		this.runnablesHelper.addTabItem(folder);
+		this.semaphoresHelper.addTabItem(folder);
+		this.tasksHelper.addTabItem(folder);
+		
+		// avoid that dialog gets too big
+	    Point size = getShell().computeSize(510,540);
+	    getShell().setSize(size);
+		
+        setControl(folder);
+	}
+	
+	@Override
+	public boolean isPageComplete() {
+		boolean result = true;
+		result &= this.activationsHelper.isValid();
+		result &= this.generalHelper.isValid();
+		result &= this.labelsHelper.isValid();
+		result &= this.runnablesHelper.isValid();
+		result &= this.semaphoresHelper.isValid();
+		result &= this.tasksHelper.isValid();
+		return result;
+	}
+	
+	@Override
+	public boolean canFlipToNextPage() {
+		return this.isPageComplete();
+	}
+	
+	/*
+	 * Fills the controls with data from a configuration file 
+	 */
+	public void loadConfiguration(File file) {
+		if(null != file) {
+			// load values
+			// initialise the model
+			RTMGCPackage.eINSTANCE.eClass();
+			// register the XMI resource factory for the rte extension
+			XMIResource.Factory.Registry reg = XMIResource.Factory.Registry.INSTANCE;
+			Map<String, Object> m = reg.getExtensionToFactoryMap();
+			m.put("rtmgc", new XMIResourceFactoryImpl());
+			// Obtain a new resource set
+			XMIResourceFactoryImpl resSet = new XMIResourceFactoryImpl();
+			// Get the resource
+			XMIResourceImpl resource = (XMIResourceImpl)resSet.createResource(URI.createURI(file.getAbsolutePath(), true));
+			// Get the first model element and cast it to the right type, in my
+			// example everything is hierarchical included in this first node
+			try {
+				resource.load(new FileInputStream(file), new HashMap<Object,Object>());
+			} catch (FileNotFoundException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			} catch (IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+			// get the root element
+			EObject object = resource.getContents().get(0);
+			if(object instanceof RTMGC) {
+				RTMGC rtmgc = (RTMGC) object;
+				this.activationsHelper.loadConfiguration(rtmgc);
+				this.generalHelper.loadConfiguration(rtmgc);
+				this.labelsHelper.loadConfiguration(rtmgc);
+				this.runnablesHelper.loadConfiguration(rtmgc);
+				this.semaphoresHelper.loadConfiguration(rtmgc);
+				this.tasksHelper.loadConfiguration(rtmgc);
+			}
+		}
+	}
+	
+	public RTMGC getConfiguration() {
+		RTMGC rtmgc = RTMGCFactory.eINSTANCE.createRTMGC();
+		this.activationsHelper.updateConfiguration(rtmgc);
+		this.generalHelper.updateConfiguration(rtmgc);
+		this.labelsHelper.updateConfiguration(rtmgc);
+		this.runnablesHelper.updateConfiguration(rtmgc);
+		this.semaphoresHelper.updateConfiguration(rtmgc);
+		this.tasksHelper.updateConfiguration(rtmgc);
+		
+		return rtmgc;
+	}
+
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationWizard.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationWizard.java
new file mode 100644
index 0000000..73836f3
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationWizard.java
@@ -0,0 +1,147 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.wizard.Wizard;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.app4mc.amalthea.generator.ModelGenerator;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+public class ConfigurationWizard extends Wizard implements IRunnableWithProgress {
+	
+	private ImportPage importPage;
+	private ConfigurationPage configurationPage;
+	private ExportPage exportPage;
+	private boolean canFinish = false;
+	private RTMGC rtmgc = null;
+
+	public ConfigurationWizard() {
+        super();
+        setNeedsProgressMonitor(true);
+	}
+	
+	public void setCanFinish(boolean canFinish) {
+		this.canFinish = canFinish;
+	}
+	
+	@Override
+    public String getWindowTitle() {
+		return "AMALTHEA Model Generator";
+    }
+	
+	@Override
+    public void addPages() {
+		importPage = new ImportPage();
+		configurationPage = new ConfigurationPage();
+		exportPage = new ExportPage();
+		addPage(importPage);
+		addPage(configurationPage);
+		addPage(exportPage);
+    }
+	
+	@Override
+	public boolean canFinish() {
+		return this.canFinish & configurationPage.isPageComplete();
+	}
+	
+	@Override
+	public boolean performFinish() {
+		boolean result = true;
+		this.rtmgc = this.configurationPage.getConfiguration();
+		try {
+			getContainer().run(true, true, this);
+		} catch (Exception e) {
+			e.printStackTrace();
+			result = false;
+		}
+		
+		return result;
+	}
+
+	@Override
+	public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+		// determine how many models to be generated
+		int amount = this.rtmgc.getGeneration().getCount().intValue();
+		monitor.beginTask("Model Generation", amount + 1);
+		// export configuration
+		if(true == this.exportPage.doExport()) {
+			monitor.subTask("Export Configuration");
+			File file = this.exportPage.getFile();
+			exportConfiguration(file, this.rtmgc);
+			monitor.worked(1);
+		}
+		
+		// start model generation
+		ModelGenerator modelGenerator = new ModelGenerator();
+		try {
+			modelGenerator.run(this.rtmgc, monitor);
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+//		for (int i=0; i<amount;i++) {
+//			monitor.internalWorked(1);
+//			Thread.sleep(2000);
+//			if (monitor.isCanceled()) {
+//				break;
+//			}
+//		}
+	}
+	
+	private void exportConfiguration(final File file, RTMGC rtmgc) {
+		file.getParentFile().mkdirs();
+		try {
+			file.createNewFile();
+
+			final URI uri = URI.createFileURI(file.getAbsolutePath());
+			final ResourceSet resourceSet = new ResourceSetImpl();
+
+			final Resource outResource = resourceSet.createResource(uri);
+			outResource.getContents().clear();
+			outResource.getContents().add(rtmgc);
+			
+			// fixXmlnsAndXsiSchemaLocation(documentRoot);
+
+			final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+			saveOptions.put(XMLResource.OPTION_KEEP_DEFAULT_CONTENT, Boolean.TRUE);
+			saveOptions.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+			saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
+			saveOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+			saveOptions.put(XMLResource.XML_SCHEMA_URI, RTMGCPackage.eNS_PREFIX);
+
+			outResource.save(saveOptions);
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e1) {
+            e1.printStackTrace();
+        }
+	}
+	
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationWizardDialog.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationWizardDialog.java
new file mode 100644
index 0000000..b20ccc9
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ConfigurationWizardDialog.java
@@ -0,0 +1,48 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.jface.wizard.IWizardContainer;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Shell;
+
+public class ConfigurationWizardDialog extends WizardDialog {
+
+	public ConfigurationWizardDialog(Shell parentShell) {
+		super(parentShell, new ConfigurationWizard());
+		setShellStyle(SWT.CLOSE | SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL | SWT.RESIZE);
+	}
+	
+	// page control for finish button
+	@Override
+	protected void buttonPressed(int buttonId) {
+		super.buttonPressed(buttonId);
+		
+		IWizardPage wizardPage = getCurrentPage();
+		boolean canFinish = true;
+		if(wizardPage instanceof ImportPage) {
+			// disable finish Button
+			canFinish = false;
+		}
+		ConfigurationWizard wizard = (ConfigurationWizard) getWizard();
+		wizard.setCanFinish(canFinish);
+		IWizardContainer container = wizard.getContainer();
+		if(null != container) {
+			wizard.getContainer().updateButtons();
+		}
+	}
+	
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/DistributionGroup.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/DistributionGroup.java
new file mode 100644
index 0000000..1096d77
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/DistributionGroup.java
@@ -0,0 +1,136 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Spinner;
+
+public abstract class DistributionGroup implements Listener {
+	
+	protected final Group group;
+	protected final Spinner minSpinner;
+	protected final Label minLabel;
+	protected final Spinner avgSpinner;
+	protected final Label avgLabel;
+	protected final Spinner maxSpinner;
+	protected final Label maxLabel;
+	protected final Combo distributionCombo;
+	
+	public DistributionGroup(Composite parent, String name) {
+		this.group = new Group(parent, SWT.NONE);
+		this.group.setText(name);
+	    GridLayout gridLayout = new GridLayout();
+	    this.group.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+	    GridData gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 2;
+		this.group.setLayoutData(gridData);
+		
+		Label label = new Label(this.group, SWT.NONE);
+	    label.setText("Distribution Type");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    this.distributionCombo = new Combo(this.group, SWT.READ_ONLY);
+	    this.distributionCombo.setItems(Arrays.stream(DistributionType.values()).map(Enum::name).toArray(String[]::new));
+	    this.distributionCombo.select(0);
+	    this.distributionCombo.addListener(SWT.Selection, this);
+	    
+		this.minLabel = new Label(this.group, SWT.NONE);
+		this.minLabel.setText("Minimum");
+		this.minLabel.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    this.minSpinner = new Spinner(this.group, SWT.NONE);
+	    this.minSpinner.setMinimum(0);
+	    this.minSpinner.setSelection(0);
+	    
+	    this.avgLabel = new Label(this.group, SWT.NONE);
+	    this.avgLabel.setText("Average");
+	    this.avgLabel.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    this.avgSpinner = new Spinner(this.group, SWT.NONE);
+	    this.avgSpinner.setMinimum(0);
+	    this.avgSpinner.setSelection(0);
+	    
+	    this.maxLabel = new Label(this.group, SWT.NONE);
+	    this.maxLabel.setText("Maximum");
+	    this.maxLabel.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    this.maxSpinner = new Spinner(this.group, SWT.NONE);
+	    this.maxSpinner.setMinimum(0);
+	    this.maxSpinner.setSelection(0);
+	    
+	    group.pack();
+	}
+	
+	//TODO: guarantee that min <= avg <= max
+	// fill ui elements with values of new distribution
+	public void set(DistributionType type, int min, int avg, int max) {
+		if(null != type) {
+			this.distributionCombo.select(type.getValue());
+			// enable/disable controls according distribution
+			this.distributionCombo.notifyListeners(SWT.Selection, new Event());
+			this.minSpinner.setSelection(min);
+			this.avgSpinner.setSelection(avg);
+			this.maxSpinner.setSelection(max);
+		}
+	}
+	
+	@Override
+	public void handleEvent(Event event) {
+		if(SWT.Selection == event.type) {
+			if(this.distributionCombo == event.widget) {
+				switch(this.distributionCombo.getSelectionIndex()) {
+					case DistributionType.CONST_VALUE:
+						this.minSpinner.setVisible(false);
+						this.minLabel.setVisible(false);
+						this.avgSpinner.setVisible(true);
+						this.avgLabel.setVisible(true);
+						this.maxSpinner.setVisible(false);
+						this.maxLabel.setVisible(false);
+						break;
+					case DistributionType.UNIFORM_VALUE:
+						this.minSpinner.setVisible(true);
+						this.minLabel.setVisible(true);
+						this.avgSpinner.setVisible(false);
+						this.avgLabel.setVisible(false);
+						this.maxSpinner.setVisible(true);
+						this.maxLabel.setVisible(true);
+						break;
+					case DistributionType.WEIBULL_VALUE:
+						this.minSpinner.setVisible(true);
+						this.minLabel.setVisible(true);
+						this.avgSpinner.setVisible(true);
+						this.avgLabel.setVisible(true);
+						this.maxSpinner.setVisible(true);
+						this.maxLabel.setVisible(true);
+						break;
+					default:
+						this.minSpinner.setVisible(false);
+						this.minLabel.setVisible(false);
+						this.avgSpinner.setVisible(false);
+						this.avgLabel.setVisible(false);
+						this.maxSpinner.setVisible(false);
+						this.maxLabel.setVisible(false);
+				}
+			}
+		}
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/DoubleDistributionGroup.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/DoubleDistributionGroup.java
new file mode 100644
index 0000000..ee726cf
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/DoubleDistributionGroup.java
@@ -0,0 +1,73 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.swt.widgets.Composite;
+
+public class DoubleDistributionGroup extends DistributionGroup {
+
+	public DoubleDistributionGroup(Composite parent, String name) {
+		this(parent, name, 1);		
+	}
+	
+	public DoubleDistributionGroup(Composite parent, String name, int avg) {
+		this(parent, name, DistributionType.CONST, avg, avg, avg);
+	}
+	
+	public DoubleDistributionGroup(Composite parent, String name, int min, int max) {
+		this(parent, name, DistributionType.UNIFORM, min, Math.round((min + max) / 2f), max);
+	}
+	
+	public DoubleDistributionGroup(Composite parent, String name, int min, int avg, int max) {
+		this(parent, name, DistributionType.WEIBULL, min, avg, max);
+	}
+	
+	private DoubleDistributionGroup(Composite parent, String name, DistributionType type, int min, int avg, int max) {
+		super(parent, name);
+		this.minSpinner.setDigits(2);
+		this.minSpinner.setMaximum(Integer.MAX_VALUE);
+		this.minSpinner.setIncrement(1);
+		this.avgSpinner.setDigits(2);
+		this.avgSpinner.setMaximum(Integer.MAX_VALUE);
+		this.avgSpinner.setIncrement(1);
+		this.maxSpinner.setDigits(2);
+		this.maxSpinner.setMaximum(Integer.MAX_VALUE);
+		this.maxSpinner.setIncrement(1);
+		
+		super.set(type, min, avg, max);
+	}
+	
+	public void set(DoubleDistribution distribution) {
+		if(null != distribution) {
+			DistributionType type = distribution.getType();
+			int min = (int) distribution.getMin();
+			int avg = (int) distribution.getAvg();
+			int max = (int) distribution.getMax();
+			super.set(type, min, avg, max);
+		}
+	}
+
+	public DoubleDistribution get() {
+		DoubleDistribution distribution = RTMGCFactory.eINSTANCE.createDoubleDistribution();
+		distribution.setMin(this.minSpinner.getSelection());
+		distribution.setAvg(this.avgSpinner.getSelection());
+		distribution.setMax(this.maxSpinner.getSelection());
+		distribution.setType(DistributionType.get(this.distributionCombo.getSelectionIndex()));
+		return distribution;
+	}
+
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ExportPage.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ExportPage.java
new file mode 100644
index 0000000..9813f21
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ExportPage.java
@@ -0,0 +1,118 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.io.File;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+public class ExportPage extends WizardPage implements Listener {
+
+	private Combo combo;
+	private Button browseButton;
+	private Button exportButton;
+	private File file = null;
+	private boolean export = false;
+	
+	protected ExportPage() {
+		super("Export");
+		setTitle("Export");
+        setDescription("Export settings to a configuration file");
+	}
+	
+	public boolean doExport() {
+		return this.export;
+	}
+	
+	public void setFile(File file) {
+		this.file = file;
+		if(null != file) {
+			this.combo.setText(file.getAbsolutePath());
+		} else {
+			this.combo.setText("");
+		}
+	}
+	
+	public File getFile() {
+		return this.file;
+	}
+
+	@Override
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NONE);
+	    GridLayout layout = new GridLayout();
+	    container.setLayout(layout);
+	    layout.numColumns = 3;
+	    
+	    exportButton = new Button(container, SWT.CHECK);
+	    exportButton.setSelection(this.export);
+	    exportButton.addListener(SWT.Selection, this);
+	    
+	    Label label = new Label(container, SWT.NONE);
+	    label.setText("Enable Export");
+	    GridData gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+	    gridData.horizontalSpan = 2;
+	    label.setLayoutData(gridData);
+	    
+	    label = new Label(container, SWT.NONE);
+	    label.setText("To file: ");
+	    
+	    this.combo = new Combo(container, SWT.NONE);
+	    combo.setText("");
+	    combo.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    combo.setEnabled(this.export);
+	    
+	    this.browseButton = new Button(container, SWT.NONE);
+	    browseButton.setText("Browse...");
+	    browseButton.addListener(SWT.Selection, this);
+	    browseButton.setEnabled(this.export);
+	    
+	    setControl(container);
+	}
+	
+	@Override
+	public void handleEvent(Event event) {
+		if(SWT.Selection == event.type) {
+			if(this.browseButton == event.widget) {
+				Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+	      	  	FileDialog fd = new FileDialog(shell, SWT.SAVE);
+	            fd.setText("Export");
+	            String[] filterExt = { "*.rtmgc", "*.*" };
+	            fd.setFilterExtensions(filterExt);
+	            String selected = fd.open();
+	            if(null != selected) {
+	            	this.combo.setText(selected);
+	            	file = new File(selected);
+	            }
+			} else if(this.exportButton == event.widget) {
+				this.export = exportButton.getSelection();
+				// disable/enable controls
+				this.combo.setEnabled(this.export);
+				this.browseButton.setEnabled(this.export);
+			}
+		}
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/GeneralConfigurationHelper.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/GeneralConfigurationHelper.java
new file mode 100644
index 0000000..11854ca
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/GeneralConfigurationHelper.java
@@ -0,0 +1,313 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+import org.eclipse.ui.model.BaseWorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+
+public class GeneralConfigurationHelper implements Listener, IConfigurationHelper {
+
+	private Spinner countSpinner;
+	//private Combo baseCombo;
+	private Text baseText;
+	private Button baseButton;
+	private List hwList;
+	private Button hwButton;	
+	private List osList;
+	private Button osButton;
+	private Combo swCombo;
+	private Button swButton;
+	private WizardPage page;
+	
+	public GeneralConfigurationHelper(WizardPage page) {
+		this.page = page;
+	}
+	
+	public void addTabItem(TabFolder parent) {
+		TabItem tab = new TabItem(parent, SWT.NONE);
+		tab.setText("General");
+		
+		ScrolledComposite sc = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL);
+		
+		Composite container = new Composite(sc, SWT.NONE);
+		GridLayout gridLayout = new GridLayout();
+	    container.setLayout(gridLayout);
+	    gridLayout.numColumns = 3;
+		
+	    sc.setExpandVertical(true);
+	    sc.setExpandHorizontal(true);
+		
+	    // amount
+	    Label label = new Label(container, SWT.NONE);
+	    label.setText("Number of models to be generated:");
+	    label.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    countSpinner = new Spinner(container, SWT.NONE);
+	    countSpinner.setMinimum(1);
+	    countSpinner.setMaximum(Integer.MAX_VALUE);
+	    countSpinner.setIncrement(1);
+	    countSpinner.setSelection(10);
+	    
+	    //TODO: select here the models for base, os, hw, sw,..
+	    // BASEMODEL
+	    Group group = new Group(container, SWT.NONE);
+	    group.setText("Base Model");
+	    gridLayout = new GridLayout();
+	    group.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+	    GridData gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 3;
+		group.setLayoutData(gridData);
+	    
+//	    this.baseCombo = new Combo(group, SWT.NONE);
+//	    baseCombo.setText("");
+//	    baseCombo.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    this.baseText = new Text(group, SWT.SINGLE);
+	    baseText.setText("");
+	    baseText.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    
+	    baseButton = new Button(group, SWT.NONE);
+	    baseButton.setText("Browse...");
+	    baseButton.addListener(SWT.Selection, this);
+	    
+	    group.pack();
+	    
+	    // HW Models
+	    group = new Group(container, SWT.NONE);
+	    group.setText("HW Models");
+	    gridLayout = new GridLayout();
+	    group.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+	    gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 3;
+		group.setLayoutData(gridData);
+	    
+	    this.hwList = new List(group, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
+	    hwList.setSelection(new String[]{""});
+	    hwList.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    
+	    hwButton = new Button(group, SWT.NONE);
+	    hwButton.setText("Browse...");
+	    hwButton.addListener(SWT.Selection, this);
+	    
+	    // OS Models
+	    group = new Group(container, SWT.NONE);
+	    group.setText("OS Models");
+	    gridLayout = new GridLayout();
+	    group.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+	    gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 3;
+		group.setLayoutData(gridData);
+	    
+	    this.osList = new List(group, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
+	    osList.setSelection(new String[]{""});
+	    osList.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    
+	    osButton = new Button(group, SWT.NONE);
+	    osButton.setText("Browse...");
+	    osButton.addListener(SWT.Selection, this);
+	    
+	    //SW Model
+	    group = new Group(container, SWT.NONE);
+	    group.setText("SW Model");
+	    gridLayout = new GridLayout();
+	    group.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+	    gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 3;
+		group.setLayoutData(gridData);
+	    
+	    this.swCombo = new Combo(group, SWT.NONE);
+	    swCombo.setText("");
+	    swCombo.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    
+	    swButton = new Button(group, SWT.NONE);
+	    swButton.setText("Browse...");
+	    swButton.addListener(SWT.Selection, this);
+	    
+	    sc.setContent(container);
+		sc.setMinSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+	    tab.setControl(sc);
+	}
+
+
+	@Override
+	public void handleEvent(Event event) {
+		if(SWT.Selection == event.type) {
+			if(this.baseButton == event.widget) {
+				// TODO (saiand): select a single amalthea file from workspace
+			} else if(this.hwButton == event.widget) {
+				String[] items = selectFilesFromWorkspace();
+				if(null != items) {
+					this.hwList.setItems(items);
+					this.page.getWizard().getContainer().updateButtons();
+				}
+			} else if(this.osButton == event.widget) {
+				String[] items = selectFilesFromWorkspace();
+				if(null != items) {
+					this.osList.setItems(items);
+					this.page.getWizard().getContainer().updateButtons();
+				}
+			} else if(this.swButton == event.widget) {
+				// TODO (saiand): select a single amalthea file from workspace
+			}
+		}
+	}
+
+	private String[] selectFilesFromWorkspace() {
+		String[] result = null;
+		
+		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(shell, new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider());				
+		dialog.setTitle("Tree Selection");
+		dialog.setMessage("Select the elements from the tree:");
+		dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
+		dialog.addFilter(new ViewerFilter() {
+			public boolean select(Viewer viewer, Object parentElement, Object element) {
+				if (element instanceof IProject) {
+					IProject project= (IProject) element;
+					boolean show = project.isAccessible();
+					try {
+						IResource[] members = project.members();
+						show = (0 == members.length) ? false : true;
+						for (IResource member : members) {
+							show |= select(viewer, parentElement, member);
+						}
+					} catch (CoreException e) {
+					}
+					
+					return show;
+				} else if (element instanceof IFolder) {
+					IFolder folder = (IFolder) element;
+					boolean show = true;
+					try {
+						IResource[] members = folder.members();
+						show = (0 == members.length) ? false : true; 
+						for (IResource member : members) {
+							show |= select(viewer, parentElement, member);
+						}
+					} catch (CoreException e) {
+					}
+					
+					return show;
+				} else if(element instanceof IFile) {
+					IFile file = (IFile) element;
+					return file.getName().endsWith(".amxmi");
+				}
+				return false;
+			}
+		});
+		dialog.setBlockOnOpen(true);
+		int returnCode = dialog.open();
+		
+		if(Window.OK == returnCode) {
+			ArrayList<String> list = new ArrayList<>();
+			Object[] objects = dialog.getResult();
+			for(Object object : objects) {
+				if(object instanceof IFile) {
+					IFile file = (IFile) object;
+					list.add(file.getLocation().toOSString());
+				}
+			}
+			result = list.toArray(new String[list.size()]);
+		}
+		return result;
+	}
+
+	public void loadConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null != generation) {
+				this.countSpinner.setSelection(generation.getCount().intValue());
+				this.baseText.setText(generation.getBaseModel());
+				this.hwList.setItems(generation.getHwModels().toArray(new String[generation.getHwModels().size()]));
+				this.osList.setItems(generation.getOsModels().toArray(new String[generation.getOsModels().size()]));
+				this.swCombo.setText(generation.getSwModel());
+			}
+		}
+	}
+
+	public void updateConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null == generation) {
+				generation = RTMGCFactory.eINSTANCE.createGeneration();
+				rtmgc.setGeneration(generation);
+			}
+			// generation amount
+			int selection = this.countSpinner.getSelection();
+			generation.setCount(BigInteger.valueOf(selection));
+			// base model
+			String text = this.baseText.getText();
+			generation.setBaseModel(text);
+			// hw model
+			for(String item : this.hwList.getItems()) {
+				generation.getHwModels().add(item);
+			}
+			// os model
+			for(String item : this.osList.getItems()) {
+				generation.getOsModels().add(item);
+			}
+			// sw model
+			text = this.swCombo.getText();
+			generation.setSwModel(text);
+			// output folder
+			String outputFolder = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString();
+			generation.setOutputFolder(outputFolder);
+		}
+	}
+
+	@Override
+	public boolean isValid() {
+		boolean result = true;
+		result &= this.hwList.getItemCount() != 0;
+		result &= this.osList.getItemCount() != 0;
+		return result;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IConfigurationHelper.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IConfigurationHelper.java
new file mode 100644
index 0000000..759e6e6
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IConfigurationHelper.java
@@ -0,0 +1,23 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+
+public interface IConfigurationHelper {
+
+	public void loadConfiguration(RTMGC rtmgc);
+	public void updateConfiguration(RTMGC rtmgc);
+	public boolean isValid();
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ImportPage.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ImportPage.java
new file mode 100644
index 0000000..9447aea
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/ImportPage.java
@@ -0,0 +1,89 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.io.File;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+public class ImportPage extends WizardPage implements Listener {
+
+	private Combo combo;
+	private Button button;
+	
+	protected ImportPage() {
+		super("Import");
+		setTitle("Import");
+        setDescription("Import settings from an existing configuration file");
+	}
+
+	@Override
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NONE);
+	    GridLayout layout = new GridLayout();
+	    container.setLayout(layout);
+	    layout.numColumns = 3;
+	    
+	    Label label = new Label(container, SWT.NONE);
+	    label.setText("From file: ");
+	    
+	    this.combo = new Combo(container, SWT.NONE);
+	    combo.setText("");
+	    combo.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+	    
+	    button = new Button(container, SWT.NONE);
+	    button.setText("Browse...");
+	    button.addListener(SWT.Selection, this);
+	    
+	    setControl(container);
+	}
+
+	@Override
+	public void handleEvent(Event event) {
+		if(this.button == event.widget) {
+			if(SWT.Selection == event.type) {
+				Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+	      	  	FileDialog fd = new FileDialog(shell, SWT.OPEN);
+	            fd.setText("Import");
+	            String[] filterExt = { "*.rtmgc", "*.*" };
+	            fd.setFilterExtensions(filterExt);
+	            String selected = fd.open();
+	            File file = null;
+	            if(null != selected) {
+	            	this.combo.setText(selected);
+	            	file = new File(selected);
+	            }
+	            // update configurationPage
+	            ConfigurationPage configurationPage = (ConfigurationPage) getWizard().getPage("Configuration");
+	            configurationPage.loadConfiguration(file);
+            	// update exportPage
+            	ExportPage exportPage = (ExportPage) getWizard().getPage("Export");
+            	exportPage.setFile(file);
+			}
+		}
+	}
+
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IntegerDistributionGroup.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IntegerDistributionGroup.java
new file mode 100644
index 0000000..ad108d0
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IntegerDistributionGroup.java
@@ -0,0 +1,70 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.swt.widgets.Composite;
+
+public class IntegerDistributionGroup extends DistributionGroup {
+	
+	public IntegerDistributionGroup(Composite parent, String name) {
+		this(parent, name, 1);		
+	}
+	
+	public IntegerDistributionGroup(Composite parent, String name, int avg) {
+		this(parent, name, DistributionType.CONST, avg, avg, avg);
+	}
+	
+	public IntegerDistributionGroup(Composite parent, String name, int min, int max) {
+		this(parent, name, DistributionType.UNIFORM, min, Math.round((min + max) / 2f), max);
+	}
+	
+	public IntegerDistributionGroup(Composite parent, String name, int min, int avg, int max) {
+		this(parent, name, DistributionType.WEIBULL, min, avg, max);
+	}
+	
+	private IntegerDistributionGroup(Composite parent, String name, DistributionType type, int min, int avg, int max) {
+		super(parent, name);
+		
+		this.minSpinner.setMaximum(Integer.MAX_VALUE);
+		this.minSpinner.setIncrement(1);
+		this.avgSpinner.setMaximum(Integer.MAX_VALUE);
+		this.avgSpinner.setIncrement(1);
+		this.maxSpinner.setMaximum(Integer.MAX_VALUE);
+		this.maxSpinner.setIncrement(1);
+		
+		super.set(type, min, avg, max);
+	}
+	
+	public void set(IntegerDistribution distribution) {
+		if(null != distribution) {
+			DistributionType type = distribution.getType();
+			int min = (int) distribution.getMin();
+			int avg = (int) distribution.getAvg();
+			int max = (int) distribution.getMax();
+			this.set(type, min, avg, max);
+		}
+	}
+
+	public IntegerDistribution get() {
+		IntegerDistribution distribution = RTMGCFactory.eINSTANCE.createIntegerDistribution();
+		distribution.setMin(this.minSpinner.getSelection());
+		distribution.setAvg(this.avgSpinner.getSelection());
+		distribution.setMax(this.maxSpinner.getSelection());
+		distribution.setType(DistributionType.get(this.distributionCombo.getSelectionIndex()));
+		return distribution;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IntegerTimeDistributionGroup.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IntegerTimeDistributionGroup.java
new file mode 100644
index 0000000..1a9849a
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/IntegerTimeDistributionGroup.java
@@ -0,0 +1,87 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerTimeDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+public class IntegerTimeDistributionGroup extends IntegerDistributionGroup {
+
+	protected final Combo unitCombo;
+	
+	public IntegerTimeDistributionGroup(Composite parent, String name) {
+		this(parent, name, 1, TimeUnit.PS);		
+	}
+	
+	public IntegerTimeDistributionGroup(Composite parent, String name, int avg, TimeUnit unit) {
+		this(parent, name, DistributionType.CONST, avg, avg, avg, unit);
+	}
+	
+	public IntegerTimeDistributionGroup(Composite parent, String name, int min, int max, TimeUnit unit) {
+		this(parent, name, DistributionType.UNIFORM, min, Math.round((min + max) / 2f), max, unit);
+	}
+	
+	public IntegerTimeDistributionGroup(Composite parent, String name, int min, int avg, int max, TimeUnit unit) {
+		this(parent, name, DistributionType.WEIBULL, min, avg, max, unit);
+	}
+	
+	protected IntegerTimeDistributionGroup(Composite parent, String name, DistributionType type, int min, int avg, int max, TimeUnit unit) {
+		super(parent, name);
+		
+		super.set(type, min, avg, max);
+		
+		Label label = new Label(this.group, SWT.NONE);
+	    label.setText("Unit");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    this.unitCombo = new Combo(this.group, SWT.READ_ONLY);
+	    this.unitCombo.setItems(Arrays.stream(TimeUnit.values()).map(Enum::name).toArray(String[]::new));
+	    this.unitCombo.select(unit.getValue());
+	}
+	
+	public void set(DistributionType type, int min, int avg, int max, TimeUnit unit) {
+		super.set(type, min, avg, max);
+		this.unitCombo.select(unit.getValue());
+	}
+	
+	public void set(IntegerTimeDistribution distribution) {
+		if(null != distribution) {
+			TimeUnit unit = distribution.getUnit();
+			DistributionType type = distribution.getType();
+			int min = (int) distribution.getMin();
+			int avg = (int) distribution.getAvg();
+			int max = (int) distribution.getMax();
+			this.set(type, min, avg, max, unit);
+		}
+	}
+
+	public IntegerTimeDistribution get() {
+		IntegerTimeDistribution distribution = RTMGCFactory.eINSTANCE.createIntegerTimeDistribution();
+		distribution.setMin(this.minSpinner.getSelection());
+		distribution.setAvg(this.avgSpinner.getSelection());
+		distribution.setMax(this.maxSpinner.getSelection());
+		distribution.setType(DistributionType.get(this.distributionCombo.getSelectionIndex()));
+		distribution.setUnit(TimeUnit.get(this.unitCombo.getSelectionIndex()));
+		return distribution;
+	}
+
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/LabelsConfigurationHelper.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/LabelsConfigurationHelper.java
new file mode 100644
index 0000000..894c016
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/LabelsConfigurationHelper.java
@@ -0,0 +1,103 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.LabelProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+
+public class LabelsConfigurationHelper implements IConfigurationHelper {
+
+	private IntegerDistributionGroup count;
+	private IntegerDistributionGroup size;
+	private IntegerDistributionGroup swc;
+	
+	public void addTabItem(TabFolder parent) {
+		TabItem tab = new TabItem(parent, SWT.NONE);
+		tab.setText("Labels");
+		
+		ScrolledComposite sc = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL);
+		
+		Composite container = new Composite(sc, SWT.NONE);
+		container.setLayout(new GridLayout());
+		GridLayout gridLayout = new GridLayout();
+	    container.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+		
+	    sc.setExpandVertical(true);
+	    sc.setExpandHorizontal(true);
+		
+	    this.count = new IntegerDistributionGroup(container, "Number of Labels to be Generated");
+	    this.size = new IntegerDistributionGroup(container, "Bit Size of Labels");
+	    this.swc = new IntegerDistributionGroup(container, "Number of Labels per SWC");
+		
+		sc.setContent(container);
+		sc.setMinSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+	    tab.setControl(sc);
+	}
+
+	@Override
+	public void loadConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null != generation) {
+				LabelProperties labels = generation.getLabels();
+				if(null != labels) {
+					IntegerDistribution count = labels.getCount();
+					this.count.set(count);
+					IntegerDistribution size = labels.getBitSize();
+					this.size.set(size);
+					IntegerDistribution swc = labels.getPerSWC();
+					this.swc.set(swc);
+				}
+			}
+		}
+	}
+
+	@Override
+	public void updateConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null == generation) {
+				generation = RTMGCFactory.eINSTANCE.createGeneration();
+				rtmgc.setGeneration(generation);
+			}
+			LabelProperties labels = generation.getLabels();
+			if(null == labels) {
+				labels = RTMGCFactory.eINSTANCE.createLabelProperties();
+				generation.setLabels(labels);
+			}
+			IntegerDistribution count = this.count.get();
+			labels.setCount(count);
+			IntegerDistribution size = this.size.get();
+			labels.setBitSize(size);
+			IntegerDistribution swc = this.swc.get();
+			labels.setPerSWC(swc);
+		}
+	}
+
+	@Override
+	public boolean isValid() {
+		return true;
+	}
+
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/PercentageDistributionGroup.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/PercentageDistributionGroup.java
new file mode 100644
index 0000000..2bf8c79
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/PercentageDistributionGroup.java
@@ -0,0 +1,72 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.swt.widgets.Composite;
+
+public class PercentageDistributionGroup extends DistributionGroup {
+
+	public PercentageDistributionGroup(Composite parent, String name) {
+		this(parent, name, 1);		
+	}
+	
+	public PercentageDistributionGroup(Composite parent, String name, int avg) {
+		this(parent, name, DistributionType.CONST, avg, avg, avg);
+	}
+	
+	public PercentageDistributionGroup(Composite parent, String name, int min, int max) {
+		this(parent, name, DistributionType.UNIFORM, min, Math.round((min + max) / 2f), max);
+	}
+	
+	public PercentageDistributionGroup(Composite parent, String name, int min, int avg, int max) {
+		this(parent, name, DistributionType.WEIBULL, min, avg, max);
+	}
+	
+	private PercentageDistributionGroup(Composite parent, String name, DistributionType type, int min, int avg, int max) {
+		super(parent, name);
+		this.minSpinner.setDigits(2);
+		this.minSpinner.setMaximum(10000);
+		this.minSpinner.setIncrement(1);
+		this.avgSpinner.setDigits(2);
+		this.avgSpinner.setMaximum(10000);
+		this.avgSpinner.setIncrement(1);
+		this.maxSpinner.setDigits(2);
+		this.maxSpinner.setMaximum(10000);
+		this.maxSpinner.setIncrement(1);
+		
+		super.set(type, min, avg, max);
+	}
+	
+	public void set(PercentageDistribution distribution) {
+		if(null != distribution) {
+			DistributionType type = distribution.getType();
+			int min = (int) distribution.getMinPercentage();
+			int avg = (int) distribution.getAvgPercentage();
+			int max = (int) distribution.getMaxPercentage();
+			super.set(type, min, avg, max);
+		}
+	}
+	
+	public PercentageDistribution get() {
+		PercentageDistribution distribution = RTMGCFactory.eINSTANCE.createPercentageDistribution();
+		distribution.setMinPercentage(this.minSpinner.getSelection());
+		distribution.setAvgPercentage(this.avgSpinner.getSelection());
+		distribution.setMaxPercentage(this.maxSpinner.getSelection());
+		distribution.setType(DistributionType.get(this.distributionCombo.getSelectionIndex()));
+		return distribution;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/RecurrenceGroup.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/RecurrenceGroup.java
new file mode 100644
index 0000000..f7fd830
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/RecurrenceGroup.java
@@ -0,0 +1,82 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DistributionType;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.Recurrence;
+import org.eclipse.app4mc.amalthea.generator.configuration.RecurrenceType;
+import org.eclipse.app4mc.amalthea.generator.configuration.TimeUnit;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+public class RecurrenceGroup extends IntegerTimeDistributionGroup {
+
+	private final Combo recurrenceCombo;
+	
+	public RecurrenceGroup(Composite parent, String name) {
+		this(parent, name, 1, TimeUnit.PS);		
+	}
+	
+	public RecurrenceGroup(Composite parent, String name, int avg, TimeUnit unit) {
+		this(parent, name, DistributionType.CONST, avg, avg, avg, unit);
+	}
+	
+	public RecurrenceGroup(Composite parent, String name, int min, int max, TimeUnit unit) {
+		this(parent, name, DistributionType.UNIFORM, min, Math.round((min + max) / 2f), max, unit);
+	}
+	
+	public RecurrenceGroup(Composite parent, String name, int min, int avg, int max, TimeUnit unit) {
+		this(parent, name, DistributionType.WEIBULL, min, avg, max, unit);
+	}
+	
+	protected RecurrenceGroup(Composite parent, String name, DistributionType type, int min, int avg, int max, TimeUnit unit) {
+		super(parent, name);
+		
+		super.set(type, min, avg, max, unit);
+		
+		Label label = new Label(this.group, SWT.NONE);
+	    label.setText("Recurrence Type");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    this.recurrenceCombo = new Combo(this.group, SWT.READ_ONLY);
+	    this.recurrenceCombo.setItems(Arrays.stream(RecurrenceType.values()).map(Enum::name).toArray(String[]::new));
+	    this.recurrenceCombo.select(RecurrenceType.RANDOM_VALUE);
+	}
+
+	//TODO: gurantee that min <= avg <= max
+	//TODO: enable/disable controls according distribution
+	public void set(Recurrence distribution) {
+		if(null != distribution) {
+			super.set(distribution);
+			this.recurrenceCombo.select(distribution.getRecurrenceType().getValue());
+		}
+	}
+	
+	public Recurrence get() {
+		Recurrence distribution = RTMGCFactory.eINSTANCE.createRecurrence();
+		distribution.setMin(this.minSpinner.getSelection());
+		distribution.setAvg(this.avgSpinner.getSelection());
+		distribution.setMax(this.maxSpinner.getSelection());
+		distribution.setType(DistributionType.get(this.distributionCombo.getSelectionIndex()));
+		distribution.setUnit(TimeUnit.get(this.unitCombo.getSelectionIndex()));
+		distribution.setRecurrenceType(RecurrenceType.get(this.recurrenceCombo.getSelectionIndex()));
+		return distribution;
+	}
+
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/RunnablesConfigurationHelper.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/RunnablesConfigurationHelper.java
new file mode 100644
index 0000000..a7f2bb7
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/RunnablesConfigurationHelper.java
@@ -0,0 +1,134 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.RunnableProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.RuntimeType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+
+public class RunnablesConfigurationHelper implements IConfigurationHelper {
+
+	private Combo typeCombo;
+	private IntegerDistributionGroup instructionsGroup;
+	private IntegerDistributionGroup callSequenceGroup;
+	private IntegerDistributionGroup swcGroup;
+	private PercentageDistributionGroup min;
+	private PercentageDistributionGroup max;
+	
+	public void addTabItem(TabFolder parent) {
+		TabItem tab = new TabItem(parent, SWT.NONE);
+		tab.setText("Runnables");
+		
+		ScrolledComposite sc = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL);
+		
+		Composite container = new Composite(sc, SWT.NONE);
+		container.setLayout(new GridLayout());
+		GridLayout gridLayout = new GridLayout();
+	    container.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+		
+	    sc.setExpandVertical(true);
+	    sc.setExpandHorizontal(true);
+	    
+	    // runtime type
+	    Label label = new Label(container, SWT.NONE);
+	    label.setText("Distribution Type");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    typeCombo = new Combo(container, SWT.READ_ONLY);
+	    typeCombo.setItems(Arrays.stream(RuntimeType.values()).map(Enum::name).toArray(String[]::new));
+	    typeCombo.select(0);
+	    
+	    this.instructionsGroup = new IntegerDistributionGroup(container, "Number of Instructions per Runnable", 30000, 50000, 100000);
+	    this.callSequenceGroup = new IntegerDistributionGroup(container, "Number of Runnables per Call Sequence", 6, 13);
+	    this.swcGroup = new IntegerDistributionGroup(container, "Number of Instructions per SWC", 3, 5);
+	    this.min = new PercentageDistributionGroup(container, "Minimum Distance for Statistics", 33, 66, 99);
+	    this.max = new PercentageDistributionGroup(container, "Maximum Distance for Statistics", 110, 150, 200);
+	    
+	    sc.setContent(container);
+		sc.setMinSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+	    tab.setControl(sc);
+	}
+
+	@Override
+	public void loadConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null != generation) {
+				RunnableProperties runnables = generation.getRunnables();
+				if(null != runnables) {
+					RuntimeType type = runnables.getRuntimeType();
+					this.typeCombo.select(type.getValue());
+					IntegerDistribution instructionsPerRunnable = runnables.getInstructionsPerRunnables();
+					this.instructionsGroup.set(instructionsPerRunnable);
+					IntegerDistribution runnablesPerCallSequence = runnables.getRunnablesPerCallSequence();
+					this.callSequenceGroup.set(runnablesPerCallSequence);
+					IntegerDistribution runnablesPerSWC = runnables.getRunnablesPerSWC();
+					this.swcGroup.set(runnablesPerSWC);
+					PercentageDistribution min = runnables.getMinStatisticsDistance();
+					this.min.set(min);
+					PercentageDistribution max = runnables.getMaxStatisticsDistance();
+					this.max.set(max);
+				}
+			}
+		}
+	}
+
+	@Override
+	public void updateConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null == generation) {
+				generation = RTMGCFactory.eINSTANCE.createGeneration();
+				rtmgc.setGeneration(generation);
+			}
+			RunnableProperties runnables = generation.getRunnables();
+			if(null == runnables) {
+				runnables = RTMGCFactory.eINSTANCE.createRunnableProperties();
+				generation.setRunnables(runnables);
+			}
+			int type = this.typeCombo.getSelectionIndex();
+			runnables.setRuntimeType(RuntimeType.get(type));
+			IntegerDistribution instructionsPerRunnable = this.instructionsGroup.get();
+			runnables.setInstructionsPerRunnables(instructionsPerRunnable);
+			IntegerDistribution runnablesPerCallSequence = this.callSequenceGroup.get();
+			runnables.setRunnablesPerCallSequence(runnablesPerCallSequence);
+			IntegerDistribution runnablesPerSWC = this.swcGroup.get();
+			runnables.setRunnablesPerSWC(runnablesPerSWC);
+			PercentageDistribution min = this.min.get();
+			runnables.setMinStatisticsDistance(min);
+			PercentageDistribution max = this.max.get();
+			runnables.setMaxStatisticsDistance(max);
+		}
+	}
+
+	@Override
+	public boolean isValid() {
+		return true;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/SemaphoresConfigurationHelper.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/SemaphoresConfigurationHelper.java
new file mode 100644
index 0000000..6077cf8
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/SemaphoresConfigurationHelper.java
@@ -0,0 +1,191 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreProperties;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder;
+import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreType;
+import org.eclipse.app4mc.amalthea.generator.configuration.WaitModes;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+
+public class SemaphoresConfigurationHelper implements IConfigurationHelper {
+	
+	private IntegerDistributionGroup count;
+	private Button pcpButton;
+	private Combo typeCombo;
+	private Combo waitCombo;
+	private IntegerDistributionGroup read;
+	private IntegerDistributionGroup write;
+	private Combo orderCombo;
+	private Combo accessCombo;
+
+	public void addTabItem(TabFolder parent) {
+		TabItem tab = new TabItem(parent, SWT.NONE);
+		tab.setText("Semaphores");
+		
+		ScrolledComposite sc = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL);
+		
+		Composite container = new Composite(sc, SWT.NONE);
+		container.setLayout(new GridLayout());
+		GridLayout gridLayout = new GridLayout();
+	    container.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+		
+	    sc.setExpandVertical(true);
+	    sc.setExpandHorizontal(true);
+		
+		// count
+	    this.count = new IntegerDistributionGroup(container, "Number of Semaphores to be Generated");
+	    
+	    // priorityCeilingProtocol
+	    Label label = new Label(container, SWT.NONE);
+	    label.setText("Priority Ceiling Protocol");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    pcpButton = new Button(container, SWT.CHECK);
+	    pcpButton.setSelection(true);
+	    
+	    // type
+	    label = new Label(container, SWT.NONE);
+	    label.setText("Semaphore Type");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    typeCombo = new Combo(container, SWT.READ_ONLY);
+	    typeCombo.setItems(Arrays.stream(SemaphoreType.values()).map(Enum::name).toArray(String[]::new));
+	    typeCombo.select(0);
+	    
+	    // wait mode
+	    label = new Label(container, SWT.NONE);
+	    label.setText("Semaphore Wait Mode");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    waitCombo = new Combo(container, SWT.READ_ONLY);
+	    waitCombo.setItems(Arrays.stream(WaitModes.values()).map(Enum::name).toArray(String[]::new));
+	    waitCombo.select(0);
+	    
+	    // SemaphoreAccessProperties
+	    label = new Label(container, SWT.NONE);
+	    label.setText("");
+	    GridData gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 2;
+		gridData.heightHint = 30;
+		label.setLayoutData(gridData);
+	    label = new Label(container, SWT.NONE);
+	    label.setText("Semaphore Access Properties");
+	    gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalSpan = 2;
+		label.setLayoutData(gridData);
+		
+	    // perUnitReadAccessCount
+		this.read = new IntegerDistributionGroup(container, "Number of Read Accesses per Unit Protected by a Semaphore");
+	    this.write = new IntegerDistributionGroup(container, "Number of Write Accesses per Unit Protected by a Semaphore");
+	    
+	    // requestOrder
+	    label = new Label(container, SWT.NONE);
+	    label.setText("Request Order");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    orderCombo = new Combo(container, SWT.READ_ONLY);
+	    orderCombo.setItems(Arrays.stream(SemaphoreRequestOrder.values()).map(Enum::name).toArray(String[]::new));
+	    orderCombo.select(0);
+		
+		// accessType
+	    label = new Label(container, SWT.NONE);
+	    label.setText("AccessType");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    accessCombo = new Combo(container, SWT.READ_ONLY);
+	    accessCombo.setItems(Arrays.stream(SemaphoreAccessType.values()).map(Enum::name).toArray(String[]::new));
+	    accessCombo.select(0);
+	    
+	    sc.setContent(container);
+		sc.setMinSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+	    tab.setControl(sc);
+	}
+
+	@Override
+	public void loadConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null != generation) {
+				SemaphoreProperties semaphores = generation.getSemaphores();
+				if(null != semaphores) {
+					IntegerDistribution count = semaphores.getCount();
+					this.count.set(count);
+					this.pcpButton.setSelection(semaphores.isPriorityCeilingProtocol());
+					this.typeCombo.select(semaphores.getSemaphoreType().getValue());
+					this.waitCombo.select(semaphores.getWaitMode().getValue());
+					SemaphoreAccessProperties accessProperties = semaphores.getSemaphoreAccess();
+					if(null != accessProperties) {
+						IntegerDistribution read = accessProperties.getPerUnitReadAccessCount();
+						this.read.set(read);
+						IntegerDistribution write = accessProperties.getPerUnitWriteAccessCount();
+						this.write.set(write);
+						this.accessCombo.select(accessProperties.getAccessType().getValue());
+						this.orderCombo.select(accessProperties.getRequestOrder().getValue());
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	public void updateConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null == generation) {
+				generation = RTMGCFactory.eINSTANCE.createGeneration();
+				rtmgc.setGeneration(generation);
+			}
+			SemaphoreProperties semaphores = generation.getSemaphores();
+			if(null == semaphores) {
+				semaphores = RTMGCFactory.eINSTANCE.createSemaphoreProperties();
+				generation.setSemaphores(semaphores);
+			}
+			IntegerDistribution count = this.count.get();
+			semaphores.setCount(count);
+			semaphores.setPriorityCeilingProtocol(this.pcpButton.getSelection());
+			semaphores.setSemaphoreType(SemaphoreType.get(this.typeCombo.getSelectionIndex()));
+			semaphores.setWaitMode(WaitModes.get(this.waitCombo.getSelectionIndex()));
+			SemaphoreAccessProperties accessProperties = semaphores.getSemaphoreAccess();
+			if(null == accessProperties) {
+				accessProperties = RTMGCFactory.eINSTANCE.createSemaphoreAccessProperties();
+				semaphores.setSemaphoreAccess(accessProperties);
+			}
+			IntegerDistribution read = this.read.get();
+			accessProperties.setPerUnitReadAccessCount(read);
+			IntegerDistribution write = this.write.get();
+			accessProperties.setPerUnitWriteAccessCount(write);
+			accessProperties.setAccessType(SemaphoreAccessType.get(this.accessCombo.getSelectionIndex()));
+			accessProperties.setRequestOrder(SemaphoreRequestOrder.get(this.orderCombo.getSelectionIndex()));
+		}
+	}
+
+	@Override
+	public boolean isValid() {
+		return true;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/TasksConfigurationHelper.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/TasksConfigurationHelper.java
new file mode 100644
index 0000000..4274d1a
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/TasksConfigurationHelper.java
@@ -0,0 +1,156 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.DoubleDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.Generation;
+import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PercentageDistribution;
+import org.eclipse.app4mc.amalthea.generator.configuration.PriorityDeterminationAlgorithm;
+import org.eclipse.app4mc.amalthea.generator.configuration.ProcessMappingAlgorithms;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCFactory;
+import org.eclipse.app4mc.amalthea.generator.configuration.TaskProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+
+public class TasksConfigurationHelper implements IConfigurationHelper {
+
+	private IntegerDistributionGroup count;
+	private PercentageDistributionGroup load;
+	private IntegerDistributionGroup group;
+	private IntegerDistributionGroup mta;
+	private DoubleDistributionGroup deadline;
+	private IntegerDistributionGroup schedule;
+	private Combo mappingCombo;
+	private Combo priorityCombo;
+	
+	public void addTabItem(TabFolder parent) {
+		TabItem tab = new TabItem(parent, SWT.NONE);
+		tab.setText("Tasks");
+		
+		ScrolledComposite sc = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL);
+		
+		Composite container = new Composite(sc, SWT.NONE);
+		GridLayout gridLayout = new GridLayout();
+	    container.setLayout(gridLayout);
+	    gridLayout.numColumns = 2;
+		
+	    sc.setExpandVertical(true);
+	    sc.setExpandHorizontal(true);
+		
+	    // distributions
+	    this.count = new IntegerDistributionGroup(container, "Number of Tasks to be generated", 9, 15, 22);
+	    this.load = new PercentageDistributionGroup(container, "Load in Percentage for each Task", 1, 20);
+	    this.group = new IntegerDistributionGroup(container, "Number of Tasks per Task Group", 1);
+	    this.mta = new IntegerDistributionGroup(container, "Number of Concurrent Task Activations", 1, 5);
+	    this.deadline = new DoubleDistributionGroup(container, "Factor of the Deadline Relative to the Recurrence of the Task", 1);
+	    this.schedule = new IntegerDistributionGroup(container, "Number of Call Sequences between Schedule Points that are added", 1);
+		
+	    // call graphs
+	    
+	    // mapping determination
+	    Label label = new Label(container, SWT.NONE);
+	    label.setText("Mapping Determination Algorithm");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    mappingCombo = new Combo(container, SWT.READ_ONLY);
+	    mappingCombo.setItems(Arrays.stream(ProcessMappingAlgorithms.values()).map(Enum::name).toArray(String[]::new));
+	    mappingCombo.select(0);
+	    
+	    // priority determination
+	    label = new Label(container, SWT.NONE);
+	    label.setText("Priority Determination Algorithm");
+	    label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+	    priorityCombo = new Combo(container, SWT.READ_ONLY);
+	    priorityCombo.setItems(Arrays.stream(PriorityDeterminationAlgorithm.values()).map(Enum::name).toArray(String[]::new));
+	    priorityCombo.select(0);
+	    
+	    
+	    sc.setContent(container);
+		sc.setMinSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+	    tab.setControl(sc);
+	}
+
+	@Override
+	public void loadConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null != generation) {
+				TaskProperties tasks = generation.getTasks();
+				if(null != tasks) {
+					IntegerDistribution count = tasks.getCount();
+					this.count.set(count);
+					PercentageDistribution load = tasks.getLoad();
+					this.load.set(load);
+					IntegerDistribution group = tasks.getPerTaskGroup();
+					this.group.set(group);
+					IntegerDistribution mta = tasks.getMta();
+					this.mta.set(mta);
+					DoubleDistribution deadline = tasks.getDeadlineFactor();
+					this.deadline.set(deadline);
+					IntegerDistribution schedule = tasks.getCallSequencesBetweenSchedulePoints();
+					this.schedule.set(schedule);
+
+					this.mappingCombo.select(tasks.getMappingDetermination().getValue());
+					this.priorityCombo.select(tasks.getPriorityDetermination().getValue());
+				}
+			}
+		}
+	}
+
+	@Override
+	public void updateConfiguration(RTMGC rtmgc) {
+		if(null != rtmgc) {
+			Generation generation = rtmgc.getGeneration();
+			if(null == generation) {
+				generation = RTMGCFactory.eINSTANCE.createGeneration();
+				rtmgc.setGeneration(generation);
+			}
+			TaskProperties tasks = generation.getTasks();
+			if(null == tasks) {
+				tasks = RTMGCFactory.eINSTANCE.createTaskProperties();
+				generation.setTasks(tasks);
+			}
+			IntegerDistribution count = this.count.get();
+			tasks.setCount(count);
+			PercentageDistribution load = this.load.get();
+			tasks.setLoad(load);
+			IntegerDistribution group = this.group.get(); 
+			tasks.setPerTaskGroup(group);
+			IntegerDistribution mta = this.mta.get();
+			tasks.setMta(mta);
+			DoubleDistribution deadline = this.deadline.get();
+			tasks.setDeadlineFactor(deadline);
+			IntegerDistribution schedule = this.schedule.get();
+			tasks.setCallSequencesBetweenSchedulePoints(schedule);
+			
+			tasks.setMappingDetermination(ProcessMappingAlgorithms.get(this.mappingCombo.getSelectionIndex()));
+			tasks.setPriorityDetermination(PriorityDeterminationAlgorithm.get(this.priorityCombo.getSelectionIndex()));
+		}
+	}
+
+	@Override
+	public boolean isValid() {
+		return true;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/UserInterface.java b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/UserInterface.java
new file mode 100644
index 0000000..a69dc78
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator.ui/src/org/eclipse/app4mc/amalthea/generator/ui/UserInterface.java
@@ -0,0 +1,32 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+public class UserInterface extends org.eclipse.core.commands.AbstractHandler {
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		
+		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		WizardDialog dialog = new ConfigurationWizardDialog(shell);
+		dialog.open();
+		return null;
+	}
+}
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/.classpath b/plugins/org.eclipse.app4mc.amalthea.generator/.classpath
new file mode 100644
index 0000000..ee0c7e2
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.app4mc.amalthea.generator.configuration"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/.gitignore b/plugins/org.eclipse.app4mc.amalthea.generator/.gitignore
new file mode 100644
index 0000000..934e0e0
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/target
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/.project b/plugins/org.eclipse.app4mc.amalthea.generator/.project
new file mode 100644
index 0000000..d471279
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.app4mc.amalthea.generator</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.app4mc.amalthea.generator/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/META-INF/MANIFEST.MF b/plugins/org.eclipse.app4mc.amalthea.generator/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5e8f351
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC Amalthea Model Generator
+Bundle-SymbolicName: org.eclipse.app4mc.amalthea.generator
+Bundle-Version: 0.8.1.qualifier
+Export-Package: org.eclipse.app4mc.amalthea.generator
+Import-Package: org.eclipse.app4mc.amalthea.generator.configuration,
+ org.eclipse.app4mc.amalthea.model,
+ org.eclipse.app4mc.amalthea.model.impl,
+ org.eclipse.app4mc.amalthea.sphinx,
+ org.eclipse.core.internal.resources,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime;version="3.5.0",
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.emf.ecore.xmi.impl
+Require-Bundle: org.eclipse.emf.ecore
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ClassPath: .
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/build.properties b/plugins/org.eclipse.app4mc.amalthea.generator/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/pom.xml b/plugins/org.eclipse.app4mc.amalthea.generator/pom.xml
new file mode 100644
index 0000000..47203f3
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<relativePath>../../build/org.eclipse.app4mc.build/pom.xml</relativePath>
+		<groupId>org.eclipse.app4mc.build</groupId>
+		<artifactId>parent</artifactId>
+		<version>0.8.1-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.app4mc.amalthea.generator</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/org.eclipse.app4mc.amalthea.generator/src/org/eclipse/app4mc/amalthea/generator/ModelGenerator.java b/plugins/org.eclipse.app4mc.amalthea.generator/src/org/eclipse/app4mc/amalthea/generator/ModelGenerator.java
new file mode 100644
index 0000000..4270d71
--- /dev/null
+++ b/plugins/org.eclipse.app4mc.amalthea.generator/src/org/eclipse/app4mc/amalthea/generator/ModelGenerator.java
@@ -0,0 +1,26 @@
+/**
+ * *******************************************************************************
+ *  Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Timing-Architects Embedded Systems GmbH - initial API and implementation
+ *
+ * *******************************************************************************
+ */
+package org.eclipse.app4mc.amalthea.generator;
+
+import org.eclipse.app4mc.amalthea.generator.configuration.RTMGC;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+public class ModelGenerator {
+	
+	public void run(RTMGC rtmgc, IProgressMonitor monitor) throws Exception {
+		monitor.subTask("Generate Models");
+		
+		monitor.done();
+	}
+}