Updated required/optional attributes of activations and stimuli
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicBurstStimulusItemProvider.java b/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicBurstStimulusItemProvider.java
index 887a1c0..5b171f7 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicBurstStimulusItemProvider.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicBurstStimulusItemProvider.java
@@ -98,8 +98,8 @@
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence());
+			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getPeriodicBurstStimulus_BurstLength());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getPeriodicBurstStimulus_OccurrenceMinDistance());
 		}
@@ -170,8 +170,8 @@
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OCCURRENCE_COUNT:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
-			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE:
+			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__BURST_LENGTH:
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OCCURRENCE_MIN_DISTANCE:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -193,12 +193,12 @@
 
 		newChildDescriptors.add
 			(createChildParameter
-				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset(),
+				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence(),
 				 AmaltheaFactory.eINSTANCE.createTime()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence(),
+				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset(),
 				 AmaltheaFactory.eINSTANCE.createTime()));
 
 		newChildDescriptors.add
@@ -224,8 +224,8 @@
 		Object childObject = child;
 
 		boolean qualify =
-			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset() ||
 			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence() ||
+			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset() ||
 			childFeature == AmaltheaPackage.eINSTANCE.getPeriodicBurstStimulus_BurstLength() ||
 			childFeature == AmaltheaPackage.eINSTANCE.getPeriodicBurstStimulus_OccurrenceMinDistance();
 
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicStimulusItemProvider.java b/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicStimulusItemProvider.java
index f6a7d5c..aea1f14 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicStimulusItemProvider.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicStimulusItemProvider.java
@@ -73,8 +73,8 @@
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence());
+			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getPeriodicStimulus_Jitter());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getPeriodicStimulus_MinDistance());
 		}
@@ -142,8 +142,8 @@
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(PeriodicStimulus.class)) {
-			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
 			case AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE:
+			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
 			case AmaltheaPackage.PERIODIC_STIMULUS__JITTER:
 			case AmaltheaPackage.PERIODIC_STIMULUS__MIN_DISTANCE:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -165,12 +165,12 @@
 
 		newChildDescriptors.add
 			(createChildParameter
-				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset(),
+				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence(),
 				 AmaltheaFactory.eINSTANCE.createTime()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence(),
+				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset(),
 				 AmaltheaFactory.eINSTANCE.createTime()));
 
 		newChildDescriptors.add
@@ -231,8 +231,8 @@
 		Object childObject = child;
 
 		boolean qualify =
-			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset() ||
 			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence() ||
+			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset() ||
 			childFeature == AmaltheaPackage.eINSTANCE.getPeriodicStimulus_MinDistance();
 
 		if (qualify) {
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicSyntheticStimulusItemProvider.java b/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicSyntheticStimulusItemProvider.java
index d8a4bf3..7f7473e 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicSyntheticStimulusItemProvider.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model.edit/src-gen/org/eclipse/app4mc/amalthea/model/provider/PeriodicSyntheticStimulusItemProvider.java
@@ -73,8 +73,8 @@
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence());
+			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset());
 			childrenFeatures.add(AmaltheaPackage.eINSTANCE.getPeriodicSyntheticStimulus_OccurrenceTimes());
 		}
 		return childrenFeatures;
@@ -141,8 +141,8 @@
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(PeriodicSyntheticStimulus.class)) {
-			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE:
+			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OCCURRENCE_TIMES:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
@@ -163,12 +163,12 @@
 
 		newChildDescriptors.add
 			(createChildParameter
-				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset(),
+				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence(),
 				 AmaltheaFactory.eINSTANCE.createTime()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence(),
+				(AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset(),
 				 AmaltheaFactory.eINSTANCE.createTime()));
 
 		newChildDescriptors.add
@@ -189,8 +189,8 @@
 		Object childObject = child;
 
 		boolean qualify =
-			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset() ||
 			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Recurrence() ||
+			childFeature == AmaltheaPackage.eINSTANCE.getFixedPeriodic_Offset() ||
 			childFeature == AmaltheaPackage.eINSTANCE.getPeriodicSyntheticStimulus_OccurrenceTimes();
 
 		if (qualify) {
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore-definitions.zip b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore-definitions.zip
index faf0a1b..17ffd26 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore-definitions.zip
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore-definitions.zip
Binary files differ
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.ecore b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.ecore
index 19ea664..4080cd3 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.ecore
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.ecore
@@ -2920,10 +2920,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Stimulus that is triggered periodically.&#xA;offset: Time of first occurrence&#xA;recurrence: Time between following occurrences"/>
     </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
+        eType="#//Time" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" eType="#//Time"
-        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PeriodicStimulus" eSuperTypes="#//Stimulus #//FixedPeriodic">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2940,8 +2940,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" eType="#//ITimeDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" lowerBound="1"
+        eType="#//ITimeDeviation" containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateStimulus" eSuperTypes="#//Stimulus">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2949,8 +2949,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="step" lowerBound="1" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" eType="#//IContinuousValueDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" lowerBound="1"
+        eType="#//IContinuousValueDeviation" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIncreasePerStep" unique="false"
         eType="ecore:EDataType ../../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDoubleObject"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxDecreasePerStep" unique="false"
@@ -4084,8 +4084,8 @@
         resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
         eType="#//Time" containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" lowerBound="1"
-        eType="#//Time" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateActivation" eSuperTypes="#//Activation #//IDescription">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4104,10 +4104,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="A single activation between time min and max"/>
     </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="min" eType="#//Time" containment="true"
-        resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="max" eType="#//Time" containment="true"
-        resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="min" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="max" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EventActivation" eSuperTypes="#//Activation">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.genmodel b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.genmodel
index 0be789d..576df15 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.genmodel
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/ecore/amalthea.genmodel
@@ -1650,8 +1650,8 @@
       </genOperations>
     </genClasses>
     <genClasses image="false" ecoreClass="amalthea.ecore#//FixedPeriodic">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//FixedPeriodic/offset"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//FixedPeriodic/recurrence"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//FixedPeriodic/offset"/>
     </genClasses>
     <genClasses ecoreClass="amalthea.ecore#//PeriodicStimulus">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//PeriodicStimulus/jitter"/>
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xcore/amalthea.xcore.bak b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xcore/amalthea.xcore.bak
index 37ba33a..3fe49b4 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xcore/amalthea.xcore.bak
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xcore/amalthea.xcore.bak
@@ -2942,8 +2942,8 @@
  */
 interface FixedPeriodic
 {
+	contains Time[1] recurrence
 	contains Time offset
-	contains Time recurrence
 }
 
 /*
@@ -2965,7 +2965,7 @@
 class RelativePeriodicStimulus extends Stimulus
 {
 	contains Time offset
-	contains ITimeDeviation nextOccurrence
+	contains ITimeDeviation[1] nextOccurrence
 }
 
 /*
@@ -2975,7 +2975,7 @@
 class VariableRateStimulus extends Stimulus
 {
 	contains Time[1] step
-	contains IContinuousValueDeviation occurrencesPerStep
+	contains IContinuousValueDeviation[1] occurrencesPerStep
 	Double maxIncreasePerStep		// initial value is null
 	Double maxDecreasePerStep		// initial value is null
 	contains Scenario scenario
@@ -4106,7 +4106,7 @@
 	contains Time min
 	contains Time max
 	contains Time[1] recurrence
-	contains Time[1] offset
+	contains Time offset
 }
 
 /*
@@ -4128,8 +4128,8 @@
  */
 class SingleActivation extends Activation
 {
-	contains Time min
-	contains Time max
+	contains Time[1] min
+	contains Time[1] max
 }
 
 /*
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-definitions.zip b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-definitions.zip
index 7403748..d426e3f 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-definitions.zip
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-definitions.zip
Binary files differ
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema-xmi/amalthea-xmi.xsd b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema-xmi/amalthea-xmi.xsd
index a682a05..aac70eb 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema-xmi/amalthea-xmi.xsd
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema-xmi/amalthea-xmi.xsd
@@ -4489,8 +4489,8 @@
 recurrence: Time between following occurrences</xsd:documentation>
     </xsd:annotation>
     <xsd:choice maxOccurs="unbounded" minOccurs="0">
-      <xsd:element name="offset" type="am:Time"/>
       <xsd:element name="recurrence" type="am:Time"/>
+      <xsd:element name="offset" type="am:Time"/>
       <xsd:element ref="xmi:Extension"/>
     </xsd:choice>
     <xsd:attribute ref="xmi:id"/>
@@ -4512,8 +4512,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Stimulus">
         <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
+          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="jitter" type="am:ITimeDeviation"/>
           <xsd:element name="minDistance" type="am:Time"/>
         </xsd:choice>
@@ -4593,8 +4593,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Stimulus">
         <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
+          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="occurrenceTimes" type="am:Time"/>
         </xsd:choice>
       </xsd:extension>
@@ -4663,8 +4663,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Stimulus">
         <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
+          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="burstLength" type="am:Time"/>
           <xsd:element name="occurrenceMinDistance" type="am:Time"/>
         </xsd:choice>
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema/amalthea.xsd b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema/amalthea.xsd
index aabdc6e..70c4ef6 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema/amalthea.xsd
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml-schema/amalthea.xsd
@@ -4385,8 +4385,8 @@
 recurrence: Time between following occurrences</xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
+      <xsd:element name="recurrence" type="am:Time"/>
       <xsd:element minOccurs="0" name="offset" type="am:Time"/>
-      <xsd:element minOccurs="0" name="recurrence" type="am:Time"/>
     </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType ecore:implements="am:FixedPeriodic" name="PeriodicStimulus">
@@ -4414,7 +4414,7 @@
       <xsd:extension base="am:Stimulus">
         <xsd:sequence>
           <xsd:element minOccurs="0" name="offset" type="am:Time"/>
-          <xsd:element minOccurs="0" name="nextOccurrence" type="am:ITimeDeviation"/>
+          <xsd:element name="nextOccurrence" type="am:ITimeDeviation"/>
         </xsd:sequence>
       </xsd:extension>
     </xsd:complexContent>
@@ -4428,7 +4428,7 @@
       <xsd:extension base="am:Stimulus">
         <xsd:sequence>
           <xsd:element name="step" type="am:Time"/>
-          <xsd:element minOccurs="0" name="occurrencesPerStep" type="am:IContinuousValueDeviation"/>
+          <xsd:element name="occurrencesPerStep" type="am:IContinuousValueDeviation"/>
           <xsd:element minOccurs="0" name="scenario" type="am:Scenario"/>
         </xsd:sequence>
         <xsd:attribute name="maxIncreasePerStep" type="ecore:EDoubleObject"/>
@@ -6001,7 +6001,7 @@
           <xsd:element minOccurs="0" name="min" type="am:Time"/>
           <xsd:element minOccurs="0" name="max" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
-          <xsd:element name="offset" type="am:Time"/>
+          <xsd:element minOccurs="0" name="offset" type="am:Time"/>
         </xsd:sequence>
       </xsd:extension>
     </xsd:complexContent>
@@ -6035,8 +6035,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Activation">
         <xsd:sequence>
-          <xsd:element minOccurs="0" name="min" type="am:Time"/>
-          <xsd:element minOccurs="0" name="max" type="am:Time"/>
+          <xsd:element name="min" type="am:Time"/>
+          <xsd:element name="max" type="am:Time"/>
         </xsd:sequence>
       </xsd:extension>
     </xsd:complexContent>
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml/amalthea.xml b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml/amalthea.xml
index c4dbcea..5475a53 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml/amalthea.xml
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/help-model/xml/amalthea.xml
@@ -2892,10 +2892,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Stimulus that is triggered periodically.&#xA;offset: Time of first occurrence&#xA;recurrence: Time between following occurrences"/>
     </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
+        eType="#//Time" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" eType="#//Time"
-        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PeriodicStimulus" eSuperTypes="#//Stimulus #//FixedPeriodic">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2912,8 +2912,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" eType="#//ITimeDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" lowerBound="1"
+        eType="#//ITimeDeviation" containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateStimulus" eSuperTypes="#//Stimulus">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2921,8 +2921,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="step" lowerBound="1" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" eType="#//IContinuousValueDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" lowerBound="1"
+        eType="#//IContinuousValueDeviation" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIncreasePerStep" unique="false"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxDecreasePerStep" unique="false"
@@ -4039,8 +4039,8 @@
         resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
         eType="#//Time" containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" lowerBound="1"
-        eType="#//Time" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateActivation" eSuperTypes="#//Activation #//IDescription">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4059,10 +4059,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="A single activation between time min and max"/>
     </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="min" eType="#//Time" containment="true"
-        resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="max" eType="#//Time" containment="true"
-        resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="min" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="max" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EventActivation" eSuperTypes="#//Activation">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_stimuli_stimuli.png b/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_stimuli_stimuli.png
index bda31c7..39f2723 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_stimuli_stimuli.png
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_stimuli_stimuli.png
Binary files differ
diff --git a/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_sw_activation.png b/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_sw_activation.png
index dfd5176..474d2e3 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_sw_activation.png
+++ b/plugins/org.eclipse.app4mc.amalthea.model.help/pictures/model_sw_activation.png
Binary files differ
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.ecore b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.ecore
index 19ea664..4080cd3 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.ecore
+++ b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.ecore
@@ -2920,10 +2920,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Stimulus that is triggered periodically.&#xA;offset: Time of first occurrence&#xA;recurrence: Time between following occurrences"/>
     </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
+        eType="#//Time" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" eType="#//Time"
-        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PeriodicStimulus" eSuperTypes="#//Stimulus #//FixedPeriodic">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2940,8 +2940,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" eType="#//ITimeDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" lowerBound="1"
+        eType="#//ITimeDeviation" containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateStimulus" eSuperTypes="#//Stimulus">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2949,8 +2949,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="step" lowerBound="1" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" eType="#//IContinuousValueDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" lowerBound="1"
+        eType="#//IContinuousValueDeviation" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIncreasePerStep" unique="false"
         eType="ecore:EDataType ../../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDoubleObject"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxDecreasePerStep" unique="false"
@@ -4084,8 +4084,8 @@
         resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
         eType="#//Time" containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" lowerBound="1"
-        eType="#//Time" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateActivation" eSuperTypes="#//Activation #//IDescription">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4104,10 +4104,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="A single activation between time min and max"/>
     </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="min" eType="#//Time" containment="true"
-        resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="max" eType="#//Time" containment="true"
-        resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="min" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="max" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EventActivation" eSuperTypes="#//Activation">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.genmodel b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.genmodel
index 0be789d..576df15 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.genmodel
+++ b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/ecore/amalthea.genmodel
@@ -1650,8 +1650,8 @@
       </genOperations>
     </genClasses>
     <genClasses image="false" ecoreClass="amalthea.ecore#//FixedPeriodic">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//FixedPeriodic/offset"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//FixedPeriodic/recurrence"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//FixedPeriodic/offset"/>
     </genClasses>
     <genClasses ecoreClass="amalthea.ecore#//PeriodicStimulus">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference amalthea.ecore#//PeriodicStimulus/jitter"/>
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema-xmi/amalthea-xmi.xsd b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema-xmi/amalthea-xmi.xsd
index a682a05..aac70eb 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema-xmi/amalthea-xmi.xsd
+++ b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema-xmi/amalthea-xmi.xsd
@@ -4489,8 +4489,8 @@
 recurrence: Time between following occurrences</xsd:documentation>
     </xsd:annotation>
     <xsd:choice maxOccurs="unbounded" minOccurs="0">
-      <xsd:element name="offset" type="am:Time"/>
       <xsd:element name="recurrence" type="am:Time"/>
+      <xsd:element name="offset" type="am:Time"/>
       <xsd:element ref="xmi:Extension"/>
     </xsd:choice>
     <xsd:attribute ref="xmi:id"/>
@@ -4512,8 +4512,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Stimulus">
         <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
+          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="jitter" type="am:ITimeDeviation"/>
           <xsd:element name="minDistance" type="am:Time"/>
         </xsd:choice>
@@ -4593,8 +4593,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Stimulus">
         <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
+          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="occurrenceTimes" type="am:Time"/>
         </xsd:choice>
       </xsd:extension>
@@ -4663,8 +4663,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Stimulus">
         <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
+          <xsd:element name="offset" type="am:Time"/>
           <xsd:element name="burstLength" type="am:Time"/>
           <xsd:element name="occurrenceMinDistance" type="am:Time"/>
         </xsd:choice>
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema/amalthea.xsd b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema/amalthea.xsd
index aabdc6e..70c4ef6 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema/amalthea.xsd
+++ b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml-schema/amalthea.xsd
@@ -4385,8 +4385,8 @@
 recurrence: Time between following occurrences</xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
+      <xsd:element name="recurrence" type="am:Time"/>
       <xsd:element minOccurs="0" name="offset" type="am:Time"/>
-      <xsd:element minOccurs="0" name="recurrence" type="am:Time"/>
     </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType ecore:implements="am:FixedPeriodic" name="PeriodicStimulus">
@@ -4414,7 +4414,7 @@
       <xsd:extension base="am:Stimulus">
         <xsd:sequence>
           <xsd:element minOccurs="0" name="offset" type="am:Time"/>
-          <xsd:element minOccurs="0" name="nextOccurrence" type="am:ITimeDeviation"/>
+          <xsd:element name="nextOccurrence" type="am:ITimeDeviation"/>
         </xsd:sequence>
       </xsd:extension>
     </xsd:complexContent>
@@ -4428,7 +4428,7 @@
       <xsd:extension base="am:Stimulus">
         <xsd:sequence>
           <xsd:element name="step" type="am:Time"/>
-          <xsd:element minOccurs="0" name="occurrencesPerStep" type="am:IContinuousValueDeviation"/>
+          <xsd:element name="occurrencesPerStep" type="am:IContinuousValueDeviation"/>
           <xsd:element minOccurs="0" name="scenario" type="am:Scenario"/>
         </xsd:sequence>
         <xsd:attribute name="maxIncreasePerStep" type="ecore:EDoubleObject"/>
@@ -6001,7 +6001,7 @@
           <xsd:element minOccurs="0" name="min" type="am:Time"/>
           <xsd:element minOccurs="0" name="max" type="am:Time"/>
           <xsd:element name="recurrence" type="am:Time"/>
-          <xsd:element name="offset" type="am:Time"/>
+          <xsd:element minOccurs="0" name="offset" type="am:Time"/>
         </xsd:sequence>
       </xsd:extension>
     </xsd:complexContent>
@@ -6035,8 +6035,8 @@
     <xsd:complexContent>
       <xsd:extension base="am:Activation">
         <xsd:sequence>
-          <xsd:element minOccurs="0" name="min" type="am:Time"/>
-          <xsd:element minOccurs="0" name="max" type="am:Time"/>
+          <xsd:element name="min" type="am:Time"/>
+          <xsd:element name="max" type="am:Time"/>
         </xsd:sequence>
       </xsd:extension>
     </xsd:complexContent>
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml/amalthea.xml b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml/amalthea.xml
index c4dbcea..5475a53 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml/amalthea.xml
+++ b/plugins/org.eclipse.app4mc.amalthea.model/model-gen/xml/amalthea.xml
@@ -2892,10 +2892,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Stimulus that is triggered periodically.&#xA;offset: Time of first occurrence&#xA;recurrence: Time between following occurrences"/>
     </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
+        eType="#//Time" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" eType="#//Time"
-        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PeriodicStimulus" eSuperTypes="#//Stimulus #//FixedPeriodic">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2912,8 +2912,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" eType="#//ITimeDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nextOccurrence" lowerBound="1"
+        eType="#//ITimeDeviation" containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateStimulus" eSuperTypes="#//Stimulus">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2921,8 +2921,8 @@
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="step" lowerBound="1" eType="#//Time"
         containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" eType="#//IContinuousValueDeviation"
-        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrencesPerStep" lowerBound="1"
+        eType="#//IContinuousValueDeviation" containment="true" resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIncreasePerStep" unique="false"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxDecreasePerStep" unique="false"
@@ -4039,8 +4039,8 @@
         resolveProxies="false"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="recurrence" lowerBound="1"
         eType="#//Time" containment="true" resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" lowerBound="1"
-        eType="#//Time" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="offset" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableRateActivation" eSuperTypes="#//Activation #//IDescription">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4059,10 +4059,10 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="A single activation between time min and max"/>
     </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="min" eType="#//Time" containment="true"
-        resolveProxies="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="max" eType="#//Time" containment="true"
-        resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="min" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="max" lowerBound="1" eType="#//Time"
+        containment="true" resolveProxies="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EventActivation" eSuperTypes="#//Activation">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/model/amalthea.xcore b/plugins/org.eclipse.app4mc.amalthea.model/model/amalthea.xcore
index 37ba33a..3fe49b4 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/model/amalthea.xcore
+++ b/plugins/org.eclipse.app4mc.amalthea.model/model/amalthea.xcore
@@ -2942,8 +2942,8 @@
  */
 interface FixedPeriodic
 {
+	contains Time[1] recurrence
 	contains Time offset
-	contains Time recurrence
 }
 
 /*
@@ -2965,7 +2965,7 @@
 class RelativePeriodicStimulus extends Stimulus
 {
 	contains Time offset
-	contains ITimeDeviation nextOccurrence
+	contains ITimeDeviation[1] nextOccurrence
 }
 
 /*
@@ -2975,7 +2975,7 @@
 class VariableRateStimulus extends Stimulus
 {
 	contains Time[1] step
-	contains IContinuousValueDeviation occurrencesPerStep
+	contains IContinuousValueDeviation[1] occurrencesPerStep
 	Double maxIncreasePerStep		// initial value is null
 	Double maxDecreasePerStep		// initial value is null
 	contains Scenario scenario
@@ -4106,7 +4106,7 @@
 	contains Time min
 	contains Time max
 	contains Time[1] recurrence
-	contains Time[1] offset
+	contains Time offset
 }
 
 /*
@@ -4128,8 +4128,8 @@
  */
 class SingleActivation extends Activation
 {
-	contains Time min
-	contains Time max
+	contains Time[1] min
+	contains Time[1] max
 }
 
 /*
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/AmaltheaPackage.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/AmaltheaPackage.java
index 71bc503..ba0e4d6 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/AmaltheaPackage.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/AmaltheaPackage.java
@@ -20051,22 +20051,22 @@
 	int FIXED_PERIODIC = 265;
 
 	/**
-	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FIXED_PERIODIC__OFFSET = 0;
-
-	/**
 	 * The feature id for the '<em><b>Recurrence</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FIXED_PERIODIC__RECURRENCE = 1;
+	int FIXED_PERIODIC__RECURRENCE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIXED_PERIODIC__OFFSET = 1;
 
 	/**
 	 * The number of structural features of the '<em>Fixed Periodic</em>' class.
@@ -20160,22 +20160,22 @@
 	int PERIODIC_STIMULUS__AFFECTED_PROCESSES = STIMULUS__AFFECTED_PROCESSES;
 
 	/**
-	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERIODIC_STIMULUS__OFFSET = STIMULUS_FEATURE_COUNT + 0;
-
-	/**
 	 * The feature id for the '<em><b>Recurrence</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PERIODIC_STIMULUS__RECURRENCE = STIMULUS_FEATURE_COUNT + 1;
+	int PERIODIC_STIMULUS__RECURRENCE = STIMULUS_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_STIMULUS__OFFSET = STIMULUS_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Jitter</b></em>' containment reference.
@@ -20677,22 +20677,22 @@
 	int PERIODIC_SYNTHETIC_STIMULUS__AFFECTED_PROCESSES = STIMULUS__AFFECTED_PROCESSES;
 
 	/**
-	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERIODIC_SYNTHETIC_STIMULUS__OFFSET = STIMULUS_FEATURE_COUNT + 0;
-
-	/**
 	 * The feature id for the '<em><b>Recurrence</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE = STIMULUS_FEATURE_COUNT + 1;
+	int PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE = STIMULUS_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_SYNTHETIC_STIMULUS__OFFSET = STIMULUS_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Occurrence Times</b></em>' containment reference list.
@@ -21212,22 +21212,22 @@
 	int PERIODIC_BURST_STIMULUS__AFFECTED_PROCESSES = STIMULUS__AFFECTED_PROCESSES;
 
 	/**
-	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERIODIC_BURST_STIMULUS__OFFSET = STIMULUS_FEATURE_COUNT + 0;
-
-	/**
 	 * The feature id for the '<em><b>Recurrence</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PERIODIC_BURST_STIMULUS__RECURRENCE = STIMULUS_FEATURE_COUNT + 1;
+	int PERIODIC_BURST_STIMULUS__RECURRENCE = STIMULUS_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_BURST_STIMULUS__OFFSET = STIMULUS_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Burst Length</b></em>' containment reference.
@@ -38395,17 +38395,6 @@
 	EClass getFixedPeriodic();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#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.model.FixedPeriodic#getOffset()
-	 * @see #getFixedPeriodic()
-	 * @generated
-	 */
-	EReference getFixedPeriodic_Offset();
-
-	/**
 	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#getRecurrence <em>Recurrence</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -38417,6 +38406,17 @@
 	EReference getFixedPeriodic_Recurrence();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#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.model.FixedPeriodic#getOffset()
+	 * @see #getFixedPeriodic()
+	 * @generated
+	 */
+	EReference getFixedPeriodic_Offset();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.app4mc.amalthea.model.PeriodicStimulus <em>Periodic Stimulus</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/FixedPeriodic.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/FixedPeriodic.java
index 98fd884..0d12151 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/FixedPeriodic.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/FixedPeriodic.java
@@ -31,8 +31,8 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#getOffset <em>Offset</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#getRecurrence <em>Recurrence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#getOffset <em>Offset</em>}</li>
  * </ul>
  *
  * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getFixedPeriodic()
@@ -41,6 +41,28 @@
  */
 public interface FixedPeriodic extends EObject {
 	/**
+	 * Returns the value of the '<em><b>Recurrence</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Recurrence</em>' containment reference.
+	 * @see #setRecurrence(Time)
+	 * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getFixedPeriodic_Recurrence()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Time getRecurrence();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#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(Time value);
+
+	/**
 	 * Returns the value of the '<em><b>Offset</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -62,26 +84,4 @@
 	 */
 	void setOffset(Time value);
 
-	/**
-	 * Returns the value of the '<em><b>Recurrence</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Recurrence</em>' containment reference.
-	 * @see #setRecurrence(Time)
-	 * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getFixedPeriodic_Recurrence()
-	 * @model containment="true"
-	 * @generated
-	 */
-	Time getRecurrence();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.app4mc.amalthea.model.FixedPeriodic#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(Time value);
-
 } // FixedPeriodic
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/PeriodicActivation.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/PeriodicActivation.java
index 7b52d22..7c85ccb 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/PeriodicActivation.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/PeriodicActivation.java
@@ -112,7 +112,7 @@
 	 * @return the value of the '<em>Offset</em>' containment reference.
 	 * @see #setOffset(Time)
 	 * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getPeriodicActivation_Offset()
-	 * @model containment="true" required="true"
+	 * @model containment="true"
 	 * @generated
 	 */
 	Time getOffset();
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/RelativePeriodicStimulus.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/RelativePeriodicStimulus.java
index 14779b1..0c95c31 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/RelativePeriodicStimulus.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/RelativePeriodicStimulus.java
@@ -68,7 +68,7 @@
 	 * @return the value of the '<em>Next Occurrence</em>' containment reference.
 	 * @see #setNextOccurrence(ITimeDeviation)
 	 * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getRelativePeriodicStimulus_NextOccurrence()
-	 * @model containment="true"
+	 * @model containment="true" required="true"
 	 * @generated
 	 */
 	ITimeDeviation getNextOccurrence();
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/SingleActivation.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/SingleActivation.java
index 2695135..621e2a7 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/SingleActivation.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/SingleActivation.java
@@ -44,7 +44,7 @@
 	 * @return the value of the '<em>Min</em>' containment reference.
 	 * @see #setMin(Time)
 	 * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getSingleActivation_Min()
-	 * @model containment="true"
+	 * @model containment="true" required="true"
 	 * @generated
 	 */
 	Time getMin();
@@ -66,7 +66,7 @@
 	 * @return the value of the '<em>Max</em>' containment reference.
 	 * @see #setMax(Time)
 	 * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getSingleActivation_Max()
-	 * @model containment="true"
+	 * @model containment="true" required="true"
 	 * @generated
 	 */
 	Time getMax();
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/VariableRateStimulus.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/VariableRateStimulus.java
index 8f1e8fa..c173a56 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/VariableRateStimulus.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/VariableRateStimulus.java
@@ -70,7 +70,7 @@
 	 * @return the value of the '<em>Occurrences Per Step</em>' containment reference.
 	 * @see #setOccurrencesPerStep(IContinuousValueDeviation)
 	 * @see org.eclipse.app4mc.amalthea.model.AmaltheaPackage#getVariableRateStimulus_OccurrencesPerStep()
-	 * @model containment="true"
+	 * @model containment="true" required="true"
 	 * @generated
 	 */
 	IContinuousValueDeviation getOccurrencesPerStep();
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/AmaltheaPackageImpl.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/AmaltheaPackageImpl.java
index 21ab4db..643974a 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/AmaltheaPackageImpl.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/AmaltheaPackageImpl.java
@@ -11552,7 +11552,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getFixedPeriodic_Offset() {
+	public EReference getFixedPeriodic_Recurrence() {
 		return (EReference)fixedPeriodicEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -11562,7 +11562,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getFixedPeriodic_Recurrence() {
+	public EReference getFixedPeriodic_Offset() {
 		return (EReference)fixedPeriodicEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -16577,8 +16577,8 @@
 		createEOperation(modeConditionConjunctionEClass, MODE_CONDITION_CONJUNCTION___IS_SATISFIED_BY__EMAP);
 
 		fixedPeriodicEClass = createEClass(FIXED_PERIODIC);
-		createEReference(fixedPeriodicEClass, FIXED_PERIODIC__OFFSET);
 		createEReference(fixedPeriodicEClass, FIXED_PERIODIC__RECURRENCE);
+		createEReference(fixedPeriodicEClass, FIXED_PERIODIC__OFFSET);
 
 		periodicStimulusEClass = createEClass(PERIODIC_STIMULUS);
 		createEReference(periodicStimulusEClass, PERIODIC_STIMULUS__JITTER);
@@ -18750,8 +18750,8 @@
 		addEParameter(op, this.getModeValueMapEntry(), "context", 0, -1, !IS_UNIQUE, IS_ORDERED);
 
 		initEClass(fixedPeriodicEClass, FixedPeriodic.class, "FixedPeriodic", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFixedPeriodic_Recurrence(), this.getTime(), null, "recurrence", null, 1, 1, FixedPeriodic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getFixedPeriodic_Offset(), this.getTime(), null, "offset", null, 0, 1, FixedPeriodic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getFixedPeriodic_Recurrence(), this.getTime(), null, "recurrence", null, 0, 1, FixedPeriodic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(periodicStimulusEClass, PeriodicStimulus.class, "PeriodicStimulus", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPeriodicStimulus_Jitter(), this.getITimeDeviation(), null, "jitter", null, 0, 1, PeriodicStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -18759,11 +18759,11 @@
 
 		initEClass(relativePeriodicStimulusEClass, RelativePeriodicStimulus.class, "RelativePeriodicStimulus", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getRelativePeriodicStimulus_Offset(), this.getTime(), null, "offset", null, 0, 1, RelativePeriodicStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getRelativePeriodicStimulus_NextOccurrence(), this.getITimeDeviation(), null, "nextOccurrence", null, 0, 1, RelativePeriodicStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRelativePeriodicStimulus_NextOccurrence(), this.getITimeDeviation(), null, "nextOccurrence", null, 1, 1, RelativePeriodicStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(variableRateStimulusEClass, VariableRateStimulus.class, "VariableRateStimulus", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getVariableRateStimulus_Step(), this.getTime(), null, "step", null, 1, 1, VariableRateStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getVariableRateStimulus_OccurrencesPerStep(), this.getIContinuousValueDeviation(), null, "occurrencesPerStep", null, 0, 1, VariableRateStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getVariableRateStimulus_OccurrencesPerStep(), this.getIContinuousValueDeviation(), null, "occurrencesPerStep", null, 1, 1, VariableRateStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getVariableRateStimulus_MaxIncreasePerStep(), theEcorePackage.getEDoubleObject(), "maxIncreasePerStep", null, 0, 1, VariableRateStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getVariableRateStimulus_MaxDecreasePerStep(), theEcorePackage.getEDoubleObject(), "maxDecreasePerStep", null, 0, 1, VariableRateStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getVariableRateStimulus_Scenario(), this.getScenario(), null, "scenario", null, 0, 1, VariableRateStimulus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -19163,7 +19163,7 @@
 		initEReference(getPeriodicActivation_Min(), this.getTime(), null, "min", null, 0, 1, PeriodicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPeriodicActivation_Max(), this.getTime(), null, "max", null, 0, 1, PeriodicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPeriodicActivation_Recurrence(), this.getTime(), 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.getTime(), 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);
+		initEReference(getPeriodicActivation_Offset(), this.getTime(), null, "offset", null, 0, 1, PeriodicActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(variableRateActivationEClass, VariableRateActivation.class, "VariableRateActivation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getVariableRateActivation_Step(), this.getTime(), null, "step", null, 1, 1, VariableRateActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -19173,8 +19173,8 @@
 		initEReference(getSporadicActivation_Occurrence(), this.getITimeDeviation(), null, "occurrence", 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(singleActivationEClass, SingleActivation.class, "SingleActivation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getSingleActivation_Min(), this.getTime(), null, "min", null, 0, 1, SingleActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getSingleActivation_Max(), this.getTime(), null, "max", null, 0, 1, SingleActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSingleActivation_Min(), this.getTime(), null, "min", null, 1, 1, SingleActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSingleActivation_Max(), this.getTime(), null, "max", null, 1, 1, SingleActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(eventActivationEClass, EventActivation.class, "EventActivation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getEventActivation_TriggeringEvents(), this.getTriggerEvent(), null, "triggeringEvents", null, 1, -1, EventActivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicBurstStimulusImpl.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicBurstStimulusImpl.java
index 31062d5..33005a6 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicBurstStimulusImpl.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicBurstStimulusImpl.java
@@ -35,8 +35,8 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicBurstStimulusImpl#getOffset <em>Offset</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicBurstStimulusImpl#getRecurrence <em>Recurrence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicBurstStimulusImpl#getOffset <em>Offset</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicBurstStimulusImpl#getBurstLength <em>Burst Length</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicBurstStimulusImpl#getOccurrenceMinDistance <em>Occurrence Min Distance</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicBurstStimulusImpl#getOccurrenceCount <em>Occurrence Count</em>}</li>
@@ -46,16 +46,6 @@
  */
 public class PeriodicBurstStimulusImpl extends StimulusImpl implements PeriodicBurstStimulus {
 	/**
-	 * The cached value of the '{@link #getOffset() <em>Offset</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getOffset()
-	 * @generated
-	 * @ordered
-	 */
-	protected Time offset;
-
-	/**
 	 * The cached value of the '{@link #getRecurrence() <em>Recurrence</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -66,6 +56,16 @@
 	protected Time recurrence;
 
 	/**
+	 * The cached value of the '{@link #getOffset() <em>Offset</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOffset()
+	 * @generated
+	 * @ordered
+	 */
+	protected Time offset;
+
+	/**
 	 * The cached value of the '{@link #getBurstLength() <em>Burst Length</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -130,51 +130,6 @@
 	 * @generated
 	 */
 	@Override
-	public Time getOffset() {
-		return offset;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetOffset(Time newOffset, NotificationChain msgs) {
-		Time oldOffset = offset;
-		offset = newOffset;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, oldOffset, newOffset);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setOffset(Time newOffset) {
-		if (newOffset != offset) {
-			NotificationChain msgs = null;
-			if (offset != null)
-				msgs = ((InternalEObject)offset).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, null, msgs);
-			if (newOffset != null)
-				msgs = ((InternalEObject)newOffset).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, null, msgs);
-			msgs = basicSetOffset(newOffset, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, newOffset, newOffset));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public Time getRecurrence() {
 		return recurrence;
 	}
@@ -220,6 +175,51 @@
 	 * @generated
 	 */
 	@Override
+	public Time getOffset() {
+		return offset;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOffset(Time newOffset, NotificationChain msgs) {
+		Time oldOffset = offset;
+		offset = newOffset;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, oldOffset, newOffset);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOffset(Time newOffset) {
+		if (newOffset != offset) {
+			NotificationChain msgs = null;
+			if (offset != null)
+				msgs = ((InternalEObject)offset).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, null, msgs);
+			if (newOffset != null)
+				msgs = ((InternalEObject)newOffset).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, null, msgs);
+			msgs = basicSetOffset(newOffset, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET, newOffset, newOffset));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Time getBurstLength() {
 		return burstLength;
 	}
@@ -335,10 +335,10 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
-				return basicSetOffset(null, msgs);
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE:
 				return basicSetRecurrence(null, msgs);
+			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
+				return basicSetOffset(null, msgs);
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__BURST_LENGTH:
 				return basicSetBurstLength(null, msgs);
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OCCURRENCE_MIN_DISTANCE:
@@ -355,10 +355,10 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
-				return getOffset();
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE:
 				return getRecurrence();
+			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
+				return getOffset();
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__BURST_LENGTH:
 				return getBurstLength();
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OCCURRENCE_MIN_DISTANCE:
@@ -377,12 +377,12 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
-				setOffset((Time)newValue);
-				return;
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE:
 				setRecurrence((Time)newValue);
 				return;
+			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
+				setOffset((Time)newValue);
+				return;
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__BURST_LENGTH:
 				setBurstLength((Time)newValue);
 				return;
@@ -404,12 +404,12 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
-				setOffset((Time)null);
-				return;
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE:
 				setRecurrence((Time)null);
 				return;
+			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
+				setOffset((Time)null);
+				return;
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__BURST_LENGTH:
 				setBurstLength((Time)null);
 				return;
@@ -431,10 +431,10 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
-				return offset != null;
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE:
 				return recurrence != null;
+			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET:
+				return offset != null;
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__BURST_LENGTH:
 				return burstLength != null;
 			case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OCCURRENCE_MIN_DISTANCE:
@@ -454,8 +454,8 @@
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == FixedPeriodic.class) {
 			switch (derivedFeatureID) {
-				case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET: return AmaltheaPackage.FIXED_PERIODIC__OFFSET;
 				case AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE: return AmaltheaPackage.FIXED_PERIODIC__RECURRENCE;
+				case AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET: return AmaltheaPackage.FIXED_PERIODIC__OFFSET;
 				default: return -1;
 			}
 		}
@@ -471,8 +471,8 @@
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == FixedPeriodic.class) {
 			switch (baseFeatureID) {
-				case AmaltheaPackage.FIXED_PERIODIC__OFFSET: return AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET;
 				case AmaltheaPackage.FIXED_PERIODIC__RECURRENCE: return AmaltheaPackage.PERIODIC_BURST_STIMULUS__RECURRENCE;
+				case AmaltheaPackage.FIXED_PERIODIC__OFFSET: return AmaltheaPackage.PERIODIC_BURST_STIMULUS__OFFSET;
 				default: return -1;
 			}
 		}
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicStimulusImpl.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicStimulusImpl.java
index 696d9c7..1c800f8 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicStimulusImpl.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicStimulusImpl.java
@@ -36,8 +36,8 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicStimulusImpl#getOffset <em>Offset</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicStimulusImpl#getRecurrence <em>Recurrence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicStimulusImpl#getOffset <em>Offset</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicStimulusImpl#getJitter <em>Jitter</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicStimulusImpl#getMinDistance <em>Min Distance</em>}</li>
  * </ul>
@@ -46,16 +46,6 @@
  */
 public class PeriodicStimulusImpl extends StimulusImpl implements PeriodicStimulus {
 	/**
-	 * The cached value of the '{@link #getOffset() <em>Offset</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getOffset()
-	 * @generated
-	 * @ordered
-	 */
-	protected Time offset;
-
-	/**
 	 * The cached value of the '{@link #getRecurrence() <em>Recurrence</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -66,6 +56,16 @@
 	protected Time recurrence;
 
 	/**
+	 * The cached value of the '{@link #getOffset() <em>Offset</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOffset()
+	 * @generated
+	 * @ordered
+	 */
+	protected Time offset;
+
+	/**
 	 * The cached value of the '{@link #getJitter() <em>Jitter</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -110,51 +110,6 @@
 	 * @generated
 	 */
 	@Override
-	public Time getOffset() {
-		return offset;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetOffset(Time newOffset, NotificationChain msgs) {
-		Time oldOffset = offset;
-		offset = newOffset;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, oldOffset, newOffset);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setOffset(Time newOffset) {
-		if (newOffset != offset) {
-			NotificationChain msgs = null;
-			if (offset != null)
-				msgs = ((InternalEObject)offset).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, null, msgs);
-			if (newOffset != null)
-				msgs = ((InternalEObject)newOffset).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, null, msgs);
-			msgs = basicSetOffset(newOffset, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, newOffset, newOffset));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public Time getRecurrence() {
 		return recurrence;
 	}
@@ -200,6 +155,51 @@
 	 * @generated
 	 */
 	@Override
+	public Time getOffset() {
+		return offset;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOffset(Time newOffset, NotificationChain msgs) {
+		Time oldOffset = offset;
+		offset = newOffset;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, oldOffset, newOffset);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOffset(Time newOffset) {
+		if (newOffset != offset) {
+			NotificationChain msgs = null;
+			if (offset != null)
+				msgs = ((InternalEObject)offset).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, null, msgs);
+			if (newOffset != null)
+				msgs = ((InternalEObject)newOffset).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, null, msgs);
+			msgs = basicSetOffset(newOffset, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_STIMULUS__OFFSET, newOffset, newOffset));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public ITimeDeviation getJitter() {
 		return jitter;
 	}
@@ -292,10 +292,10 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
-				return basicSetOffset(null, msgs);
 			case AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE:
 				return basicSetRecurrence(null, msgs);
+			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
+				return basicSetOffset(null, msgs);
 			case AmaltheaPackage.PERIODIC_STIMULUS__JITTER:
 				return basicSetJitter(null, msgs);
 			case AmaltheaPackage.PERIODIC_STIMULUS__MIN_DISTANCE:
@@ -312,10 +312,10 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
-				return getOffset();
 			case AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE:
 				return getRecurrence();
+			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
+				return getOffset();
 			case AmaltheaPackage.PERIODIC_STIMULUS__JITTER:
 				return getJitter();
 			case AmaltheaPackage.PERIODIC_STIMULUS__MIN_DISTANCE:
@@ -332,12 +332,12 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
-				setOffset((Time)newValue);
-				return;
 			case AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE:
 				setRecurrence((Time)newValue);
 				return;
+			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
+				setOffset((Time)newValue);
+				return;
 			case AmaltheaPackage.PERIODIC_STIMULUS__JITTER:
 				setJitter((ITimeDeviation)newValue);
 				return;
@@ -356,12 +356,12 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
-				setOffset((Time)null);
-				return;
 			case AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE:
 				setRecurrence((Time)null);
 				return;
+			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
+				setOffset((Time)null);
+				return;
 			case AmaltheaPackage.PERIODIC_STIMULUS__JITTER:
 				setJitter((ITimeDeviation)null);
 				return;
@@ -380,10 +380,10 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
-				return offset != null;
 			case AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE:
 				return recurrence != null;
+			case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET:
+				return offset != null;
 			case AmaltheaPackage.PERIODIC_STIMULUS__JITTER:
 				return jitter != null;
 			case AmaltheaPackage.PERIODIC_STIMULUS__MIN_DISTANCE:
@@ -401,8 +401,8 @@
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == FixedPeriodic.class) {
 			switch (derivedFeatureID) {
-				case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET: return AmaltheaPackage.FIXED_PERIODIC__OFFSET;
 				case AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE: return AmaltheaPackage.FIXED_PERIODIC__RECURRENCE;
+				case AmaltheaPackage.PERIODIC_STIMULUS__OFFSET: return AmaltheaPackage.FIXED_PERIODIC__OFFSET;
 				default: return -1;
 			}
 		}
@@ -418,8 +418,8 @@
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == FixedPeriodic.class) {
 			switch (baseFeatureID) {
-				case AmaltheaPackage.FIXED_PERIODIC__OFFSET: return AmaltheaPackage.PERIODIC_STIMULUS__OFFSET;
 				case AmaltheaPackage.FIXED_PERIODIC__RECURRENCE: return AmaltheaPackage.PERIODIC_STIMULUS__RECURRENCE;
+				case AmaltheaPackage.FIXED_PERIODIC__OFFSET: return AmaltheaPackage.PERIODIC_STIMULUS__OFFSET;
 				default: return -1;
 			}
 		}
diff --git a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicSyntheticStimulusImpl.java b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicSyntheticStimulusImpl.java
index 7623c5c..7b6d483 100644
--- a/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicSyntheticStimulusImpl.java
+++ b/plugins/org.eclipse.app4mc.amalthea.model/src-gen/org/eclipse/app4mc/amalthea/model/impl/PeriodicSyntheticStimulusImpl.java
@@ -42,8 +42,8 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicSyntheticStimulusImpl#getOffset <em>Offset</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicSyntheticStimulusImpl#getRecurrence <em>Recurrence</em>}</li>
+ *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicSyntheticStimulusImpl#getOffset <em>Offset</em>}</li>
  *   <li>{@link org.eclipse.app4mc.amalthea.model.impl.PeriodicSyntheticStimulusImpl#getOccurrenceTimes <em>Occurrence Times</em>}</li>
  * </ul>
  *
@@ -51,16 +51,6 @@
  */
 public class PeriodicSyntheticStimulusImpl extends StimulusImpl implements PeriodicSyntheticStimulus {
 	/**
-	 * The cached value of the '{@link #getOffset() <em>Offset</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getOffset()
-	 * @generated
-	 * @ordered
-	 */
-	protected Time offset;
-
-	/**
 	 * The cached value of the '{@link #getRecurrence() <em>Recurrence</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -71,6 +61,16 @@
 	protected Time recurrence;
 
 	/**
+	 * The cached value of the '{@link #getOffset() <em>Offset</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOffset()
+	 * @generated
+	 * @ordered
+	 */
+	protected Time offset;
+
+	/**
 	 * The cached value of the '{@link #getOccurrenceTimes() <em>Occurrence Times</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -105,51 +105,6 @@
 	 * @generated
 	 */
 	@Override
-	public Time getOffset() {
-		return offset;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetOffset(Time newOffset, NotificationChain msgs) {
-		Time oldOffset = offset;
-		offset = newOffset;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, oldOffset, newOffset);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setOffset(Time newOffset) {
-		if (newOffset != offset) {
-			NotificationChain msgs = null;
-			if (offset != null)
-				msgs = ((InternalEObject)offset).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, null, msgs);
-			if (newOffset != null)
-				msgs = ((InternalEObject)newOffset).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, null, msgs);
-			msgs = basicSetOffset(newOffset, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, newOffset, newOffset));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public Time getRecurrence() {
 		return recurrence;
 	}
@@ -195,6 +150,51 @@
 	 * @generated
 	 */
 	@Override
+	public Time getOffset() {
+		return offset;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOffset(Time newOffset, NotificationChain msgs) {
+		Time oldOffset = offset;
+		offset = newOffset;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, oldOffset, newOffset);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOffset(Time newOffset) {
+		if (newOffset != offset) {
+			NotificationChain msgs = null;
+			if (offset != null)
+				msgs = ((InternalEObject)offset).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, null, msgs);
+			if (newOffset != null)
+				msgs = ((InternalEObject)newOffset).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, null, msgs);
+			msgs = basicSetOffset(newOffset, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET, newOffset, newOffset));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EList<Time> getOccurrenceTimes() {
 		if (occurrenceTimes == null) {
 			occurrenceTimes = new EObjectContainmentEList<Time>(Time.class, this, AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OCCURRENCE_TIMES);
@@ -210,10 +210,10 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
-				return basicSetOffset(null, msgs);
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE:
 				return basicSetRecurrence(null, msgs);
+			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
+				return basicSetOffset(null, msgs);
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OCCURRENCE_TIMES:
 				return ((InternalEList<?>)getOccurrenceTimes()).basicRemove(otherEnd, msgs);
 		}
@@ -228,10 +228,10 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
-				return getOffset();
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE:
 				return getRecurrence();
+			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
+				return getOffset();
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OCCURRENCE_TIMES:
 				return getOccurrenceTimes();
 		}
@@ -247,12 +247,12 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
-				setOffset((Time)newValue);
-				return;
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE:
 				setRecurrence((Time)newValue);
 				return;
+			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
+				setOffset((Time)newValue);
+				return;
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OCCURRENCE_TIMES:
 				getOccurrenceTimes().clear();
 				getOccurrenceTimes().addAll((Collection<? extends Time>)newValue);
@@ -269,12 +269,12 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
-				setOffset((Time)null);
-				return;
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE:
 				setRecurrence((Time)null);
 				return;
+			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
+				setOffset((Time)null);
+				return;
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OCCURRENCE_TIMES:
 				getOccurrenceTimes().clear();
 				return;
@@ -290,10 +290,10 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
-				return offset != null;
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE:
 				return recurrence != null;
+			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET:
+				return offset != null;
 			case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OCCURRENCE_TIMES:
 				return occurrenceTimes != null && !occurrenceTimes.isEmpty();
 		}
@@ -309,8 +309,8 @@
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == FixedPeriodic.class) {
 			switch (derivedFeatureID) {
-				case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET: return AmaltheaPackage.FIXED_PERIODIC__OFFSET;
 				case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE: return AmaltheaPackage.FIXED_PERIODIC__RECURRENCE;
+				case AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET: return AmaltheaPackage.FIXED_PERIODIC__OFFSET;
 				default: return -1;
 			}
 		}
@@ -326,8 +326,8 @@
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == FixedPeriodic.class) {
 			switch (baseFeatureID) {
-				case AmaltheaPackage.FIXED_PERIODIC__OFFSET: return AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET;
 				case AmaltheaPackage.FIXED_PERIODIC__RECURRENCE: return AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__RECURRENCE;
+				case AmaltheaPackage.FIXED_PERIODIC__OFFSET: return AmaltheaPackage.PERIODIC_SYNTHETIC_STIMULUS__OFFSET;
 				default: return -1;
 			}
 		}