Merge branch 'master' of https://sedlund@git.eclipse.org/r/stem/org.eclipse.stem.git
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java
index 79e1a45..06f3b3c 100644
--- a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java
@@ -1548,7 +1548,7 @@
 		if (getCreated() != null && !getCreated().equals("")) {
 			result.append("created=\"");
 			result.append(getCreated().trim());
-			result.append("\" ");
+			result.append("\" "); 
 		}
 		if (getLicense() != null && !getLicense().equals("")) {
 			result.append("license=\"");
@@ -1590,6 +1590,40 @@
 	public static String createISO8601DateString(final Date date) {
 		return (new SimpleDateFormat("yyyy-MM-dd")).format(date);
 	} // createISO8601DateString
+	
+	/**
+	 * Create a date string that conforms to ISO&nbsp;8601 <a
+	 * href="http://www.w3.org/TR/NOTE-datetime">
+	 * http://www.w3.org/TR/NOTE-datetime</a>.
+	 * <ul>
+	 * <li>Example:</li>
+	 * 2006-03-29
+	 * </ul>
+	 * 
+	 * @see #getDate()
+	 * @see #getCreated()
+	 * @see #getValid()
+	 */
+	public static String createISO8601DateStringMillis(final Date date) {
+		return (new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")).format(date);
+	} // createISO8601DateString
+	
+	/**
+	 * Create a date string that conforms to ISO&nbsp;8601 <a
+	 * href="http://www.w3.org/TR/NOTE-datetime">
+	 * http://www.w3.org/TR/NOTE-datetime</a>.
+	 * <ul>
+	 * <li>Example:</li>
+	 * 2006-03-29
+	 * </ul>
+	 * 
+	 * @see #getDate()
+	 * @see #getCreated()
+	 * @see #getValid()
+	 */
+	public static String createISO8601DateStringSeconds(final Date date) {
+		return (new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")).format(date);
+	} // createISO8601DateString
 
 	/**
 	 * Create a Date from a string that conforms to ISO&nbsp;8601 <a
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java
index 8a98c9b..8cab965 100644
--- a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java
@@ -26,7 +26,7 @@
 //import org.eclipse.stem.core.model.Decorator;
 //import org.eclipse.stem.core.model.ModelPackage;
 
-/**
+/** 
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Dynamic Edge Label</b></em>'.
  * <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java
index 8df5397..4d95db5 100644
--- a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java
@@ -231,7 +231,7 @@
 	 * @generated NOT
 	 */
 	public void switchToNextValue() {
-		assert isNextValueValid();
+		if (!isNextValueValid()) return;
 
 		// This is the old code causing 
 		// an inverse removal and attachment
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
index add40e5..d9e4dd2 100644
--- a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
@@ -13,7 +13,6 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
-import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
@@ -22,7 +21,6 @@
 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.core.common.provider.CoreEditPlugin;
 import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
-import org.eclipse.stem.core.logger.Logger;
 
 /**
  * This is the item provider adapter for a {@link org.eclipse.stem.core.logger.Logger} object.
@@ -78,15 +76,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((Logger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_Logger_type") : //$NON-NLS-1$
-			getString("_UI_Logger_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java
index d7935a7..40ee631 100644
--- a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java
@@ -13,7 +13,10 @@
  
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.Set;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
@@ -31,6 +34,8 @@
 import org.eclipse.stem.core.common.impl.IdentifiableFilterImpl;
 import org.eclipse.stem.core.common.impl.IdentifiableImpl;
 import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.NodeLabel;
 import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
 import org.eclipse.stem.core.logger.Logger;
 import org.eclipse.stem.core.model.Decorator;
@@ -38,6 +43,7 @@
 import org.eclipse.stem.core.model.Model;
 import org.eclipse.stem.core.model.ModelPackage;
 import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.model.TransformationDecorator;
 import org.eclipse.stem.core.scenario.Scenario;
 import org.eclipse.stem.core.scenario.ScenarioInitializationException;
 import org.eclipse.stem.core.scenario.ScenarioPackage;
@@ -424,14 +430,37 @@
 		ArrayList<Decorator>intDecorators = new ArrayList<Decorator>();
 		ArrayList<Decorator>otherDecorators = new ArrayList<Decorator>();
 		
+		Set<URI> initialDecoratorUris = new HashSet<URI>();
+		getAllIntegrationDecoratorsFromModel(getModel(), initialDecoratorUris);
+		
 		for (final Iterator<Decorator> graphDecoratorIter = getCanonicalGraph().getDecorators()
 				.iterator(); graphDecoratorIter.hasNext();) {
 			final Decorator decorator = graphDecoratorIter
 					.next();
-			if(decorator instanceof IntegrationDecorator)intDecorators.add(decorator);
-			else otherDecorators.add(decorator);
+			
+			boolean remove = true;
+			if (decorator instanceof IntegrationDecorator && 
+					!(decorator instanceof TransformationDecorator)) {
+				for (URI uri : initialDecoratorUris) {
+					if (uri != null && decorator.getURI() != null && uri.equals(decorator.getURI())) {
+						remove = false;
+						break;
+					}
+				}
+				if (remove) {
+					graphDecoratorIter.remove();
+					continue;
+				}
+
+			}
+			
+			if (decorator instanceof IntegrationDecorator) {
+				intDecorators.add(decorator);
+			} else {
+				otherDecorators.add(decorator);
+			}
 		}
-		for(Decorator decorator:intDecorators){
+		for(Decorator decorator : intDecorators){
 			// Is the Decorator enabled?
 			if (decorator.isEnabled()) {
 				// Yes
@@ -450,10 +479,60 @@
 			// Reset the solver
 		} // for each decorator
 	
+		pruneLabels();
 		getSolver().reset();
 	}// reset
 
 	/**
+	 * Removes labels whose decorator is not contained within the canonical graph.
+	 * This is a clean up step for returning the scenario back to initial state 
+	 * during a reset
+	 */
+	private void pruneLabels() {
+		final EList<Decorator> currentDecorators = getCanonicalGraph().getDecorators();
+		for (final Iterator<Entry<URI,NodeLabel>> nodeIter = getCanonicalGraph().getNodeLabels()
+				.iterator(); nodeIter.hasNext();) {
+			final NodeLabel label = nodeIter.next().getValue();
+			if (label instanceof IntegrationLabel) { 
+				Decorator d = ((IntegrationLabel)label).getDecorator();
+				if (!currentDecorators.contains(d)) {					
+					nodeIter.remove();
+				}
+			}
+		}
+	}
+	
+	/**
+	 * Returns a unique set of {@link URI}s containing all {@link IntegrationDecorator} instances
+	 * from the underlying {@link Model} list of node, edge, and graph decorators.
+	 * @param model	The STEM {@link Model} object to search
+	 * @param filtered The filtered list of {@link Model} {@link URI}s
+	 */
+	private static void getAllIntegrationDecoratorsFromModel(Model model, Set<URI> filtered) {
+		filterIntegrationDecorators(model.getNodeDecorators(), filtered);
+		filterIntegrationDecorators(model.getEdgeDecorators(), filtered);
+		filterIntegrationDecorators(model.getGraphDecorators(), filtered);
+		for (Model childModel : model.getModels()) {
+			getAllIntegrationDecoratorsFromModel(childModel, filtered);
+		}
+	}
+	
+	/**
+	 * Filter {@link IntegrationDecorator} instances and add the associated {@link URI} to 
+	 * from the list of {@link Decorator}s.
+	 * 
+	 * @param decorators
+	 * @param filtered
+	 */
+	private static void filterIntegrationDecorators(EList<? extends Decorator> decorators, Set<URI> filtered) {
+		for (Decorator d : decorators) {
+			if (d instanceof IntegrationDecorator) {
+				filtered.add(d.getURI());
+			}
+		}
+	}
+	
+	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * 
 	 * @generated NOT
diff --git a/core/org.eclipse.stem.definitions/META-INF/MANIFEST.MF b/core/org.eclipse.stem.definitions/META-INF/MANIFEST.MF
index 39d4084..c1462e1 100644
--- a/core/org.eclipse.stem.definitions/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.stem.definitions/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.stem.definitions; singleton:=true
+Bundle-SymbolicName: org.eclipse.stem.definitions;singleton:=true
 Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.stem.definitions.Activator
@@ -15,6 +15,7 @@
  org.eclipse.stem.definitions.adapters.spatial.geo.preferences,
  org.eclipse.stem.definitions.edges,
  org.eclipse.stem.definitions.edges.impl,
+ org.eclipse.stem.definitions.edges.presentation,
  org.eclipse.stem.definitions.edges.provider,
  org.eclipse.stem.definitions.edges.util,
  org.eclipse.stem.definitions.functions,
@@ -36,7 +37,12 @@
  org.eclipse.stem.definitions.types.util
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.core.resources;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.stem.core;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
  org.eclipse.stem.geography,
  org.eclipse.ui.ide;visibility:=reexport
 Bundle-ActivationPolicy: lazy
diff --git a/core/org.eclipse.stem.definitions/icons/full/obj16/DoubleLabelValue.gif b/core/org.eclipse.stem.definitions/icons/full/obj16/DoubleLabelValue.gif
new file mode 100644
index 0000000..48e3cf2
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/icons/full/obj16/DoubleLabelValue.gif
Binary files differ
diff --git a/core/org.eclipse.stem.definitions/icons/full/obj16/GenericLabelValue.gif b/core/org.eclipse.stem.definitions/icons/full/obj16/GenericLabelValue.gif
new file mode 100644
index 0000000..cb1755a
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/icons/full/obj16/GenericLabelValue.gif
Binary files differ
diff --git a/core/org.eclipse.stem.definitions/icons/full/obj16/IntegerLabelValue.gif b/core/org.eclipse.stem.definitions/icons/full/obj16/IntegerLabelValue.gif
new file mode 100644
index 0000000..b3643da
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/icons/full/obj16/IntegerLabelValue.gif
Binary files differ
diff --git a/core/org.eclipse.stem.definitions/icons/full/obj16/KeyValueLabelValue.gif b/core/org.eclipse.stem.definitions/icons/full/obj16/KeyValueLabelValue.gif
new file mode 100644
index 0000000..90d10f9
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/icons/full/obj16/KeyValueLabelValue.gif
Binary files differ
diff --git a/core/org.eclipse.stem.definitions/icons/full/obj16/LongLabelValue.gif b/core/org.eclipse.stem.definitions/icons/full/obj16/LongLabelValue.gif
new file mode 100644
index 0000000..89ad5da
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/icons/full/obj16/LongLabelValue.gif
Binary files differ
diff --git a/core/org.eclipse.stem.definitions/icons/full/obj16/StringLabelValue.gif b/core/org.eclipse.stem.definitions/icons/full/obj16/StringLabelValue.gif
new file mode 100644
index 0000000..afb82ea
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/icons/full/obj16/StringLabelValue.gif
Binary files differ
diff --git a/core/org.eclipse.stem.definitions/model/definitions.genmodel b/core/org.eclipse.stem.definitions/model/definitions.genmodel
index 3f78f0d..1e549a5 100644
--- a/core/org.eclipse.stem.definitions/model/definitions.genmodel
+++ b/core/org.eclipse.stem.definitions/model/definitions.genmodel
@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<genmodel:GenModel xmi:version="2.0"
-    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText=""
-    modelDirectory="/org.eclipse.stem.definitions/src" editDirectory="/org.eclipse.stem.definitions/src"
-    editorDirectory="/org.eclipse.stem.definitions/src" modelPluginID="org.eclipse.stem.definitions"
-    redirection="" modelName="Definitions" nonNLSMarkers="true" testsDirectory="/org.eclipse.stem.tests.definitions/src"
-    importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false"
-    runtimeVersion="2.6" usedGenPackages="../../org.eclipse.stem.core/model/core.genmodel#//graph ../../org.eclipse.stem.core/model/core.genmodel#//common ../../org.eclipse.stem.core/model/core.genmodel#//model platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.stem.core/model/core.genmodel#//modifier ../../org.eclipse.stem.core/model/core.genmodel#//scenario ../../org.eclipse.stem.core/model/core.genmodel#//sequencer ../../org.eclipse.stem.core/model/core.genmodel#//solver ../../org.eclipse.stem.core/model/core.genmodel#//logger">
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="" modelDirectory="/org.eclipse.stem.definitions/src"
+    editDirectory="/org.eclipse.stem.definitions/src" editorDirectory="/org.eclipse.stem.definitions/src"
+    modelPluginID="org.eclipse.stem.definitions" redirection="" modelName="Definitions"
+    nonNLSMarkers="true" testsDirectory="/org.eclipse.stem.tests.definitions/src"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0" copyrightFields="false"
+    runtimeVersion="2.9" usedGenPackages="../../org.eclipse.stem.core/model/core.genmodel#//graph ../../org.eclipse.stem.core/model/core.genmodel#//common ../../org.eclipse.stem.core/model/core.genmodel#//model platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.stem.core/model/core.genmodel#//modifier ../../org.eclipse.stem.core/model/core.genmodel#//scenario ../../org.eclipse.stem.core/model/core.genmodel#//sequencer ../../org.eclipse.stem.core/model/core.genmodel#//solver ../../org.eclipse.stem.core/model/core.genmodel#//logger">
   <foreignModel>edges.ecore</foreignModel>
   <foreignModel>labels.ecore</foreignModel>
   <foreignModel>nodes.ecore</foreignModel>
@@ -128,6 +127,18 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute labels.ecore#//EarthScienceLabelValue/range"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute labels.ecore#//EarthScienceLabelValue/validYear"/>
     </genClasses>
+    <genClasses ecoreClass="labels.ecore#//GenericLabelValue">
+      <genTypeParameters ecoreTypeParameter="labels.ecore#//GenericLabelValue/T"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute labels.ecore#//GenericLabelValue/value"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute labels.ecore#//GenericLabelValue/unit"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute labels.ecore#//GenericLabelValue/measure"/>
+      <genOperations ecoreOperation="labels.ecore#//GenericLabelValue/getJavaTypeClass"/>
+    </genClasses>
+    <genClasses ecoreClass="labels.ecore#//DoubleLabelValue"/>
+    <genClasses ecoreClass="labels.ecore#//IntegerLabelValue"/>
+    <genClasses ecoreClass="labels.ecore#//LongLabelValue"/>
+    <genClasses ecoreClass="labels.ecore#//StringLabelValue"/>
+    <genClasses ecoreClass="labels.ecore#//KeyValueLabelValue"/>
   </genPackages>
   <genPackages prefix="Nodes" basePackage="org.eclipse.stem.definitions" disposableProviderFactory="true"
       generateExampleClass="false" multipleEditorPages="false" generateModelWizard="false"
diff --git a/core/org.eclipse.stem.definitions/model/labels.ecore b/core/org.eclipse.stem.definitions/model/labels.ecore
index 33b8c9d..a3a6559 100644
--- a/core/org.eclipse.stem.definitions/model/labels.ecore
+++ b/core/org.eclipse.stem.definitions/model/labels.ecore
@@ -126,4 +126,45 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="validYear" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
         defaultValueLiteral="0"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="GenericLabelValue" eSuperTypes="../../org.eclipse.stem.core/model/graph.ecore#//LabelValue">
+    <eTypeParameters name="T"/>
+    <eOperations name="getJavaTypeClass">
+      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
+        <eTypeArguments/>
+      </eGenericType>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value">
+      <eGenericType eTypeParameter="#//GenericLabelValue/T"/>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="measure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DoubleLabelValue">
+    <eGenericSuperTypes eClassifier="#//GenericLabelValue">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IntegerLabelValue">
+    <eGenericSuperTypes eClassifier="#//GenericLabelValue">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LongLabelValue">
+    <eGenericSuperTypes eClassifier="#//GenericLabelValue">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringLabelValue">
+    <eGenericSuperTypes eClassifier="#//GenericLabelValue">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="KeyValueLabelValue">
+    <eGenericSuperTypes eClassifier="#//GenericLabelValue">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eTypeArguments/>
+      </eTypeArguments>
+    </eGenericSuperTypes>
+  </eClassifiers>
 </ecore:EPackage>
diff --git a/core/org.eclipse.stem.definitions/plugin.properties b/core/org.eclipse.stem.definitions/plugin.properties
index 584f8c7..7a282d9 100644
--- a/core/org.eclipse.stem.definitions/plugin.properties
+++ b/core/org.eclipse.stem.definitions/plugin.properties
Binary files differ
diff --git a/core/org.eclipse.stem.definitions/plugin.xml b/core/org.eclipse.stem.definitions/plugin.xml
index ba8014d..6733e6b 100644
--- a/core/org.eclipse.stem.definitions/plugin.xml
+++ b/core/org.eclipse.stem.definitions/plugin.xml
@@ -46,6 +46,19 @@
                org.eclipse.emf.edit.provider.IItemPropertySource"/>
    </extension>
 
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated definitions -->
+      <factory
+            uri="http:///org/eclipse/stem/definitions/types.ecore"
+            class="org.eclipse.stem.definitions.types.provider.TypesItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
    <extension point="org.eclipse.emf.ecore.generated_package">
       <package
             uri="http:///org/eclipse/stem/definitions/edges.ecore"
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdge.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdge.java
index 84193ac..9eac599 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdge.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdge.java
@@ -14,10 +14,10 @@
  *

  * <p>

  * The following features are supported:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.definitions.edges.MixingEdge#isUseAbsoluteValues <em>Use Absolute Values</em>}</li>

  * </ul>

- * </p>

  *

  * @see org.eclipse.stem.definitions.edges.EdgesPackage#getMixingEdge()

  * @model

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdgeLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdgeLabelValue.java
index 9c3ce3d..55e44bd 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdgeLabelValue.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/MixingEdgeLabelValue.java
@@ -15,10 +15,10 @@
  *

  * <p>

  * The following features are supported:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.definitions.edges.MixingEdgeLabelValue#getMixingRate <em>Mixing Rate</em>}</li>

  * </ul>

- * </p>

  *

  * @see org.eclipse.stem.definitions.edges.EdgesPackage#getMixingEdgeLabelValue()

  * @model

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/PopulationEdge.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/PopulationEdge.java
index 817c4df..9ac6bb6 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/PopulationEdge.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/PopulationEdge.java
@@ -19,10 +19,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.edges.PopulationEdge#getPopulationIdentifier <em>Population Identifier</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.definitions.edges.EdgesPackage#getPopulationEdge()
  * @model
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/EdgesFactoryImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/EdgesFactoryImpl.java
index 05c6759..6595fb0 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/EdgesFactoryImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/EdgesFactoryImpl.java
@@ -16,6 +16,7 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.definitions.edges.*;
 import org.eclipse.stem.definitions.edges.EdgesFactory;
 import org.eclipse.stem.definitions.edges.EdgesPackage;
 import org.eclipse.stem.definitions.edges.MigrationEdge;
@@ -41,7 +42,7 @@
 	 */
 	public static EdgesFactory init() {
 		try {
-			EdgesFactory theEdgesFactory = (EdgesFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/definitions/edges.ecore"); //$NON-NLS-1$ 
+			EdgesFactory theEdgesFactory = (EdgesFactory)EPackage.Registry.INSTANCE.getEFactory(EdgesPackage.eNS_URI);
 			if (theEdgesFactory != null) {
 				return theEdgesFactory;
 			}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeImpl.java
index 615cc3d..6e920b3 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeImpl.java
@@ -26,10 +26,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.edges.impl.MigrationEdgeImpl#isUseAbsoluteValues <em>Use Absolute Values</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelImpl.java
index adae48c..3f34659 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelImpl.java
@@ -29,8 +29,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Migration Edge Label</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelValueImpl.java
index 0ce430c..a3dcdf1 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MigrationEdgeLabelValueImpl.java
@@ -24,11 +24,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.edges.impl.MigrationEdgeLabelValueImpl#getMigrationRate <em>Migration Rate</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.edges.impl.MigrationEdgeLabelValueImpl#getTimePeriod <em>Time Period</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeImpl.java
index 3ab9bd3..e3873c8 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeImpl.java
@@ -21,11 +21,11 @@
  * <!-- end-user-doc -->

  * <p>

  * The following features are implemented:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.definitions.edges.impl.MixingEdgeImpl#isUseAbsoluteValues <em>Use Absolute Values</em>}</li>

  * </ul>

- * </p>

- * 

+ *

  * @generated

  */

 public class MixingEdgeImpl extends PopulationEdgeImpl implements MixingEdge {

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelImpl.java
index 0637292..ba13883 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelImpl.java
@@ -24,8 +24,6 @@
  * <!-- begin-user-doc -->

  * An implementation of the model object '<em><b>Mixing Edge Label</b></em>'.

  * <!-- end-user-doc -->

- * <p>

- * </p>

  *

  * @generated

  */

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelValueImpl.java
index 708e8a3..e504f5a 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/MixingEdgeLabelValueImpl.java
@@ -19,10 +19,10 @@
  * <!-- end-user-doc -->

  * <p>

  * The following features are implemented:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.definitions.edges.impl.MixingEdgeLabelValueImpl#getMixingRate <em>Mixing Rate</em>}</li>

  * </ul>

- * </p>

  *

  * @generated

  */

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/PopulationEdgeImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/PopulationEdgeImpl.java
index 341f951..a9dd7ee 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/PopulationEdgeImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/impl/PopulationEdgeImpl.java
@@ -24,10 +24,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.edges.impl.PopulationEdgeImpl#getPopulationIdentifier <em>Population Identifier</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesActionBarContributor.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesActionBarContributor.java
index e93cd88..471429d 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesActionBarContributor.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesActionBarContributor.java
@@ -206,8 +206,7 @@
 		//
 		submenuManager.addMenuListener
 			(new IMenuListener() {
-				 @Override
-				public void menuAboutToShow(IMenuManager menuManager) {
+				 public void menuAboutToShow(IMenuManager menuManager) {
 					 menuManager.updateAll(true);
 				 }
 			 });
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesEditor.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesEditor.java
index 66ac52b..45db06a 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesEditor.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/presentation/EdgesEditor.java
@@ -80,6 +80,7 @@
 import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.ISelectionProvider;
@@ -105,6 +106,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
 import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.events.ControlAdapter;
 import org.eclipse.swt.events.ControlEvent;
@@ -187,7 +189,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PropertySheetPage propertySheetPage;
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
 
 	/**
 	 * This is the viewer that shadows the selection in the content outline.
@@ -247,7 +249,6 @@
 	 */
 	protected IPartListener partListener =
 		new IPartListener() {
-			@Override
 			public void partActivated(IWorkbenchPart p) {
 				if (p instanceof ContentOutline) {
 					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
@@ -257,7 +258,7 @@
 					}
 				}
 				else if (p instanceof PropertySheet) {
-					if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
 						getActionBarContributor().setActiveEditor(EdgesEditor.this);
 						handleActivate();
 					}
@@ -266,19 +267,15 @@
 					handleActivate();
 				}
 			}
-			@Override
 			public void partBroughtToTop(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partClosed(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partDeactivated(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partOpened(IWorkbenchPart p) {
 				// Ignore.
 			}
@@ -351,8 +348,7 @@
 							if (updateProblemIndication) {
 								getSite().getShell().getDisplay().asyncExec
 									(new Runnable() {
-										 @Override
-										public void run() {
+										 public void run() {
 											 updateProblemIndication();
 										 }
 									 });
@@ -374,6 +370,15 @@
 			@Override
 			protected void unsetTarget(Resource target) {
 				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
 			}
 		};
 
@@ -385,7 +390,6 @@
 	 */
 	protected IResourceChangeListener resourceChangeListener =
 		new IResourceChangeListener() {
-			@Override
 			public void resourceChanged(IResourceChangeEvent event) {
 				IResourceDelta delta = event.getDelta();
 				try {
@@ -394,7 +398,6 @@
 						protected Collection<Resource> changedResources = new ArrayList<Resource>();
 						protected Collection<Resource> removedResources = new ArrayList<Resource>();
 
-						@Override
 						public boolean visit(IResourceDelta delta) {
 							if (delta.getResource().getType() == IResource.FILE) {
 								if (delta.getKind() == IResourceDelta.REMOVED ||
@@ -409,6 +412,7 @@
 										}
 									}
 								}
+								return false;
 							}
 
 							return true;
@@ -429,8 +433,7 @@
 					if (!visitor.getRemovedResources().isEmpty()) {
 						getSite().getShell().getDisplay().asyncExec
 							(new Runnable() {
-								 @Override
-								public void run() {
+								 public void run() {
 									 removedResources.addAll(visitor.getRemovedResources());
 									 if (!isDirty()) {
 										 getSite().getPage().closeEditor(EdgesEditor.this, false);
@@ -442,8 +445,7 @@
 					if (!visitor.getChangedResources().isEmpty()) {
 						getSite().getShell().getDisplay().asyncExec
 							(new Runnable() {
-								 @Override
-								public void run() {
+								 public void run() {
 									 changedResources.addAll(visitor.getChangedResources());
 									 if (getSite().getPage().getActiveEditor() == EdgesEditor.this) {
 										 handleActivate();
@@ -647,12 +649,10 @@
 		//
 		commandStack.addCommandStackListener
 			(new CommandStackListener() {
-				 @Override
-				public void commandStackChanged(final EventObject event) {
+				 public void commandStackChanged(final EventObject event) {
 					 getContainer().getDisplay().asyncExec
 						 (new Runnable() {
-							  @Override
-							public void run() {
+							  public void run() {
 								  firePropertyChange(IEditorPart.PROP_DIRTY);
 
 								  // Try to select the affected objects.
@@ -661,8 +661,14 @@
 								  if (mostRecentCommand != null) {
 									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
 								  }
-								  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
-									  propertySheetPage.refresh();
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
 								  }
 							  }
 						  });
@@ -698,7 +704,6 @@
 		if (theSelection != null && !theSelection.isEmpty()) {
 			Runnable runnable =
 				new Runnable() {
-					@Override
 					public void run() {
 						// Try to select the items in the current content viewer of the editor.
 						//
@@ -801,7 +806,6 @@
 					new ISelectionChangedListener() {
 						// This just notifies those things that are affected by the section.
 						//
-						@Override
 						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
 							setSelection(selectionChangedEvent.getSelection());
 						}
@@ -857,7 +861,7 @@
 		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
 
 		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
-		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
 		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
 		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
 	}
@@ -897,10 +901,11 @@
 	 * @generated
 	 */
 	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
-		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+		boolean hasErrors = !resource.getErrors().isEmpty();
+		if (hasErrors || !resource.getWarnings().isEmpty()) {
 			BasicDiagnostic basicDiagnostic =
 				new BasicDiagnostic
-					(Diagnostic.ERROR,
+					(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING,
 					 "org.eclipse.stem.definitions", //$NON-NLS-1$
 					 0,
 					 getString("_UI_CreateModelError_message", resource.getURI()), //$NON-NLS-1$
@@ -956,8 +961,7 @@
 
 			getSite().getShell().getDisplay().asyncExec
 				(new Runnable() {
-					 @Override
-					public void run() {
+					 public void run() {
 						 setActivePage(0);
 					 }
 				 });
@@ -981,8 +985,7 @@
 
 		getSite().getShell().getDisplay().asyncExec
 			(new Runnable() {
-				 @Override
-				public void run() {
+				 public void run() {
 					 updateProblemIndication();
 				 }
 			 });
@@ -1117,8 +1120,7 @@
 				(new ISelectionChangedListener() {
 					 // This ensures that we handle selections correctly.
 					 //
-					 @Override
-					public void selectionChanged(SelectionChangedEvent event) {
+					 public void selectionChanged(SelectionChangedEvent event) {
 						 handleContentOutlineSelection(event.getSelection());
 					 }
 				 });
@@ -1134,23 +1136,22 @@
 	 * @generated
 	 */
 	public IPropertySheetPage getPropertySheetPage() {
-		if (propertySheetPage == null) {
-			propertySheetPage =
-				new ExtendedPropertySheetPage(editingDomain) {
-					@Override
-					public void setSelectionToViewer(List<?> selection) {
-						EdgesEditor.this.setSelectionToViewer(selection);
-						EdgesEditor.this.setFocus();
-					}
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					EdgesEditor.this.setSelectionToViewer(selection);
+					EdgesEditor.this.setFocus();
+				}
 
-					@Override
-					public void setActionBars(IActionBars actionBars) {
-						super.setActionBars(actionBars);
-						getActionBarContributor().shareGlobalActions(this, actionBars);
-					}
-				};
-			propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
-		}
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
 
 		return propertySheetPage;
 	}
@@ -1205,6 +1206,7 @@
 		//
 		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
 		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
 
 		// Do the work within an operation because this is a long running activity that modifies the workbench.
 		//
@@ -1257,7 +1259,7 @@
 
 	/**
 	 * This returns whether something has been persisted to the URI of the specified resource.
-	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1330,20 +1332,9 @@
 	 */
 	@Override
 	public void gotoMarker(IMarker marker) {
-		try {
-			if (marker.getType().equals(EValidator.MARKER)) {
-				String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
-				if (uriAttribute != null) {
-					URI uri = URI.createURI(uriAttribute);
-					EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
-					if (eObject != null) {
-					  setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
-					}
-				}
-			}
-		}
-		catch (CoreException exception) {
-			DefinitionsEditPlugin.INSTANCE.log(exception);
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
 		}
 	}
 
@@ -1534,7 +1525,7 @@
 			getActionBarContributor().setActiveEditor(null);
 		}
 
-		if (propertySheetPage != null) {
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
 			propertySheetPage.dispose();
 		}
 
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeItemProvider.java
index f48fb4c..2886e32 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeItemProvider.java
@@ -37,13 +37,7 @@
  * @generated
  */
 public class MigrationEdgeItemProvider
-	extends PopulationEdgeItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends PopulationEdgeItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelItemProvider.java
index 39b0508..04d91fe 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelItemProvider.java
@@ -37,13 +37,7 @@
  * @generated
  */
 public class MigrationEdgeLabelItemProvider
-	extends EdgeLabelItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends EdgeLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelValueItemProvider.java
index 759a264..a070609 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MigrationEdgeLabelValueItemProvider.java
@@ -38,13 +38,7 @@
  * @generated
  */
 public class MigrationEdgeLabelValueItemProvider
-	extends LabelValueItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends LabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeItemProvider.java
index fcfed9f..fbf4cea 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeItemProvider.java
@@ -12,6 +12,7 @@
 

 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.util.URI;

 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

 import org.eclipse.emf.edit.provider.IItemLabelProvider;

@@ -31,13 +32,7 @@
  * @generated

  */

 public class MixingEdgeItemProvider

-	extends PopulationEdgeItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends PopulationEdgeItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelItemProvider.java
index 0b464be..be26309 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelItemProvider.java
@@ -13,6 +13,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

 import org.eclipse.emf.common.util.ResourceLocator;

+import org.eclipse.emf.common.util.URI;

 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

 import org.eclipse.emf.edit.provider.IItemLabelProvider;

 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

@@ -22,6 +23,7 @@
 import org.eclipse.stem.core.graph.Edge;

 import org.eclipse.stem.core.graph.EdgeLabel;

 import org.eclipse.stem.core.graph.provider.EdgeLabelItemProvider;

+import org.eclipse.stem.definitions.edges.MixingEdgeLabel;

 import org.eclipse.stem.geography.names.GeographicNames;

 

 /**

@@ -31,13 +33,7 @@
  * @generated

  */

 public class MixingEdgeLabelItemProvider

-	extends EdgeLabelItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends EdgeLabelItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelValueItemProvider.java
index 23bc185..b80fbe1 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/MixingEdgeLabelValueItemProvider.java
@@ -33,13 +33,7 @@
  * @generated

  */

 public class MixingEdgeLabelValueItemProvider

-	extends LabelValueItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends LabelValueItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/PopulationEdgeItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/PopulationEdgeItemProvider.java
index 8634208..efe9eec 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/PopulationEdgeItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/provider/PopulationEdgeItemProvider.java
@@ -41,13 +41,7 @@
  * @generated
  */
 public class PopulationEdgeItemProvider
-	extends EdgeItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends EdgeItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesAdapterFactory.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesAdapterFactory.java
index a4e4f4f..71d4468 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesAdapterFactory.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesAdapterFactory.java
@@ -22,6 +22,7 @@
 import org.eclipse.stem.core.graph.Label;
 import org.eclipse.stem.core.graph.LabelValue;
 import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.definitions.edges.*;
 import org.eclipse.stem.definitions.edges.EdgesPackage;
 import org.eclipse.stem.definitions.edges.MigrationEdge;
 import org.eclipse.stem.definitions.edges.MigrationEdgeLabel;
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesSwitch.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesSwitch.java
index 8b19fe6..748b733 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesSwitch.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/edges/util/EdgesSwitch.java
@@ -15,6 +15,8 @@
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
 import org.eclipse.stem.core.common.Identifiable;
 import org.eclipse.stem.core.common.SanityChecker;
 import org.eclipse.stem.core.graph.Edge;
@@ -22,6 +24,7 @@
 import org.eclipse.stem.core.graph.Label;
 import org.eclipse.stem.core.graph.LabelValue;
 import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.definitions.edges.*;
 import org.eclipse.stem.definitions.edges.EdgesPackage;
 import org.eclipse.stem.definitions.edges.MigrationEdge;
 import org.eclipse.stem.definitions.edges.MigrationEdgeLabel;
@@ -44,7 +47,7 @@
  * @see org.eclipse.stem.definitions.edges.EdgesPackage
  * @generated
  */
-public class EdgesSwitch<T1> {
+public class EdgesSwitch<T1> extends Switch<T1> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -66,14 +69,16 @@
 	}
 
 	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
-	public T1 doSwitch(EObject theEObject) {
-		return doSwitch(theEObject.eClass(), theEObject);
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
 	}
 
 	/**
@@ -83,26 +88,7 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	protected T1 doSwitch(EClass theEClass, EObject theEObject) {
-		if (theEClass.eContainer() == modelPackage) {
-			return doSwitch(theEClass.getClassifierID(), theEObject);
-		}
-		else {
-			List<EClass> eSuperTypes = theEClass.getESuperTypes();
-			return
-				eSuperTypes.isEmpty() ?
-					defaultCase(theEObject) :
-					doSwitch(eSuperTypes.get(0), theEObject);
-		}
-	}
-
-	/**
-	 * 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 T1 doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case EdgesPackage.MIGRATION_EDGE: {
@@ -420,6 +406,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
+	@Override
 	public T1 defaultCase(EObject object) {
 		return null;
 	}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/DoubleLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/DoubleLabelValue.java
new file mode 100644
index 0000000..94a9d60
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/DoubleLabelValue.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Double Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.definitions.labels.LabelsPackage#getDoubleLabelValue()
+ * @model superTypes="org.eclipse.stem.definitions.labels.GenericLabelValue<org.eclipse.emf.ecore.EDoubleObject>"
+ * @generated
+ */
+public interface DoubleLabelValue extends GenericLabelValue<Double> {
+} // DoubleLabelValue
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabel.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabel.java
index 0565d80..3cbe146 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabel.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabel.java
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.EarthScienceLabel#getCurrentEarthScienceValue <em>Current Earth Science Value</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.definitions.labels.LabelsPackage#getEarthScienceLabel()
  * @model
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabelValue.java
index 1b8c984..aadc8bb 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabelValue.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/EarthScienceLabelValue.java
@@ -20,6 +20,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.EarthScienceLabelValue#getDataType <em>Data Type</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.EarthScienceLabelValue#getUnits <em>Units</em>}</li>
@@ -35,7 +36,6 @@
  *   <li>{@link org.eclipse.stem.definitions.labels.EarthScienceLabelValue#getRange <em>Range</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.EarthScienceLabelValue#getValidYear <em>Valid Year</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.definitions.labels.LabelsPackage#getEarthScienceLabelValue()
  * @model
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/GenericLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/GenericLabelValue.java
new file mode 100644
index 0000000..98c8851
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/GenericLabelValue.java
@@ -0,0 +1,112 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels;
+
+import org.eclipse.stem.core.graph.LabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Generic Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getUnit <em>Unit</em>}</li>
+ *   <li>{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getMeasure <em>Measure</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.stem.definitions.labels.LabelsPackage#getGenericLabelValue()
+ * @model
+ * @generated
+ */
+public interface GenericLabelValue<T> extends LabelValue {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(Object)
+	 * @see org.eclipse.stem.definitions.labels.LabelsPackage#getGenericLabelValue_Value()
+	 * @model
+	 * @generated
+	 */
+	T getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(T value);
+
+	/**
+	 * Returns the value of the '<em><b>Unit</b></em>' attribute.
+	 * <!-- 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 #setUnit(String)
+	 * @see org.eclipse.stem.definitions.labels.LabelsPackage#getGenericLabelValue_Unit()
+	 * @model
+	 * @generated
+	 */
+	String getUnit();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getUnit <em>Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Unit</em>' attribute.
+	 * @see #getUnit()
+	 * @generated
+	 */
+	void setUnit(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Measure</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Measure</em>' attribute.
+	 * @see #setMeasure(String)
+	 * @see org.eclipse.stem.definitions.labels.LabelsPackage#getGenericLabelValue_Measure()
+	 * @model
+	 * @generated
+	 */
+	String getMeasure();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getMeasure <em>Measure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Measure</em>' attribute.
+	 * @see #getMeasure()
+	 * @generated
+	 */
+	void setMeasure(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation"
+	 * @generated
+	 */
+	Class<?> getJavaTypeClass();
+
+} // GenericLabelValue
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/IntegerLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/IntegerLabelValue.java
new file mode 100644
index 0000000..35fd3a1
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/IntegerLabelValue.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integer Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.definitions.labels.LabelsPackage#getIntegerLabelValue()
+ * @model superTypes="org.eclipse.stem.definitions.labels.GenericLabelValue<org.eclipse.emf.ecore.EIntegerObject>"
+ * @generated
+ */
+public interface IntegerLabelValue extends GenericLabelValue<Integer> {
+} // IntegerLabelValue
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/KeyValueLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/KeyValueLabelValue.java
new file mode 100644
index 0000000..5b4cdb6
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/KeyValueLabelValue.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels;
+
+import java.util.Map;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Key Value Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.definitions.labels.LabelsPackage#getKeyValueLabelValue()
+ * @model superTypes="org.eclipse.stem.definitions.labels.GenericLabelValue<org.eclipse.emf.ecore.EMap<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EJavaObject>>"
+ * @generated
+ */
+public interface KeyValueLabelValue extends GenericLabelValue<Map<String, Object>> {
+} // KeyValueLabelValue
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsFactory.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsFactory.java
index c880aac..27a0890 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsFactory.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsFactory.java
@@ -166,6 +166,60 @@
 	EarthScienceLabelValue createEarthScienceLabelValue();
 
 	/**
+	 * Returns a new object of class '<em>Generic Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Generic Label Value</em>'.
+	 * @generated
+	 */
+	<T> GenericLabelValue<T> createGenericLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>Double Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Double Label Value</em>'.
+	 * @generated
+	 */
+	DoubleLabelValue createDoubleLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>Integer Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Integer Label Value</em>'.
+	 * @generated
+	 */
+	IntegerLabelValue createIntegerLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>Long Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Long Label Value</em>'.
+	 * @generated
+	 */
+	LongLabelValue createLongLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>String Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>String Label Value</em>'.
+	 * @generated
+	 */
+	StringLabelValue createStringLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>Key Value Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Key Value Label Value</em>'.
+	 * @generated
+	 */
+	KeyValueLabelValue createKeyValueLabelValue();
+
+	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsPackage.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsPackage.java
index 7281f34..d2bbc1f 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsPackage.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LabelsPackage.java
@@ -1271,6 +1271,282 @@
 	int EARTH_SCIENCE_LABEL_VALUE_FEATURE_COUNT = GraphPackage.LABEL_VALUE_FEATURE_COUNT + 13;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.impl.GenericLabelValueImpl <em>Generic Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.definitions.labels.impl.GenericLabelValueImpl
+	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getGenericLabelValue()
+	 * @generated
+	 */
+	int GENERIC_LABEL_VALUE = 16;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_LABEL_VALUE__VALUE = GraphPackage.LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_LABEL_VALUE__UNIT = GraphPackage.LABEL_VALUE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_LABEL_VALUE__MEASURE = GraphPackage.LABEL_VALUE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Generic Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_LABEL_VALUE_FEATURE_COUNT = GraphPackage.LABEL_VALUE_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.impl.DoubleLabelValueImpl <em>Double Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.definitions.labels.impl.DoubleLabelValueImpl
+	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getDoubleLabelValue()
+	 * @generated
+	 */
+	int DOUBLE_LABEL_VALUE = 17;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_LABEL_VALUE__VALUE = GENERIC_LABEL_VALUE__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_LABEL_VALUE__UNIT = GENERIC_LABEL_VALUE__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_LABEL_VALUE__MEASURE = GENERIC_LABEL_VALUE__MEASURE;
+
+	/**
+	 * The number of structural features of the '<em>Double Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOUBLE_LABEL_VALUE_FEATURE_COUNT = GENERIC_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.impl.IntegerLabelValueImpl <em>Integer Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.definitions.labels.impl.IntegerLabelValueImpl
+	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getIntegerLabelValue()
+	 * @generated
+	 */
+	int INTEGER_LABEL_VALUE = 18;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_LABEL_VALUE__VALUE = GENERIC_LABEL_VALUE__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_LABEL_VALUE__UNIT = GENERIC_LABEL_VALUE__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_LABEL_VALUE__MEASURE = GENERIC_LABEL_VALUE__MEASURE;
+
+	/**
+	 * The number of structural features of the '<em>Integer Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_LABEL_VALUE_FEATURE_COUNT = GENERIC_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.impl.LongLabelValueImpl <em>Long Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.definitions.labels.impl.LongLabelValueImpl
+	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getLongLabelValue()
+	 * @generated
+	 */
+	int LONG_LABEL_VALUE = 19;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LONG_LABEL_VALUE__VALUE = GENERIC_LABEL_VALUE__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LONG_LABEL_VALUE__UNIT = GENERIC_LABEL_VALUE__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LONG_LABEL_VALUE__MEASURE = GENERIC_LABEL_VALUE__MEASURE;
+
+	/**
+	 * The number of structural features of the '<em>Long Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LONG_LABEL_VALUE_FEATURE_COUNT = GENERIC_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.impl.StringLabelValueImpl <em>String Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.definitions.labels.impl.StringLabelValueImpl
+	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getStringLabelValue()
+	 * @generated
+	 */
+	int STRING_LABEL_VALUE = 20;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_LABEL_VALUE__VALUE = GENERIC_LABEL_VALUE__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_LABEL_VALUE__UNIT = GENERIC_LABEL_VALUE__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_LABEL_VALUE__MEASURE = GENERIC_LABEL_VALUE__MEASURE;
+
+	/**
+	 * The number of structural features of the '<em>String Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_LABEL_VALUE_FEATURE_COUNT = GENERIC_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.impl.KeyValueLabelValueImpl <em>Key Value Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.definitions.labels.impl.KeyValueLabelValueImpl
+	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getKeyValueLabelValue()
+	 * @generated
+	 */
+	int KEY_VALUE_LABEL_VALUE = 21;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KEY_VALUE_LABEL_VALUE__VALUE = GENERIC_LABEL_VALUE__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KEY_VALUE_LABEL_VALUE__UNIT = GENERIC_LABEL_VALUE__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KEY_VALUE_LABEL_VALUE__MEASURE = GENERIC_LABEL_VALUE__MEASURE;
+
+	/**
+	 * The number of structural features of the '<em>Key Value Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KEY_VALUE_LABEL_VALUE_FEATURE_COUNT = GENERIC_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.RelativePhysicalRelationship <em>Relative Physical Relationship</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1278,7 +1554,7 @@
 	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getRelativePhysicalRelationship()
 	 * @generated
 	 */
-	int RELATIVE_PHYSICAL_RELATIONSHIP = 16;
+	int RELATIVE_PHYSICAL_RELATIONSHIP = 22;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.stem.definitions.labels.TransportMode <em>Transport Mode</em>}' enum.
@@ -1288,7 +1564,7 @@
 	 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getTransportMode()
 	 * @generated
 	 */
-	int TRANSPORT_MODE = 17;
+	int TRANSPORT_MODE = 23;
 
 
 	/**
@@ -1903,6 +2179,99 @@
 	EAttribute getEarthScienceLabelValue_ValidYear();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.definitions.labels.GenericLabelValue <em>Generic Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Generic Label Value</em>'.
+	 * @see org.eclipse.stem.definitions.labels.GenericLabelValue
+	 * @generated
+	 */
+	EClass getGenericLabelValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.stem.definitions.labels.GenericLabelValue#getValue()
+	 * @see #getGenericLabelValue()
+	 * @generated
+	 */
+	EAttribute getGenericLabelValue_Value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getUnit <em>Unit</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Unit</em>'.
+	 * @see org.eclipse.stem.definitions.labels.GenericLabelValue#getUnit()
+	 * @see #getGenericLabelValue()
+	 * @generated
+	 */
+	EAttribute getGenericLabelValue_Unit();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.definitions.labels.GenericLabelValue#getMeasure <em>Measure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Measure</em>'.
+	 * @see org.eclipse.stem.definitions.labels.GenericLabelValue#getMeasure()
+	 * @see #getGenericLabelValue()
+	 * @generated
+	 */
+	EAttribute getGenericLabelValue_Measure();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.definitions.labels.DoubleLabelValue <em>Double Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Double Label Value</em>'.
+	 * @see org.eclipse.stem.definitions.labels.DoubleLabelValue
+	 * @generated
+	 */
+	EClass getDoubleLabelValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.definitions.labels.IntegerLabelValue <em>Integer Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Integer Label Value</em>'.
+	 * @see org.eclipse.stem.definitions.labels.IntegerLabelValue
+	 * @generated
+	 */
+	EClass getIntegerLabelValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.definitions.labels.LongLabelValue <em>Long Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Long Label Value</em>'.
+	 * @see org.eclipse.stem.definitions.labels.LongLabelValue
+	 * @generated
+	 */
+	EClass getLongLabelValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.definitions.labels.StringLabelValue <em>String Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>String Label Value</em>'.
+	 * @see org.eclipse.stem.definitions.labels.StringLabelValue
+	 * @generated
+	 */
+	EClass getStringLabelValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.definitions.labels.KeyValueLabelValue <em>Key Value Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Key Value Label Value</em>'.
+	 * @see org.eclipse.stem.definitions.labels.KeyValueLabelValue
+	 * @generated
+	 */
+	EClass getKeyValueLabelValue();
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.stem.definitions.labels.RelativePhysicalRelationship <em>Relative Physical Relationship</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2433,6 +2802,90 @@
 		EAttribute EARTH_SCIENCE_LABEL_VALUE__VALID_YEAR = eINSTANCE.getEarthScienceLabelValue_ValidYear();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.definitions.labels.impl.GenericLabelValueImpl <em>Generic Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.definitions.labels.impl.GenericLabelValueImpl
+		 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getGenericLabelValue()
+		 * @generated
+		 */
+		EClass GENERIC_LABEL_VALUE = eINSTANCE.getGenericLabelValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERIC_LABEL_VALUE__VALUE = eINSTANCE.getGenericLabelValue_Value();
+
+		/**
+		 * The meta object literal for the '<em><b>Unit</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERIC_LABEL_VALUE__UNIT = eINSTANCE.getGenericLabelValue_Unit();
+
+		/**
+		 * The meta object literal for the '<em><b>Measure</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GENERIC_LABEL_VALUE__MEASURE = eINSTANCE.getGenericLabelValue_Measure();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.definitions.labels.impl.DoubleLabelValueImpl <em>Double Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.definitions.labels.impl.DoubleLabelValueImpl
+		 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getDoubleLabelValue()
+		 * @generated
+		 */
+		EClass DOUBLE_LABEL_VALUE = eINSTANCE.getDoubleLabelValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.definitions.labels.impl.IntegerLabelValueImpl <em>Integer Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.definitions.labels.impl.IntegerLabelValueImpl
+		 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getIntegerLabelValue()
+		 * @generated
+		 */
+		EClass INTEGER_LABEL_VALUE = eINSTANCE.getIntegerLabelValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.definitions.labels.impl.LongLabelValueImpl <em>Long Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.definitions.labels.impl.LongLabelValueImpl
+		 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getLongLabelValue()
+		 * @generated
+		 */
+		EClass LONG_LABEL_VALUE = eINSTANCE.getLongLabelValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.definitions.labels.impl.StringLabelValueImpl <em>String Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.definitions.labels.impl.StringLabelValueImpl
+		 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getStringLabelValue()
+		 * @generated
+		 */
+		EClass STRING_LABEL_VALUE = eINSTANCE.getStringLabelValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.definitions.labels.impl.KeyValueLabelValueImpl <em>Key Value Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.definitions.labels.impl.KeyValueLabelValueImpl
+		 * @see org.eclipse.stem.definitions.labels.impl.LabelsPackageImpl#getKeyValueLabelValue()
+		 * @generated
+		 */
+		EClass KEY_VALUE_LABEL_VALUE = eINSTANCE.getKeyValueLabelValue();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.stem.definitions.labels.RelativePhysicalRelationship <em>Relative Physical Relationship</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LongLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LongLabelValue.java
new file mode 100644
index 0000000..4d852d3
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/LongLabelValue.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Long Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.definitions.labels.LabelsPackage#getLongLabelValue()
+ * @model superTypes="org.eclipse.stem.definitions.labels.GenericLabelValue<org.eclipse.emf.ecore.ELongObject>"
+ * @generated
+ */
+public interface LongLabelValue extends GenericLabelValue<Long> {
+} // LongLabelValue
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/RelativePhysicalRelationship.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/RelativePhysicalRelationship.java
index 78cccdf..0438873 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/RelativePhysicalRelationship.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/RelativePhysicalRelationship.java
@@ -265,6 +265,8 @@
 	 * Returns the '<em><b>Relative Physical Relationship</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 RelativePhysicalRelationship get(String literal) {
@@ -281,6 +283,8 @@
 	 * Returns the '<em><b>Relative Physical Relationship</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 RelativePhysicalRelationship getByName(String name) {
@@ -297,6 +301,8 @@
 	 * Returns the '<em><b>Relative Physical Relationship</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 RelativePhysicalRelationship get(int value) {
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/StringLabelValue.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/StringLabelValue.java
new file mode 100644
index 0000000..5278de4
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/StringLabelValue.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.definitions.labels.LabelsPackage#getStringLabelValue()
+ * @model superTypes="org.eclipse.stem.definitions.labels.GenericLabelValue<org.eclipse.emf.ecore.EString>"
+ * @generated
+ */
+public interface StringLabelValue extends GenericLabelValue<String> {
+} // StringLabelValue
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/TransportMode.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/TransportMode.java
index c448fd2..0549288 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/TransportMode.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/TransportMode.java
@@ -147,6 +147,8 @@
 	 * Returns the '<em><b>Transport Mode</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 TransportMode get(String literal) {
@@ -163,6 +165,8 @@
 	 * Returns the '<em><b>Transport Mode</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 TransportMode getByName(String name) {
@@ -179,6 +183,8 @@
 	 * Returns the '<em><b>Transport Mode</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 TransportMode get(int value) {
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelImpl.java
index 8c6ab94..b978877 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelImpl.java
@@ -25,10 +25,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.AreaLabelImpl#getCurrentAreaValue <em>Current Area Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelValueImpl.java
index 3668f24..124c5f7 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/AreaLabelValueImpl.java
@@ -23,11 +23,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.AreaLabelValueImpl#getArea <em>Area</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.AreaLabelValueImpl#getAverageExtent <em>Average Extent</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelImpl.java
index 54532d7..c26144c 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelImpl.java
@@ -27,8 +27,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '<em><b>Common Border Relationship Label</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelValueImpl.java
index 35b9f69..de7bb16 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/CommonBorderRelationshipLabelValueImpl.java
@@ -22,10 +22,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.CommonBorderRelationshipLabelValueImpl#getBorderLength <em>Border Length</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/DoubleLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/DoubleLabelValueImpl.java
new file mode 100644
index 0000000..989d8bc
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/DoubleLabelValueImpl.java
@@ -0,0 +1,48 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.stem.definitions.labels.DoubleLabelValue;
+import org.eclipse.stem.definitions.labels.LabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DoubleLabelValueImpl extends GenericLabelValueImpl<Double> implements DoubleLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleLabelValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LabelsPackage.Literals.DOUBLE_LABEL_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * This is specialized for the more specific type known in this context.
+	 * @generated
+	 */
+	@Override
+	public void setValue(Double newValue) {
+		super.setValue(newValue);
+	}
+
+} //DoubleLabelValueImpl
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelImpl.java
index 789ad8a..3138117 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelImpl.java
@@ -25,10 +25,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.EarthScienceLabelImpl#getCurrentEarthScienceValue <em>Current Earth Science Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelValueImpl.java
index 838dd5e..e85d886 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/EarthScienceLabelValueImpl.java
@@ -27,6 +27,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.EarthScienceLabelValueImpl#getDataType <em>Data Type</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.EarthScienceLabelValueImpl#getUnits <em>Units</em>}</li>
@@ -42,7 +43,6 @@
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.EarthScienceLabelValueImpl#getRange <em>Range</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.EarthScienceLabelValueImpl#getValidYear <em>Valid Year</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/GenericLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/GenericLabelValueImpl.java
new file mode 100644
index 0000000..f7ba993
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/GenericLabelValueImpl.java
@@ -0,0 +1,274 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.stem.core.graph.impl.LabelValueImpl;
+
+import org.eclipse.stem.definitions.labels.GenericLabelValue;
+import org.eclipse.stem.definitions.labels.LabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Generic Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.stem.definitions.labels.impl.GenericLabelValueImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.stem.definitions.labels.impl.GenericLabelValueImpl#getUnit <em>Unit</em>}</li>
+ *   <li>{@link org.eclipse.stem.definitions.labels.impl.GenericLabelValueImpl#getMeasure <em>Measure</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GenericLabelValueImpl<T> extends LabelValueImpl implements GenericLabelValue<T> {
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected T value;
+
+	/**
+	 * The default value of the '{@link #getUnit() <em>Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnit()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UNIT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUnit() <em>Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnit()
+	 * @generated
+	 * @ordered
+	 */
+	protected String unit = UNIT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMeasure() <em>Measure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMeasure()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MEASURE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMeasure() <em>Measure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMeasure()
+	 * @generated
+	 * @ordered
+	 */
+	protected String measure = MEASURE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GenericLabelValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LabelsPackage.Literals.GENERIC_LABEL_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public T getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(T newValue) {
+		T oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LabelsPackage.GENERIC_LABEL_VALUE__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUnit() {
+		return unit;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUnit(String newUnit) {
+		String oldUnit = unit;
+		unit = newUnit;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LabelsPackage.GENERIC_LABEL_VALUE__UNIT, oldUnit, unit));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMeasure() {
+		return measure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMeasure(String newMeasure) {
+		String oldMeasure = measure;
+		measure = newMeasure;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LabelsPackage.GENERIC_LABEL_VALUE__MEASURE, oldMeasure, measure));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Class<?> getJavaTypeClass() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case LabelsPackage.GENERIC_LABEL_VALUE__VALUE:
+				return getValue();
+			case LabelsPackage.GENERIC_LABEL_VALUE__UNIT:
+				return getUnit();
+			case LabelsPackage.GENERIC_LABEL_VALUE__MEASURE:
+				return getMeasure();
+		}
+		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 LabelsPackage.GENERIC_LABEL_VALUE__VALUE:
+				setValue((T)newValue);
+				return;
+			case LabelsPackage.GENERIC_LABEL_VALUE__UNIT:
+				setUnit((String)newValue);
+				return;
+			case LabelsPackage.GENERIC_LABEL_VALUE__MEASURE:
+				setMeasure((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case LabelsPackage.GENERIC_LABEL_VALUE__VALUE:
+				setValue((T)null);
+				return;
+			case LabelsPackage.GENERIC_LABEL_VALUE__UNIT:
+				setUnit(UNIT_EDEFAULT);
+				return;
+			case LabelsPackage.GENERIC_LABEL_VALUE__MEASURE:
+				setMeasure(MEASURE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case LabelsPackage.GENERIC_LABEL_VALUE__VALUE:
+				return value != null;
+			case LabelsPackage.GENERIC_LABEL_VALUE__UNIT:
+				return UNIT_EDEFAULT == null ? unit != null : !UNIT_EDEFAULT.equals(unit);
+			case LabelsPackage.GENERIC_LABEL_VALUE__MEASURE:
+				return MEASURE_EDEFAULT == null ? measure != null : !MEASURE_EDEFAULT.equals(measure);
+		}
+		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(" (value: "); //$NON-NLS-1$
+		result.append(value);
+		result.append(", unit: "); //$NON-NLS-1$
+		result.append(unit);
+		result.append(", measure: "); //$NON-NLS-1$
+		result.append(measure);
+		result.append(')');
+		return result.toString();
+	}
+
+} //GenericLabelValueImpl
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/IntegerLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/IntegerLabelValueImpl.java
new file mode 100644
index 0000000..f521bf7
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/IntegerLabelValueImpl.java
@@ -0,0 +1,48 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.stem.definitions.labels.IntegerLabelValue;
+import org.eclipse.stem.definitions.labels.LabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IntegerLabelValueImpl extends GenericLabelValueImpl<Integer> implements IntegerLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntegerLabelValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LabelsPackage.Literals.INTEGER_LABEL_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * This is specialized for the more specific type known in this context.
+	 * @generated
+	 */
+	@Override
+	public void setValue(Integer newValue) {
+		super.setValue(newValue);
+	}
+
+} //IntegerLabelValueImpl
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/KeyValueLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/KeyValueLabelValueImpl.java
new file mode 100644
index 0000000..3b6e9a9
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/KeyValueLabelValueImpl.java
@@ -0,0 +1,50 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.impl;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.stem.definitions.labels.KeyValueLabelValue;
+import org.eclipse.stem.definitions.labels.LabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Key Value Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class KeyValueLabelValueImpl extends GenericLabelValueImpl<Map<String, Object>> implements KeyValueLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	protected KeyValueLabelValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LabelsPackage.Literals.KEY_VALUE_LABEL_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * This is specialized for the more specific type known in this context.
+	 * @generated
+	 */
+	@Override
+	public void setValue(Map<String, Object> newValue) {
+		super.setValue(newValue);
+	}
+
+} //KeyValueLabelValueImpl
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsFactoryImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsFactoryImpl.java
index 3050c64..b6e94ff 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsFactoryImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsFactoryImpl.java
@@ -17,6 +17,7 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.definitions.labels.*;
 import org.eclipse.stem.definitions.labels.AreaLabel;
 import org.eclipse.stem.definitions.labels.AreaLabelValue;
 import org.eclipse.stem.definitions.labels.CommonBorderRelationshipLabel;
@@ -52,7 +53,7 @@
 	 */
 	public static LabelsFactory init() {
 		try {
-			LabelsFactory theLabelsFactory = (LabelsFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/definitions/labels.ecore"); //$NON-NLS-1$ 
+			LabelsFactory theLabelsFactory = (LabelsFactory)EPackage.Registry.INSTANCE.getEFactory(LabelsPackage.eNS_URI);
 			if (theLabelsFactory != null) {
 				return theLabelsFactory;
 			}
@@ -96,6 +97,12 @@
 			case LabelsPackage.ROAD_TRANSPORT_RELATIONSHIP_LABEL_VALUE: return createRoadTransportRelationshipLabelValue();
 			case LabelsPackage.EARTH_SCIENCE_LABEL: return createEarthScienceLabel();
 			case LabelsPackage.EARTH_SCIENCE_LABEL_VALUE: return createEarthScienceLabelValue();
+			case LabelsPackage.GENERIC_LABEL_VALUE: return createGenericLabelValue();
+			case LabelsPackage.DOUBLE_LABEL_VALUE: return createDoubleLabelValue();
+			case LabelsPackage.INTEGER_LABEL_VALUE: return createIntegerLabelValue();
+			case LabelsPackage.LONG_LABEL_VALUE: return createLongLabelValue();
+			case LabelsPackage.STRING_LABEL_VALUE: return createStringLabelValue();
+			case LabelsPackage.KEY_VALUE_LABEL_VALUE: return createKeyValueLabelValue();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
 		}
@@ -305,6 +312,72 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
+	public <T> GenericLabelValue<T> createGenericLabelValue() {
+		GenericLabelValueImpl<T> genericLabelValue = new GenericLabelValueImpl<T>();
+		return genericLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DoubleLabelValue createDoubleLabelValue() {
+		DoubleLabelValueImpl doubleLabelValue = new DoubleLabelValueImpl();
+		return doubleLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegerLabelValue createIntegerLabelValue() {
+		IntegerLabelValueImpl integerLabelValue = new IntegerLabelValueImpl();
+		return integerLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LongLabelValue createLongLabelValue() {
+		LongLabelValueImpl longLabelValue = new LongLabelValueImpl();
+		return longLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public StringLabelValue createStringLabelValue() {
+		StringLabelValueImpl stringLabelValue = new StringLabelValueImpl();
+		return stringLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public KeyValueLabelValue createKeyValueLabelValue() {
+		KeyValueLabelValueImpl keyValueLabelValue = new KeyValueLabelValueImpl();
+		return keyValueLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public RelativePhysicalRelationship createRelativePhysicalRelationshipFromString(EDataType eDataType, String initialValue) {
 		RelativePhysicalRelationship result = RelativePhysicalRelationship.get(initialValue);
 		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsPackageImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsPackageImpl.java
index cbfe052..5238759 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsPackageImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LabelsPackageImpl.java
@@ -14,8 +14,11 @@
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EOperation;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.ETypeParameter;
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.eclipse.stem.core.common.CommonPackage;
@@ -32,10 +35,15 @@
 import org.eclipse.stem.definitions.labels.AreaLabelValue;
 import org.eclipse.stem.definitions.labels.CommonBorderRelationshipLabel;
 import org.eclipse.stem.definitions.labels.CommonBorderRelationshipLabelValue;
+import org.eclipse.stem.definitions.labels.DoubleLabelValue;
 import org.eclipse.stem.definitions.labels.EarthScienceLabel;
 import org.eclipse.stem.definitions.labels.EarthScienceLabelValue;
+import org.eclipse.stem.definitions.labels.GenericLabelValue;
+import org.eclipse.stem.definitions.labels.IntegerLabelValue;
+import org.eclipse.stem.definitions.labels.KeyValueLabelValue;
 import org.eclipse.stem.definitions.labels.LabelsFactory;
 import org.eclipse.stem.definitions.labels.LabelsPackage;
+import org.eclipse.stem.definitions.labels.LongLabelValue;
 import org.eclipse.stem.definitions.labels.PhysicalRelationshipLabel;
 import org.eclipse.stem.definitions.labels.PhysicalRelationshipLabelValue;
 import org.eclipse.stem.definitions.labels.PopulationLabel;
@@ -45,6 +53,7 @@
 import org.eclipse.stem.definitions.labels.RelativePhysicalRelationshipLabelValue;
 import org.eclipse.stem.definitions.labels.RoadTransportRelationshipLabel;
 import org.eclipse.stem.definitions.labels.RoadTransportRelationshipLabelValue;
+import org.eclipse.stem.definitions.labels.StringLabelValue;
 import org.eclipse.stem.definitions.labels.TransportMode;
 import org.eclipse.stem.definitions.labels.TransportRelationshipLabel;
 import org.eclipse.stem.definitions.labels.TransportRelationshipLabelValue;
@@ -177,6 +186,48 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass genericLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass doubleLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass integerLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass longLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass stringLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass keyValueLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EEnum relativePhysicalRelationshipEEnum = null;
 
 	/**
@@ -844,6 +895,96 @@
 	 * @generated
 	 */
 	@Override
+	public EClass getGenericLabelValue() {
+		return genericLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getGenericLabelValue_Value() {
+		return (EAttribute)genericLabelValueEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getGenericLabelValue_Unit() {
+		return (EAttribute)genericLabelValueEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getGenericLabelValue_Measure() {
+		return (EAttribute)genericLabelValueEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDoubleLabelValue() {
+		return doubleLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getIntegerLabelValue() {
+		return integerLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLongLabelValue() {
+		return longLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getStringLabelValue() {
+		return stringLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getKeyValueLabelValue() {
+		return keyValueLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EEnum getRelativePhysicalRelationship() {
 		return relativePhysicalRelationshipEEnum;
 	}
@@ -960,6 +1101,21 @@
 		createEAttribute(earthScienceLabelValueEClass, EARTH_SCIENCE_LABEL_VALUE__RANGE);
 		createEAttribute(earthScienceLabelValueEClass, EARTH_SCIENCE_LABEL_VALUE__VALID_YEAR);
 
+		genericLabelValueEClass = createEClass(GENERIC_LABEL_VALUE);
+		createEAttribute(genericLabelValueEClass, GENERIC_LABEL_VALUE__VALUE);
+		createEAttribute(genericLabelValueEClass, GENERIC_LABEL_VALUE__UNIT);
+		createEAttribute(genericLabelValueEClass, GENERIC_LABEL_VALUE__MEASURE);
+
+		doubleLabelValueEClass = createEClass(DOUBLE_LABEL_VALUE);
+
+		integerLabelValueEClass = createEClass(INTEGER_LABEL_VALUE);
+
+		longLabelValueEClass = createEClass(LONG_LABEL_VALUE);
+
+		stringLabelValueEClass = createEClass(STRING_LABEL_VALUE);
+
+		keyValueLabelValueEClass = createEClass(KEY_VALUE_LABEL_VALUE);
+
 		// Create enums
 		relativePhysicalRelationshipEEnum = createEEnum(RELATIVE_PHYSICAL_RELATIONSHIP);
 		transportModeEEnum = createEEnum(TRANSPORT_MODE);
@@ -993,6 +1149,7 @@
 		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
 
 		// Create type parameters
+		ETypeParameter genericLabelValueEClass_T = addETypeParameter(genericLabelValueEClass, "T"); //$NON-NLS-1$
 
 		// Set bounds for type parameters
 
@@ -1013,6 +1170,31 @@
 		roadTransportRelationshipLabelValueEClass.getESuperTypes().add(this.getPhysicalRelationshipLabelValue());
 		earthScienceLabelEClass.getESuperTypes().add(theGraphPackage.getStaticNodeLabel());
 		earthScienceLabelValueEClass.getESuperTypes().add(theGraphPackage.getLabelValue());
+		genericLabelValueEClass.getESuperTypes().add(theGraphPackage.getLabelValue());
+		EGenericType g1 = createEGenericType(this.getGenericLabelValue());
+		EGenericType g2 = createEGenericType(ecorePackage.getEDoubleObject());
+		g1.getETypeArguments().add(g2);
+		doubleLabelValueEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getGenericLabelValue());
+		g2 = createEGenericType(ecorePackage.getEIntegerObject());
+		g1.getETypeArguments().add(g2);
+		integerLabelValueEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getGenericLabelValue());
+		g2 = createEGenericType(ecorePackage.getELongObject());
+		g1.getETypeArguments().add(g2);
+		longLabelValueEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getGenericLabelValue());
+		g2 = createEGenericType(ecorePackage.getEString());
+		g1.getETypeArguments().add(g2);
+		stringLabelValueEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getGenericLabelValue());
+		g2 = createEGenericType(ecorePackage.getEMap());
+		g1.getETypeArguments().add(g2);
+		EGenericType g3 = createEGenericType(ecorePackage.getEString());
+		g2.getETypeArguments().add(g3);
+		g3 = createEGenericType(ecorePackage.getEJavaObject());
+		g2.getETypeArguments().add(g3);
+		keyValueLabelValueEClass.getEGenericSuperTypes().add(g1);
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(areaLabelEClass, AreaLabel.class, "AreaLabel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
@@ -1088,6 +1270,28 @@
 		initEAttribute(getEarthScienceLabelValue_Range(), theEcorePackage.getEDouble(), "range", null, 0, -1, EarthScienceLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
 		initEAttribute(getEarthScienceLabelValue_ValidYear(), theEcorePackage.getEInt(), "validYear", "0", 0, 1, EarthScienceLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
 
+		initEClass(genericLabelValueEClass, GenericLabelValue.class, "GenericLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		g1 = createEGenericType(genericLabelValueEClass_T);
+		initEAttribute(getGenericLabelValue_Value(), g1, "value", null, 0, 1, GenericLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getGenericLabelValue_Unit(), ecorePackage.getEString(), "unit", null, 0, 1, GenericLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getGenericLabelValue_Measure(), ecorePackage.getEString(), "measure", null, 0, 1, GenericLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+		EOperation op = addEOperation(genericLabelValueEClass, null, "getJavaTypeClass", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEJavaClass());
+		g2 = createEGenericType();
+		g1.getETypeArguments().add(g2);
+		initEOperation(op, g1);
+
+		initEClass(doubleLabelValueEClass, DoubleLabelValue.class, "DoubleLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(integerLabelValueEClass, IntegerLabelValue.class, "IntegerLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(longLabelValueEClass, LongLabelValue.class, "LongLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(stringLabelValueEClass, StringLabelValue.class, "StringLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(keyValueLabelValueEClass, KeyValueLabelValue.class, "KeyValueLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
 		// Initialize enums and add enum literals
 		initEEnum(relativePhysicalRelationshipEEnum, RelativePhysicalRelationship.class, "RelativePhysicalRelationship"); //$NON-NLS-1$
 		addEEnumLiteral(relativePhysicalRelationshipEEnum, RelativePhysicalRelationship.UNSPECIFIED_LITERAL);
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LongLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LongLabelValueImpl.java
new file mode 100644
index 0000000..a80c2c8
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/LongLabelValueImpl.java
@@ -0,0 +1,48 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.stem.definitions.labels.LabelsPackage;
+import org.eclipse.stem.definitions.labels.LongLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Long Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LongLabelValueImpl extends GenericLabelValueImpl<Long> implements LongLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LongLabelValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LabelsPackage.Literals.LONG_LABEL_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * This is specialized for the more specific type known in this context.
+	 * @generated
+	 */
+	@Override
+	public void setValue(Long newValue) {
+		super.setValue(newValue);
+	}
+
+} //LongLabelValueImpl
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelImpl.java
index dbc7a34..8ec1282 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelImpl.java
@@ -23,8 +23,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Physical Relationship Label</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelValueImpl.java
index 267269b..5957e01 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PhysicalRelationshipLabelValueImpl.java
@@ -20,8 +20,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Physical Relationship Label Value</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelImpl.java
index 506a88b..524eef0 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelImpl.java
@@ -31,13 +31,13 @@
  * <em><b>Population Label</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.PopulationLabelImpl#getPopulationIdentifier <em>Population Identifier</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.PopulationLabelImpl#getCurrentPopulationValue <em>Current Population Value</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.PopulationLabelImpl#getPopulatedArea <em>Populated Area</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.PopulationLabelImpl#getValidYear <em>Valid Year</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelValueImpl.java
index 0364f06..d52649a 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/PopulationLabelValueImpl.java
@@ -23,10 +23,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.PopulationLabelValueImpl#getCount <em>Count</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelImpl.java
index ea2d931..59ba6e5 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelImpl.java
@@ -22,10 +22,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.RelativePhysicalRelationshipLabelImpl#getCurrentRelationship <em>Current Relationship</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelValueImpl.java
index 708d603..e5346b9 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RelativePhysicalRelationshipLabelValueImpl.java
@@ -24,11 +24,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.RelativePhysicalRelationshipLabelValueImpl#isAdjacent <em>Adjacent</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.RelativePhysicalRelationshipLabelValueImpl#getRelationship <em>Relationship</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelImpl.java
index d764d18..f9eb929 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelImpl.java
@@ -29,8 +29,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Road Transport Relationship Label</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelValueImpl.java
index 5d007ed..1ff7624 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/RoadTransportRelationshipLabelValueImpl.java
@@ -24,12 +24,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.RoadTransportRelationshipLabelValueImpl#getRoadName <em>Road Name</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.RoadTransportRelationshipLabelValueImpl#getRoadClass <em>Road Class</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.RoadTransportRelationshipLabelValueImpl#getNumberCrossings <em>Number Crossings</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/StringLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/StringLabelValueImpl.java
new file mode 100644
index 0000000..0623213
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/StringLabelValueImpl.java
@@ -0,0 +1,48 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.stem.definitions.labels.LabelsPackage;
+import org.eclipse.stem.definitions.labels.StringLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringLabelValueImpl extends GenericLabelValueImpl<String> implements StringLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringLabelValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LabelsPackage.Literals.STRING_LABEL_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * This is specialized for the more specific type known in this context.
+	 * @generated
+	 */
+	@Override
+	public void setValue(String newValue) {
+		super.setValue(newValue);
+	}
+
+} //StringLabelValueImpl
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelImpl.java
index ab84405..f52185d 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelImpl.java
@@ -39,6 +39,7 @@
  * <em><b>Transport Relationship Label</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.TransportRelationshipLabelImpl#getTransportMode <em>Transport Mode</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.TransportRelationshipLabelImpl#getPopulationIdentifier <em>Population Identifier</em>}</li>
@@ -52,7 +53,6 @@
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.TransportRelationshipLabelImpl#getTransitTime <em>Transit Time</em>}</li>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.TransportRelationshipLabelImpl#getStartUpDelay <em>Start Up Delay</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelValueImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelValueImpl.java
index ac2f31d..07453d1 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelValueImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/impl/TransportRelationshipLabelValueImpl.java
@@ -23,10 +23,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.labels.impl.TransportRelationshipLabelValueImpl#getAvailableDepartureCapacityProportion <em>Available Departure Capacity Proportion</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsActionBarContributor.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsActionBarContributor.java
index 1c92167..875e11b 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsActionBarContributor.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsActionBarContributor.java
@@ -206,8 +206,7 @@
 		//
 		submenuManager.addMenuListener
 			(new IMenuListener() {
-				 @Override
-				public void menuAboutToShow(IMenuManager menuManager) {
+				 public void menuAboutToShow(IMenuManager menuManager) {
 					 menuManager.updateAll(true);
 				 }
 			 });
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsEditor.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsEditor.java
index 692c4f8..b97d98d 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsEditor.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/presentation/LabelsEditor.java
@@ -81,6 +81,7 @@
 import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.ISelectionProvider;
@@ -106,6 +107,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
 import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.events.ControlAdapter;
 import org.eclipse.swt.events.ControlEvent;
@@ -188,7 +190,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PropertySheetPage propertySheetPage;
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
 
 	/**
 	 * This is the viewer that shadows the selection in the content outline.
@@ -248,7 +250,6 @@
 	 */
 	protected IPartListener partListener =
 		new IPartListener() {
-			@Override
 			public void partActivated(IWorkbenchPart p) {
 				if (p instanceof ContentOutline) {
 					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
@@ -258,7 +259,7 @@
 					}
 				}
 				else if (p instanceof PropertySheet) {
-					if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
 						getActionBarContributor().setActiveEditor(LabelsEditor.this);
 						handleActivate();
 					}
@@ -267,19 +268,15 @@
 					handleActivate();
 				}
 			}
-			@Override
 			public void partBroughtToTop(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partClosed(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partDeactivated(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partOpened(IWorkbenchPart p) {
 				// Ignore.
 			}
@@ -352,8 +349,7 @@
 							if (updateProblemIndication) {
 								getSite().getShell().getDisplay().asyncExec
 									(new Runnable() {
-										 @Override
-										public void run() {
+										 public void run() {
 											 updateProblemIndication();
 										 }
 									 });
@@ -375,6 +371,15 @@
 			@Override
 			protected void unsetTarget(Resource target) {
 				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
 			}
 		};
 
@@ -386,7 +391,6 @@
 	 */
 	protected IResourceChangeListener resourceChangeListener =
 		new IResourceChangeListener() {
-			@Override
 			public void resourceChanged(IResourceChangeEvent event) {
 				IResourceDelta delta = event.getDelta();
 				try {
@@ -395,7 +399,6 @@
 						protected Collection<Resource> changedResources = new ArrayList<Resource>();
 						protected Collection<Resource> removedResources = new ArrayList<Resource>();
 
-						@Override
 						public boolean visit(IResourceDelta delta) {
 							if (delta.getResource().getType() == IResource.FILE) {
 								if (delta.getKind() == IResourceDelta.REMOVED ||
@@ -410,6 +413,7 @@
 										}
 									}
 								}
+								return false;
 							}
 
 							return true;
@@ -430,8 +434,7 @@
 					if (!visitor.getRemovedResources().isEmpty()) {
 						getSite().getShell().getDisplay().asyncExec
 							(new Runnable() {
-								 @Override
-								public void run() {
+								 public void run() {
 									 removedResources.addAll(visitor.getRemovedResources());
 									 if (!isDirty()) {
 										 getSite().getPage().closeEditor(LabelsEditor.this, false);
@@ -443,8 +446,7 @@
 					if (!visitor.getChangedResources().isEmpty()) {
 						getSite().getShell().getDisplay().asyncExec
 							(new Runnable() {
-								 @Override
-								public void run() {
+								 public void run() {
 									 changedResources.addAll(visitor.getChangedResources());
 									 if (getSite().getPage().getActiveEditor() == LabelsEditor.this) {
 										 handleActivate();
@@ -648,12 +650,10 @@
 		//
 		commandStack.addCommandStackListener
 			(new CommandStackListener() {
-				 @Override
-				public void commandStackChanged(final EventObject event) {
+				 public void commandStackChanged(final EventObject event) {
 					 getContainer().getDisplay().asyncExec
 						 (new Runnable() {
-							  @Override
-							public void run() {
+							  public void run() {
 								  firePropertyChange(IEditorPart.PROP_DIRTY);
 
 								  // Try to select the affected objects.
@@ -662,8 +662,14 @@
 								  if (mostRecentCommand != null) {
 									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
 								  }
-								  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
-									  propertySheetPage.refresh();
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
 								  }
 							  }
 						  });
@@ -699,7 +705,6 @@
 		if (theSelection != null && !theSelection.isEmpty()) {
 			Runnable runnable =
 				new Runnable() {
-					@Override
 					public void run() {
 						// Try to select the items in the current content viewer of the editor.
 						//
@@ -777,7 +782,6 @@
 					new ISelectionChangedListener() {
 						// This just notifies those things that are affected by the section.
 						//
-						@Override
 						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
 							setSelection(selectionChangedEvent.getSelection());
 						}
@@ -833,7 +837,7 @@
 		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
 
 		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
-		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
 		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
 		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
 	}
@@ -873,10 +877,11 @@
 	 * @generated
 	 */
 	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
-		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+		boolean hasErrors = !resource.getErrors().isEmpty();
+		if (hasErrors || !resource.getWarnings().isEmpty()) {
 			BasicDiagnostic basicDiagnostic =
 				new BasicDiagnostic
-					(Diagnostic.ERROR,
+					(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING,
 					 "org.eclipse.stem.definitions", //$NON-NLS-1$
 					 0,
 					 getString("_UI_CreateModelError_message", resource.getURI()), //$NON-NLS-1$
@@ -932,8 +937,7 @@
 
 			getSite().getShell().getDisplay().asyncExec
 				(new Runnable() {
-					 @Override
-					public void run() {
+					 public void run() {
 						 setActivePage(0);
 					 }
 				 });
@@ -957,8 +961,7 @@
 
 		getSite().getShell().getDisplay().asyncExec
 			(new Runnable() {
-				 @Override
-				public void run() {
+				 public void run() {
 					 updateProblemIndication();
 				 }
 			 });
@@ -1093,8 +1096,7 @@
 				(new ISelectionChangedListener() {
 					 // This ensures that we handle selections correctly.
 					 //
-					 @Override
-					public void selectionChanged(SelectionChangedEvent event) {
+					 public void selectionChanged(SelectionChangedEvent event) {
 						 handleContentOutlineSelection(event.getSelection());
 					 }
 				 });
@@ -1110,23 +1112,22 @@
 	 * @generated
 	 */
 	public IPropertySheetPage getPropertySheetPage() {
-		if (propertySheetPage == null) {
-			propertySheetPage =
-				new ExtendedPropertySheetPage(editingDomain) {
-					@Override
-					public void setSelectionToViewer(List<?> selection) {
-						LabelsEditor.this.setSelectionToViewer(selection);
-						LabelsEditor.this.setFocus();
-					}
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					LabelsEditor.this.setSelectionToViewer(selection);
+					LabelsEditor.this.setFocus();
+				}
 
-					@Override
-					public void setActionBars(IActionBars actionBars) {
-						super.setActionBars(actionBars);
-						getActionBarContributor().shareGlobalActions(this, actionBars);
-					}
-				};
-			propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
-		}
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
 
 		return propertySheetPage;
 	}
@@ -1181,6 +1182,7 @@
 		//
 		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
 		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
 
 		// Do the work within an operation because this is a long running activity that modifies the workbench.
 		//
@@ -1233,7 +1235,7 @@
 
 	/**
 	 * This returns whether something has been persisted to the URI of the specified resource.
-	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1306,20 +1308,9 @@
 	 */
 	@Override
 	public void gotoMarker(IMarker marker) {
-		try {
-			if (marker.getType().equals(EValidator.MARKER)) {
-				String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
-				if (uriAttribute != null) {
-					URI uri = URI.createURI(uriAttribute);
-					EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
-					if (eObject != null) {
-					  setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
-					}
-				}
-			}
-		}
-		catch (CoreException exception) {
-			DefinitionsEditPlugin.INSTANCE.log(exception);
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
 		}
 	}
 
@@ -1510,7 +1501,7 @@
 			getActionBarContributor().setActiveEditor(null);
 		}
 
-		if (propertySheetPage != null) {
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
 			propertySheetPage.dispose();
 		}
 
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelItemProvider.java
index 896ceaa..ced890e 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelItemProvider.java
@@ -39,9 +39,7 @@
  * 
  * @generated
  */
-public class AreaLabelItemProvider extends StaticNodeLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class AreaLabelItemProvider extends StaticNodeLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelValueItemProvider.java
index 26a1e44..7ebf011 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/AreaLabelValueItemProvider.java
@@ -39,9 +39,7 @@
  * 
  * @generated
  */
-public class AreaLabelValueItemProvider extends LabelValueItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class AreaLabelValueItemProvider extends LabelValueItemProvider {
 
 	private static final int NUMBER_OF_FACTIONAL_DIGITS = 2;
 	private static NumberFormat formatter;
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelItemProvider.java
index 3c210d0..87b5ad8 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelItemProvider.java
@@ -34,9 +34,7 @@
  * @generated
  */
 public class CommonBorderRelationshipLabelItemProvider extends
-		PhysicalRelationshipLabelItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+		PhysicalRelationshipLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc --> <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelValueItemProvider.java
index a3d285c..36f7870 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/CommonBorderRelationshipLabelValueItemProvider.java
@@ -34,9 +34,7 @@
  * @generated
  */
 public class CommonBorderRelationshipLabelValueItemProvider extends
-		PhysicalRelationshipLabelValueItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+		PhysicalRelationshipLabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc --> <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/DoubleLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/DoubleLabelValueItemProvider.java
new file mode 100644
index 0000000..6383db5
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/DoubleLabelValueItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.definitions.labels.DoubleLabelValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.definitions.labels.DoubleLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleLabelValueItemProvider extends GenericLabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns DoubleLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DoubleLabelValue")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Object labelValue = ((DoubleLabelValue)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DoubleLabelValue_type") : //$NON-NLS-1$
+			getString("_UI_DoubleLabelValue_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelItemProvider.java
index f6f7c43..cb9ac00 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelItemProvider.java
@@ -37,13 +37,7 @@
  * @generated
  */
 public class EarthScienceLabelItemProvider
-	extends StaticNodeLabelItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends StaticNodeLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelValueItemProvider.java
index 14e4aa4..0379901 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/EarthScienceLabelValueItemProvider.java
@@ -38,13 +38,7 @@
  * @generated
  */
 public class EarthScienceLabelValueItemProvider
-	extends LabelValueItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends LabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/GenericLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/GenericLabelValueItemProvider.java
new file mode 100644
index 0000000..7525ec0
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/GenericLabelValueItemProvider.java
@@ -0,0 +1,198 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.stem.core.graph.provider.LabelValueItemProvider;
+
+import org.eclipse.stem.definitions.edges.provider.DefinitionsEditPlugin;
+
+import org.eclipse.stem.definitions.labels.GenericLabelValue;
+import org.eclipse.stem.definitions.labels.LabelsPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.definitions.labels.GenericLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericLabelValueItemProvider extends LabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+			addUnitPropertyDescriptor(object);
+			addMeasurePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_GenericLabelValue_value_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_GenericLabelValue_value_feature", "_UI_GenericLabelValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 LabelsPackage.Literals.GENERIC_LABEL_VALUE__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Unit feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUnitPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_GenericLabelValue_unit_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_GenericLabelValue_unit_feature", "_UI_GenericLabelValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 LabelsPackage.Literals.GENERIC_LABEL_VALUE__UNIT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Measure feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMeasurePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_GenericLabelValue_measure_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_GenericLabelValue_measure_feature", "_UI_GenericLabelValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 LabelsPackage.Literals.GENERIC_LABEL_VALUE__MEASURE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns GenericLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/GenericLabelValue")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Object labelValue = ((GenericLabelValue<?>)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_GenericLabelValue_type") : //$NON-NLS-1$
+			getString("_UI_GenericLabelValue_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(GenericLabelValue.class)) {
+			case LabelsPackage.GENERIC_LABEL_VALUE__VALUE:
+			case LabelsPackage.GENERIC_LABEL_VALUE__UNIT:
+			case LabelsPackage.GENERIC_LABEL_VALUE__MEASURE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DefinitionsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/IntegerLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/IntegerLabelValueItemProvider.java
new file mode 100644
index 0000000..043e0e0
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/IntegerLabelValueItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.definitions.labels.IntegerLabelValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.definitions.labels.IntegerLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegerLabelValueItemProvider extends GenericLabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntegerLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IntegerLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IntegerLabelValue")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Object labelValue = ((IntegerLabelValue)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IntegerLabelValue_type") : //$NON-NLS-1$
+			getString("_UI_IntegerLabelValue_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/KeyValueLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/KeyValueLabelValueItemProvider.java
new file mode 100644
index 0000000..df955eb
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/KeyValueLabelValueItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.definitions.labels.KeyValueLabelValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.definitions.labels.KeyValueLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class KeyValueLabelValueItemProvider extends GenericLabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public KeyValueLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns KeyValueLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/KeyValueLabelValue")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Object labelValue = ((KeyValueLabelValue)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_KeyValueLabelValue_type") : //$NON-NLS-1$
+			getString("_UI_KeyValueLabelValue_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/LabelsItemProviderAdapterFactory.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/LabelsItemProviderAdapterFactory.java
index 7644148..dfaf98d 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/LabelsItemProviderAdapterFactory.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/LabelsItemProviderAdapterFactory.java
@@ -426,6 +426,144 @@
 	}
 
 	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.definitions.labels.GenericLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GenericLabelValueItemProvider genericLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.definitions.labels.GenericLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createGenericLabelValueAdapter() {
+		if (genericLabelValueItemProvider == null) {
+			genericLabelValueItemProvider = new GenericLabelValueItemProvider(this);
+		}
+
+		return genericLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.definitions.labels.DoubleLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleLabelValueItemProvider doubleLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.definitions.labels.DoubleLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDoubleLabelValueAdapter() {
+		if (doubleLabelValueItemProvider == null) {
+			doubleLabelValueItemProvider = new DoubleLabelValueItemProvider(this);
+		}
+
+		return doubleLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.definitions.labels.IntegerLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntegerLabelValueItemProvider integerLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.definitions.labels.IntegerLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIntegerLabelValueAdapter() {
+		if (integerLabelValueItemProvider == null) {
+			integerLabelValueItemProvider = new IntegerLabelValueItemProvider(this);
+		}
+
+		return integerLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.definitions.labels.LongLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LongLabelValueItemProvider longLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.definitions.labels.LongLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLongLabelValueAdapter() {
+		if (longLabelValueItemProvider == null) {
+			longLabelValueItemProvider = new LongLabelValueItemProvider(this);
+		}
+
+		return longLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.definitions.labels.StringLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringLabelValueItemProvider stringLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.definitions.labels.StringLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringLabelValueAdapter() {
+		if (stringLabelValueItemProvider == null) {
+			stringLabelValueItemProvider = new StringLabelValueItemProvider(this);
+		}
+
+		return stringLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.definitions.labels.KeyValueLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected KeyValueLabelValueItemProvider keyValueLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.definitions.labels.KeyValueLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createKeyValueLabelValueAdapter() {
+		if (keyValueLabelValueItemProvider == null) {
+			keyValueLabelValueItemProvider = new KeyValueLabelValueItemProvider(this);
+		}
+
+		return keyValueLabelValueItemProvider;
+	}
+
+	/**
 	 * This returns the root adapter factory that contains this factory. <!--
 	 * begin-user-doc -->
 	 * 
@@ -577,6 +715,12 @@
 		if (roadTransportRelationshipLabelValueItemProvider != null) roadTransportRelationshipLabelValueItemProvider.dispose();
 		if (earthScienceLabelItemProvider != null) earthScienceLabelItemProvider.dispose();
 		if (earthScienceLabelValueItemProvider != null) earthScienceLabelValueItemProvider.dispose();
+		if (genericLabelValueItemProvider != null) genericLabelValueItemProvider.dispose();
+		if (doubleLabelValueItemProvider != null) doubleLabelValueItemProvider.dispose();
+		if (integerLabelValueItemProvider != null) integerLabelValueItemProvider.dispose();
+		if (longLabelValueItemProvider != null) longLabelValueItemProvider.dispose();
+		if (stringLabelValueItemProvider != null) stringLabelValueItemProvider.dispose();
+		if (keyValueLabelValueItemProvider != null) keyValueLabelValueItemProvider.dispose();
 	}
 
 }
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/LongLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/LongLabelValueItemProvider.java
new file mode 100644
index 0000000..31878a2
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/LongLabelValueItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.definitions.labels.LongLabelValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.definitions.labels.LongLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LongLabelValueItemProvider extends GenericLabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LongLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LongLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LongLabelValue")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Object labelValue = ((LongLabelValue)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LongLabelValue_type") : //$NON-NLS-1$
+			getString("_UI_LongLabelValue_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelItemProvider.java
index eb96375..4c27c52 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelItemProvider.java
@@ -36,9 +36,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class PhysicalRelationshipLabelItemProvider extends StaticEdgeLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class PhysicalRelationshipLabelItemProvider extends StaticEdgeLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc --> <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelValueItemProvider.java
index 753f8fa..5d313df 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PhysicalRelationshipLabelValueItemProvider.java
@@ -34,13 +34,7 @@
  * @generated
  */
 public class PhysicalRelationshipLabelValueItemProvider
-	extends LabelValueItemProvider
-	implements	
-		IEditingDomainItemProvider,	
-		IStructuredItemContentProvider,	
-		ITreeItemContentProvider,	
-		IItemLabelProvider,	
-		IItemPropertySource {
+	extends LabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelItemProvider.java
index 677f88d..7115de5 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelItemProvider.java
@@ -40,9 +40,7 @@
  * 
  * @generated
  */
-public class PopulationLabelItemProvider extends StaticNodeLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class PopulationLabelItemProvider extends StaticNodeLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelValueItemProvider.java
index 1756734..d3848b7 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/PopulationLabelValueItemProvider.java
@@ -36,9 +36,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class PopulationLabelValueItemProvider extends LabelValueItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class PopulationLabelValueItemProvider extends LabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelItemProvider.java
index 411f26a..f66f64b 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelItemProvider.java
@@ -35,13 +35,7 @@
  * @generated
  */
 public class RelativePhysicalRelationshipLabelItemProvider
-	extends PhysicalRelationshipLabelItemProvider
-	implements	
-		IEditingDomainItemProvider,	
-		IStructuredItemContentProvider,	
-		ITreeItemContentProvider,	
-		IItemLabelProvider,	
-		IItemPropertySource {
+	extends PhysicalRelationshipLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelValueItemProvider.java
index 7da5b4d..0b98192 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RelativePhysicalRelationshipLabelValueItemProvider.java
@@ -40,13 +40,7 @@
  * @generated
  */
 public class RelativePhysicalRelationshipLabelValueItemProvider
-	extends LabelValueItemProvider
-	implements	
-		IEditingDomainItemProvider,	
-		IStructuredItemContentProvider,	
-		ITreeItemContentProvider,	
-		IItemLabelProvider,	
-		IItemPropertySource {
+	extends LabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelItemProvider.java
index 8dc8890..019ac29 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelItemProvider.java
@@ -35,13 +35,7 @@
  * @generated
  */
 public class RoadTransportRelationshipLabelItemProvider
-	extends PhysicalRelationshipLabelItemProvider
-	implements	
-		IEditingDomainItemProvider,	
-		IStructuredItemContentProvider,	
-		ITreeItemContentProvider,	
-		IItemLabelProvider,	
-		IItemPropertySource {
+	extends PhysicalRelationshipLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelValueItemProvider.java
index 6c215f0..7cdc5a3 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/RoadTransportRelationshipLabelValueItemProvider.java
@@ -35,13 +35,7 @@
  * @generated
  */
 public class RoadTransportRelationshipLabelValueItemProvider
-	extends PhysicalRelationshipLabelValueItemProvider
-	implements	
-		IEditingDomainItemProvider,	
-		IStructuredItemContentProvider,	
-		ITreeItemContentProvider,	
-		IItemLabelProvider,	
-		IItemPropertySource {
+	extends PhysicalRelationshipLabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/StringLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/StringLabelValueItemProvider.java
new file mode 100644
index 0000000..4a60977
--- /dev/null
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/StringLabelValueItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.stem.definitions.labels.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.definitions.labels.StringLabelValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.definitions.labels.StringLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringLabelValueItemProvider extends GenericLabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StringLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns StringLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringLabelValue")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Object labelValue = ((StringLabelValue)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_StringLabelValue_type") : //$NON-NLS-1$
+			getString("_UI_StringLabelValue_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelItemProvider.java
index 96dfed8..a630917 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelItemProvider.java
@@ -40,9 +40,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class TransportRelationshipLabelItemProvider extends DynamicEdgeLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class TransportRelationshipLabelItemProvider extends DynamicEdgeLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc --> <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelValueItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelValueItemProvider.java
index 4c7f857..d632dae 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelValueItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/provider/TransportRelationshipLabelValueItemProvider.java
@@ -37,9 +37,7 @@
  * @generated
  */
 public class TransportRelationshipLabelValueItemProvider extends
-		LabelValueItemProvider implements IEditingDomainItemProvider,
-		IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource {
+		LabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc --> <!-- end-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsAdapterFactory.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsAdapterFactory.java
index dfd277d..04b4ecd 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsAdapterFactory.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsAdapterFactory.java
@@ -27,6 +27,7 @@
 import org.eclipse.stem.core.graph.StaticLabel;
 import org.eclipse.stem.core.graph.StaticNodeLabel;
 import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.definitions.labels.*;
 import org.eclipse.stem.definitions.labels.AreaLabel;
 import org.eclipse.stem.definitions.labels.AreaLabelValue;
 import org.eclipse.stem.definitions.labels.CommonBorderRelationshipLabel;
@@ -168,6 +169,30 @@
 				return createEarthScienceLabelValueAdapter();
 			}
 			@Override
+			public <T> Adapter caseGenericLabelValue(GenericLabelValue<T> object) {
+				return createGenericLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseDoubleLabelValue(DoubleLabelValue object) {
+				return createDoubleLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseIntegerLabelValue(IntegerLabelValue object) {
+				return createIntegerLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseLongLabelValue(LongLabelValue object) {
+				return createLongLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseStringLabelValue(StringLabelValue object) {
+				return createStringLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseKeyValueLabelValue(KeyValueLabelValue object) {
+				return createKeyValueLabelValueAdapter();
+			}
+			@Override
 			public <T> Adapter caseComparable(Comparable<T> object) {
 				return createComparableAdapter();
 			}
@@ -455,6 +480,90 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.definitions.labels.GenericLabelValue <em>Generic Label Value</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.stem.definitions.labels.GenericLabelValue
+	 * @generated
+	 */
+	public Adapter createGenericLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.definitions.labels.DoubleLabelValue <em>Double Label Value</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.stem.definitions.labels.DoubleLabelValue
+	 * @generated
+	 */
+	public Adapter createDoubleLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.definitions.labels.IntegerLabelValue <em>Integer Label Value</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.stem.definitions.labels.IntegerLabelValue
+	 * @generated
+	 */
+	public Adapter createIntegerLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.definitions.labels.LongLabelValue <em>Long Label Value</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.stem.definitions.labels.LongLabelValue
+	 * @generated
+	 */
+	public Adapter createLongLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.definitions.labels.StringLabelValue <em>String Label Value</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.stem.definitions.labels.StringLabelValue
+	 * @generated
+	 */
+	public Adapter createStringLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.definitions.labels.KeyValueLabelValue <em>Key Value Label Value</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.stem.definitions.labels.KeyValueLabelValue
+	 * @generated
+	 */
+	public Adapter createKeyValueLabelValueAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsSwitch.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsSwitch.java
index 5b3239a..aaea53d 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsSwitch.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/labels/util/LabelsSwitch.java
@@ -15,6 +15,8 @@
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
 import org.eclipse.stem.core.common.Identifiable;
 import org.eclipse.stem.core.common.SanityChecker;
 import org.eclipse.stem.core.graph.DynamicEdgeLabel;
@@ -27,6 +29,7 @@
 import org.eclipse.stem.core.graph.StaticLabel;
 import org.eclipse.stem.core.graph.StaticNodeLabel;
 import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.definitions.labels.*;
 import org.eclipse.stem.definitions.labels.AreaLabel;
 import org.eclipse.stem.definitions.labels.AreaLabelValue;
 import org.eclipse.stem.definitions.labels.CommonBorderRelationshipLabel;
@@ -55,7 +58,7 @@
  * @see org.eclipse.stem.definitions.labels.LabelsPackage
  * @generated
  */
-public class LabelsSwitch<T1> {
+public class LabelsSwitch<T1> extends Switch<T1> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -76,14 +79,16 @@
 	}
 
 	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
-	public T1 doSwitch(EObject theEObject) {
-		return doSwitch(theEObject.eClass(), theEObject);
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
 	}
 
 	/**
@@ -93,26 +98,7 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	protected T1 doSwitch(EClass theEClass, EObject theEObject) {
-		if (theEClass.eContainer() == modelPackage) {
-			return doSwitch(theEClass.getClassifierID(), theEObject);
-		}
-		else {
-			List<EClass> eSuperTypes = theEClass.getESuperTypes();
-			return
-				eSuperTypes.isEmpty() ?
-					defaultCase(theEObject) :
-					doSwitch(eSuperTypes.get(0), theEObject);
-		}
-	}
-
-	/**
-	 * 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 T1 doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case LabelsPackage.AREA_LABEL: {
@@ -295,6 +281,59 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case LabelsPackage.GENERIC_LABEL_VALUE: {
+				GenericLabelValue<?> genericLabelValue = (GenericLabelValue<?>)theEObject;
+				T1 result = caseGenericLabelValue(genericLabelValue);
+				if (result == null) result = caseLabelValue(genericLabelValue);
+				if (result == null) result = caseSanityChecker(genericLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LabelsPackage.DOUBLE_LABEL_VALUE: {
+				DoubleLabelValue doubleLabelValue = (DoubleLabelValue)theEObject;
+				T1 result = caseDoubleLabelValue(doubleLabelValue);
+				if (result == null) result = caseGenericLabelValue(doubleLabelValue);
+				if (result == null) result = caseLabelValue(doubleLabelValue);
+				if (result == null) result = caseSanityChecker(doubleLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LabelsPackage.INTEGER_LABEL_VALUE: {
+				IntegerLabelValue integerLabelValue = (IntegerLabelValue)theEObject;
+				T1 result = caseIntegerLabelValue(integerLabelValue);
+				if (result == null) result = caseGenericLabelValue(integerLabelValue);
+				if (result == null) result = caseLabelValue(integerLabelValue);
+				if (result == null) result = caseSanityChecker(integerLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LabelsPackage.LONG_LABEL_VALUE: {
+				LongLabelValue longLabelValue = (LongLabelValue)theEObject;
+				T1 result = caseLongLabelValue(longLabelValue);
+				if (result == null) result = caseGenericLabelValue(longLabelValue);
+				if (result == null) result = caseLabelValue(longLabelValue);
+				if (result == null) result = caseSanityChecker(longLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LabelsPackage.STRING_LABEL_VALUE: {
+				StringLabelValue stringLabelValue = (StringLabelValue)theEObject;
+				T1 result = caseStringLabelValue(stringLabelValue);
+				if (result == null) result = caseGenericLabelValue(stringLabelValue);
+				if (result == null) result = caseLabelValue(stringLabelValue);
+				if (result == null) result = caseSanityChecker(stringLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LabelsPackage.KEY_VALUE_LABEL_VALUE: {
+				KeyValueLabelValue keyValueLabelValue = (KeyValueLabelValue)theEObject;
+				T1 result = caseKeyValueLabelValue(keyValueLabelValue);
+				if (result == null) result = caseGenericLabelValue(keyValueLabelValue);
+				if (result == null) result = caseLabelValue(keyValueLabelValue);
+				if (result == null) result = caseSanityChecker(keyValueLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -526,6 +565,96 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Generic Label Value</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>Generic Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public <T> T1 caseGenericLabelValue(GenericLabelValue<T> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Double Label Value</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 Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDoubleLabelValue(DoubleLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integer Label Value</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 Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegerLabelValue(IntegerLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Long Label Value</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>Long Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLongLabelValue(LongLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String Label Value</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>String Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStringLabelValue(StringLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Key Value Label Value</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>Key Value Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseKeyValueLabelValue(KeyValueLabelValue object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -720,6 +849,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
+	@Override
 	public T1 defaultCase(EObject object) {
 		return null;
 	}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/GeographicFeatureImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/GeographicFeatureImpl.java
index 89f7ecb..b05c8b6 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/GeographicFeatureImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/GeographicFeatureImpl.java
@@ -20,8 +20,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Geographic Feature</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/NodesFactoryImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/NodesFactoryImpl.java
index 90336bd..3697ea2 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/NodesFactoryImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/NodesFactoryImpl.java
@@ -16,6 +16,7 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.definitions.nodes.*;
 import org.eclipse.stem.definitions.nodes.NodesFactory;
 import org.eclipse.stem.definitions.nodes.NodesPackage;
 import org.eclipse.stem.definitions.nodes.Region;
@@ -35,7 +36,7 @@
 	 */
 	public static NodesFactory init() {
 		try {
-			NodesFactory theNodesFactory = (NodesFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/definitions/nodes.ecore"); //$NON-NLS-1$ 
+			NodesFactory theNodesFactory = (NodesFactory)EPackage.Registry.INSTANCE.getEFactory(NodesPackage.eNS_URI);
 			if (theNodesFactory != null) {
 				return theNodesFactory;
 			}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/RegionImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/RegionImpl.java
index b1b66a5..d1ddd46 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/RegionImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/impl/RegionImpl.java
@@ -20,8 +20,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '<em><b>Region</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesActionBarContributor.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesActionBarContributor.java
index 358324d..2c075b6 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesActionBarContributor.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesActionBarContributor.java
@@ -206,8 +206,7 @@
 		//
 		submenuManager.addMenuListener
 			(new IMenuListener() {
-				 @Override
-				public void menuAboutToShow(IMenuManager menuManager) {
+				 public void menuAboutToShow(IMenuManager menuManager) {
 					 menuManager.updateAll(true);
 				 }
 			 });
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesEditor.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesEditor.java
index d201fd2..dafaca6 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesEditor.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/presentation/NodesEditor.java
@@ -81,6 +81,7 @@
 import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.ISelectionProvider;
@@ -106,6 +107,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
 import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.events.ControlAdapter;
 import org.eclipse.swt.events.ControlEvent;
@@ -188,7 +190,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PropertySheetPage propertySheetPage;
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
 
 	/**
 	 * This is the viewer that shadows the selection in the content outline.
@@ -248,7 +250,6 @@
 	 */
 	protected IPartListener partListener =
 		new IPartListener() {
-			@Override
 			public void partActivated(IWorkbenchPart p) {
 				if (p instanceof ContentOutline) {
 					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
@@ -258,7 +259,7 @@
 					}
 				}
 				else if (p instanceof PropertySheet) {
-					if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
 						getActionBarContributor().setActiveEditor(NodesEditor.this);
 						handleActivate();
 					}
@@ -267,19 +268,15 @@
 					handleActivate();
 				}
 			}
-			@Override
 			public void partBroughtToTop(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partClosed(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partDeactivated(IWorkbenchPart p) {
 				// Ignore.
 			}
-			@Override
 			public void partOpened(IWorkbenchPart p) {
 				// Ignore.
 			}
@@ -352,8 +349,7 @@
 							if (updateProblemIndication) {
 								getSite().getShell().getDisplay().asyncExec
 									(new Runnable() {
-										 @Override
-										public void run() {
+										 public void run() {
 											 updateProblemIndication();
 										 }
 									 });
@@ -375,6 +371,15 @@
 			@Override
 			protected void unsetTarget(Resource target) {
 				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
 			}
 		};
 
@@ -386,7 +391,6 @@
 	 */
 	protected IResourceChangeListener resourceChangeListener =
 		new IResourceChangeListener() {
-			@Override
 			public void resourceChanged(IResourceChangeEvent event) {
 				IResourceDelta delta = event.getDelta();
 				try {
@@ -395,7 +399,6 @@
 						protected Collection<Resource> changedResources = new ArrayList<Resource>();
 						protected Collection<Resource> removedResources = new ArrayList<Resource>();
 
-						@Override
 						public boolean visit(IResourceDelta delta) {
 							if (delta.getResource().getType() == IResource.FILE) {
 								if (delta.getKind() == IResourceDelta.REMOVED ||
@@ -410,6 +413,7 @@
 										}
 									}
 								}
+								return false;
 							}
 
 							return true;
@@ -430,8 +434,7 @@
 					if (!visitor.getRemovedResources().isEmpty()) {
 						getSite().getShell().getDisplay().asyncExec
 							(new Runnable() {
-								 @Override
-								public void run() {
+								 public void run() {
 									 removedResources.addAll(visitor.getRemovedResources());
 									 if (!isDirty()) {
 										 getSite().getPage().closeEditor(NodesEditor.this, false);
@@ -443,8 +446,7 @@
 					if (!visitor.getChangedResources().isEmpty()) {
 						getSite().getShell().getDisplay().asyncExec
 							(new Runnable() {
-								 @Override
-								public void run() {
+								 public void run() {
 									 changedResources.addAll(visitor.getChangedResources());
 									 if (getSite().getPage().getActiveEditor() == NodesEditor.this) {
 										 handleActivate();
@@ -648,12 +650,10 @@
 		//
 		commandStack.addCommandStackListener
 			(new CommandStackListener() {
-				 @Override
-				public void commandStackChanged(final EventObject event) {
+				 public void commandStackChanged(final EventObject event) {
 					 getContainer().getDisplay().asyncExec
 						 (new Runnable() {
-							  @Override
-							public void run() {
+							  public void run() {
 								  firePropertyChange(IEditorPart.PROP_DIRTY);
 
 								  // Try to select the affected objects.
@@ -662,8 +662,14 @@
 								  if (mostRecentCommand != null) {
 									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
 								  }
-								  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
-									  propertySheetPage.refresh();
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
 								  }
 							  }
 						  });
@@ -699,7 +705,6 @@
 		if (theSelection != null && !theSelection.isEmpty()) {
 			Runnable runnable =
 				new Runnable() {
-					@Override
 					public void run() {
 						// Try to select the items in the current content viewer of the editor.
 						//
@@ -777,7 +782,6 @@
 					new ISelectionChangedListener() {
 						// This just notifies those things that are affected by the section.
 						//
-						@Override
 						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
 							setSelection(selectionChangedEvent.getSelection());
 						}
@@ -833,7 +837,7 @@
 		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
 
 		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
-		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
 		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
 		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
 	}
@@ -873,10 +877,11 @@
 	 * @generated
 	 */
 	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
-		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+		boolean hasErrors = !resource.getErrors().isEmpty();
+		if (hasErrors || !resource.getWarnings().isEmpty()) {
 			BasicDiagnostic basicDiagnostic =
 				new BasicDiagnostic
-					(Diagnostic.ERROR,
+					(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING,
 					 "org.eclipse.stem.definitions", //$NON-NLS-1$
 					 0,
 					 getString("_UI_CreateModelError_message", resource.getURI()), //$NON-NLS-1$
@@ -932,8 +937,7 @@
 
 			getSite().getShell().getDisplay().asyncExec
 				(new Runnable() {
-					 @Override
-					public void run() {
+					 public void run() {
 						 setActivePage(0);
 					 }
 				 });
@@ -957,8 +961,7 @@
 
 		getSite().getShell().getDisplay().asyncExec
 			(new Runnable() {
-				 @Override
-				public void run() {
+				 public void run() {
 					 updateProblemIndication();
 				 }
 			 });
@@ -1093,8 +1096,7 @@
 				(new ISelectionChangedListener() {
 					 // This ensures that we handle selections correctly.
 					 //
-					 @Override
-					public void selectionChanged(SelectionChangedEvent event) {
+					 public void selectionChanged(SelectionChangedEvent event) {
 						 handleContentOutlineSelection(event.getSelection());
 					 }
 				 });
@@ -1110,23 +1112,22 @@
 	 * @generated
 	 */
 	public IPropertySheetPage getPropertySheetPage() {
-		if (propertySheetPage == null) {
-			propertySheetPage =
-				new ExtendedPropertySheetPage(editingDomain) {
-					@Override
-					public void setSelectionToViewer(List<?> selection) {
-						NodesEditor.this.setSelectionToViewer(selection);
-						NodesEditor.this.setFocus();
-					}
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					NodesEditor.this.setSelectionToViewer(selection);
+					NodesEditor.this.setFocus();
+				}
 
-					@Override
-					public void setActionBars(IActionBars actionBars) {
-						super.setActionBars(actionBars);
-						getActionBarContributor().shareGlobalActions(this, actionBars);
-					}
-				};
-			propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
-		}
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
 
 		return propertySheetPage;
 	}
@@ -1181,6 +1182,7 @@
 		//
 		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
 		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
 
 		// Do the work within an operation because this is a long running activity that modifies the workbench.
 		//
@@ -1233,7 +1235,7 @@
 
 	/**
 	 * This returns whether something has been persisted to the URI of the specified resource.
-	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1306,20 +1308,9 @@
 	 */
 	@Override
 	public void gotoMarker(IMarker marker) {
-		try {
-			if (marker.getType().equals(EValidator.MARKER)) {
-				String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
-				if (uriAttribute != null) {
-					URI uri = URI.createURI(uriAttribute);
-					EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
-					if (eObject != null) {
-					  setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
-					}
-				}
-			}
-		}
-		catch (CoreException exception) {
-			DefinitionsEditPlugin.INSTANCE.log(exception);
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
 		}
 	}
 
@@ -1510,7 +1501,7 @@
 			getActionBarContributor().setActiveEditor(null);
 		}
 
-		if (propertySheetPage != null) {
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
 			propertySheetPage.dispose();
 		}
 
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/GeographicFeatureItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/GeographicFeatureItemProvider.java
index 2891d5a..b5c6fa4 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/GeographicFeatureItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/GeographicFeatureItemProvider.java
@@ -35,13 +35,7 @@
  * @generated
  */
 public class GeographicFeatureItemProvider
-	extends NodeItemProvider
-	implements	
-		IEditingDomainItemProvider,	
-		IStructuredItemContentProvider,	
-		ITreeItemContentProvider,	
-		IItemLabelProvider,	
-		IItemPropertySource {
+	extends NodeItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/RegionItemProvider.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/RegionItemProvider.java
index 6c558b5..9974558 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/RegionItemProvider.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/provider/RegionItemProvider.java
@@ -34,13 +34,7 @@
  * @generated
  */
 public class RegionItemProvider
-	extends GeographicFeatureItemProvider
-	implements	
-		IEditingDomainItemProvider,	
-		IStructuredItemContentProvider,	
-		ITreeItemContentProvider,	
-		IItemLabelProvider,	
-		IItemPropertySource {
+	extends GeographicFeatureItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesAdapterFactory.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesAdapterFactory.java
index b75aeb9..2f5722a 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesAdapterFactory.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesAdapterFactory.java
@@ -19,6 +19,7 @@
 import org.eclipse.stem.core.common.Identifiable;
 import org.eclipse.stem.core.common.SanityChecker;
 import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.definitions.nodes.*;
 import org.eclipse.stem.definitions.nodes.GeographicFeature;
 import org.eclipse.stem.definitions.nodes.NodesPackage;
 import org.eclipse.stem.definitions.nodes.Region;
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesSwitch.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesSwitch.java
index f93c137..42903a6 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesSwitch.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/nodes/util/NodesSwitch.java
@@ -15,9 +15,12 @@
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
 import org.eclipse.stem.core.common.Identifiable;
 import org.eclipse.stem.core.common.SanityChecker;
 import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.definitions.nodes.*;
 import org.eclipse.stem.definitions.nodes.GeographicFeature;
 import org.eclipse.stem.definitions.nodes.NodesPackage;
 import org.eclipse.stem.definitions.nodes.Region;
@@ -35,7 +38,7 @@
  * @see org.eclipse.stem.definitions.nodes.NodesPackage
  * @generated
  */
-public class NodesSwitch<T1> {
+public class NodesSwitch<T1> extends Switch<T1> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -57,14 +60,16 @@
 	}
 
 	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
-	public T1 doSwitch(EObject theEObject) {
-		return doSwitch(theEObject.eClass(), theEObject);
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
 	}
 
 	/**
@@ -74,26 +79,7 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	protected T1 doSwitch(EClass theEClass, EObject theEObject) {
-		if (theEClass.eContainer() == modelPackage) {
-			return doSwitch(theEClass.getClassifierID(), theEObject);
-		}
-		else {
-			List<EClass> eSuperTypes = theEClass.getESuperTypes();
-			return
-				eSuperTypes.isEmpty() ?
-					defaultCase(theEObject) :
-					doSwitch(eSuperTypes.get(0), theEObject);
-		}
-	}
-
-	/**
-	 * 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 T1 doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case NodesPackage.GEOGRAPHIC_FEATURE: {
@@ -117,6 +103,12 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case NodesPackage.NODE: {
+				Node node = (Node)theEObject;
+				T1 result = caseNode(node);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -237,6 +229,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
+	@Override
 	public T1 defaultCase(EObject object) {
 		return null;
 	}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/RateImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/RateImpl.java
index b7b6834..165209e 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/RateImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/RateImpl.java
@@ -24,10 +24,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.definitions.types.impl.RateImpl#getRate <em>Rate</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/TypesFactoryImpl.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/TypesFactoryImpl.java
index 0031e1e..25303e0 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/TypesFactoryImpl.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/impl/TypesFactoryImpl.java
@@ -16,6 +16,7 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.definitions.types.*;
 import org.eclipse.stem.definitions.types.TypesFactory;
 import org.eclipse.stem.definitions.types.TypesPackage;
 
@@ -34,7 +35,7 @@
 	 */
 	public static TypesFactory init() {
 		try {
-			TypesFactory theTypesFactory = (TypesFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/definitions/types.ecore"); //$NON-NLS-1$ 
+			TypesFactory theTypesFactory = (TypesFactory)EPackage.Registry.INSTANCE.getEFactory(TypesPackage.eNS_URI);
 			if (theTypesFactory != null) {
 				return theTypesFactory;
 			}
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesAdapterFactory.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesAdapterFactory.java
index a825f24..f921ac8 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesAdapterFactory.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesAdapterFactory.java
@@ -15,6 +15,7 @@
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.definitions.types.*;
 import org.eclipse.stem.definitions.types.CategorizedType;
 import org.eclipse.stem.definitions.types.Rate;
 import org.eclipse.stem.definitions.types.TypesPackage;
diff --git a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesSwitch.java b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesSwitch.java
index 3b28594..a086b3d 100644
--- a/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesSwitch.java
+++ b/core/org.eclipse.stem.definitions/src/org/eclipse/stem/definitions/types/util/TypesSwitch.java
@@ -15,6 +15,9 @@
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.stem.definitions.types.*;
 import org.eclipse.stem.definitions.types.CategorizedType;
 import org.eclipse.stem.definitions.types.Rate;
 import org.eclipse.stem.definitions.types.TypesPackage;
@@ -32,7 +35,7 @@
  * @see org.eclipse.stem.definitions.types.TypesPackage
  * @generated
  */
-public class TypesSwitch<T> {
+public class TypesSwitch<T> extends Switch<T> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -54,14 +57,16 @@
 	}
 
 	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
-	public T doSwitch(EObject theEObject) {
-		return doSwitch(theEObject.eClass(), theEObject);
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
 	}
 
 	/**
@@ -71,26 +76,7 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	protected T doSwitch(EClass theEClass, EObject theEObject) {
-		if (theEClass.eContainer() == modelPackage) {
-			return doSwitch(theEClass.getClassifierID(), theEObject);
-		}
-		else {
-			List<EClass> eSuperTypes = theEClass.getESuperTypes();
-			return
-				eSuperTypes.isEmpty() ?
-					defaultCase(theEObject) :
-					doSwitch(eSuperTypes.get(0), theEObject);
-		}
-	}
-
-	/**
-	 * 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 TypesPackage.CATEGORIZED_TYPE: {
@@ -150,6 +136,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
+	@Override
 	public T defaultCase(EObject object) {
 		return null;
 	}
diff --git a/core/org.eclipse.stem.jobs/src/org/eclipse/stem/jobs/execution/Executable.java b/core/org.eclipse.stem.jobs/src/org/eclipse/stem/jobs/execution/Executable.java
index d2bce88..baa122d 100644
--- a/core/org.eclipse.stem.jobs/src/org/eclipse/stem/jobs/execution/Executable.java
+++ b/core/org.eclipse.stem.jobs/src/org/eclipse/stem/jobs/execution/Executable.java
@@ -94,7 +94,9 @@
 		sb.append("-");
 		sb.append(getSequenceNumber());
 		sb.append("-");
-		sb.append(DublinCoreImpl.createISO8601DateString(getCreationTime()));
+		sb.append(DublinCoreImpl.createISO8601DateStringSeconds(getCreationTime()));
+		// for milli-sec resolution use the following
+		// sb.append(DublinCoreImpl.createISO8601DateString(getCreationTime()));
 		return sb.toString();
 	} // getUniqueIDString
 
diff --git a/core/org.eclipse.stem.loggers.csv/META-INF/MANIFEST.MF b/core/org.eclipse.stem.loggers.csv/META-INF/MANIFEST.MF
index 4a48405..d65ac79 100644
--- a/core/org.eclipse.stem.loggers.csv/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.stem.loggers.csv/META-INF/MANIFEST.MF
@@ -7,8 +7,7 @@
 Bundle-Activator: org.eclipse.stem.loggers.csv.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6,
- JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.stem.jobs,
  org.eclipse.stem.ui,
diff --git a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileDecoratorLogger.java b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileDecoratorLogger.java
index 811802c..0a529a8 100644
--- a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileDecoratorLogger.java
+++ b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileDecoratorLogger.java
@@ -25,6 +25,7 @@
 import java.util.Set;
 
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
@@ -78,7 +79,7 @@
 	
 	private final DelimetedFileSimulationLogger simulationLogger;
 	
-	private final IntegrationDecorator decorator;
+	protected final IntegrationDecorator decorator;
 	
 	private final CSVLogger logger;
 
@@ -91,6 +92,8 @@
 	
 	private TimeProvider timeProvider;
 	
+	private static final String NOT_SET = "null";
+	
 	//private int interationCount = 0;
 
 	private boolean logIntegers = false;
@@ -99,16 +102,71 @@
 	private List<Integer> resolutionLevels;
 	private Map<String,EList<String>> identifierProperties;
 
-	public DelimetedFileDecoratorLogger(
-			DelimetedFileSimulationLogger simulationLogger,
-			IntegrationDecorator decorator) {
+	private boolean setupComplete = false;
+	
+	/**
+	 * 
+	 * @param simulationLogger
+	 * @param decorator
+	 */
+	public DelimetedFileDecoratorLogger(DelimetedFileSimulationLogger simulationLogger, IntegrationDecorator decorator) {
 		this.simulationLogger = simulationLogger;
 		this.decorator = decorator;
 		this.logger = simulationLogger.getLogger();
 		
-		identifierProperties = logger.getDecoratorProperties(decorator.getURI());
+//		decorator.getURI().trimQuery()
+		URI baseDecoratorURI = decorator.getURI().trimQuery();
+		identifierProperties = logger.getDecoratorProperties(baseDecoratorURI);
+		
 	}
 
+	/**
+	 * This constructor is only used when "cloning" a logger from a parent logger to log evolving disease models
+	 * @param simulationLogger
+	 * @param decorator
+	 * @param noSummaries
+	 */
+	public DelimetedFileDecoratorLogger(DelimetedFileSimulationLogger simulationLogger, IntegrationDecorator decorator, boolean noSummaries) {
+		
+		this.simulationLogger = simulationLogger;
+		this.decorator = decorator;
+		this.logger = simulationLogger.getLogger();
+		
+//		decorator.getURI().trimQuery()
+		URI baseDecoratorURI = decorator.getURI().trimQuery();
+		identifierProperties = logger.getDecoratorProperties(baseDecoratorURI);
+		if(noSummaries) {
+			this.logger.setLogHtmlSummary(false);// only true for the first parent - not the children
+			this.logger.setLogRunParameters(false); // only true for the first parent - not the children
+		}
+		
+		/*this.simulationLogger = parentLogger.simulationLogger;
+		this.decorator = decorator;
+		this.logger = simulationLogger.getLogger();
+		this.identifierProperties = new HashMap<String,EList<String>>();
+		this.identifierProperties.putAll(parentLogger.identifierProperties); 
+		
+		// clone from parent
+		this.getDecoratorName(); // private String decoratorName;
+		EXCLUDED_NODES.addAll(parentLogger.EXCLUDED_NODES);
+		//sortedNodeList.putAll(parentLogger.sortedNodeList);
+		
+		this.getLogDirectory(); // private File logDirectory;
+		
+		this.logIntegers = parentLogger.logIntegers;
+		this.beforeStart = parentLogger.beforeStart;
+		
+		this.getTimeProvider(); //private TimeProvider timeProvider;
+		this.logger.setLogHtmlSummary(false);// only true for the first parent - not the children
+		this.logger.setLogRunParameters(false); // only true for the first parent - not the children
+		//logWriters.putAll(parentLogger.logWriters);  => done by logger.start
+		this.start();
+		//nodeLevels.putAll(parentLogger.nodeLevels);
+		//this.resolutionLevels.addAll(parentLogger.resolutionLevels);
+		//this.identifierProperties.putAll(parentLogger.identifierProperties);
+*/	
+	}
+	
 
 	/**
 	 * Starts the decorator logger.  If enabled, writes the 
@@ -116,15 +174,12 @@
 	 */
 	public void start() 
 	{
-		if (logger.isLogRunParameters()) {
-			writeRunParameters();
-		}
 		
 		setupPropertyLoggers();
 		
-		if (logger.isLogInitialState()) {
-			log();
-		}
+		
+		
+		setupComplete = true;
 	}
 
 	/**
@@ -160,6 +215,11 @@
 	 */
 	public void log() 
 	{
+		if (!setupComplete) {
+			start();
+		}
+		
+		
 		//interationCount++;
 		
 		int stepNumber = getSequencer().getCycle();
@@ -269,6 +329,13 @@
 		return decoratorName;
 	}
 
+	/**
+	 * accessor for the CSV logger
+	 * @return
+	 */
+	public CSVLogger getLogger() {
+		return logger;
+	}
 
 	/**
 	 * @return The base directory for all log files for this simulation & decorator
@@ -317,7 +384,7 @@
 	/**
 	 * Create and write the parameters for this simulation
 	 */
-	private void writeRunParameters() 
+	protected void writeRunParameters() 
 	{
 		if (decorator == null) {
 			return;
@@ -344,9 +411,17 @@
 				if (CommonPackage.eINSTANCE.getDublinCore().equals(feature.getEContainingClass())) {
 					continue;
 				}
-				
 				header.add(feature.getName());
-				values.add(((EObject) decorator).eGet(feature).toString());
+				Object target = ((EObject) decorator).eGet(feature);
+				if(target!=null) {
+					String nextValue = target.toString().replace(",","_"); // make sure we do nto write commas in the csvLog
+					values.add(nextValue);
+				} else {
+					values.add(NOT_SET);
+				}
+				
+				
+				
 			}
 
 			fwp.writeLine(header);
diff --git a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileSimulationLogger.java b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileSimulationLogger.java
index 47ea64b..672538e 100644
--- a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileSimulationLogger.java
+++ b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/logger/DelimetedFileSimulationLogger.java
@@ -16,6 +16,10 @@
 import java.util.Arrays;
 import java.util.List;
 
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphPackage;
 import org.eclipse.stem.core.model.Decorator;
 import org.eclipse.stem.core.model.IntegrationDecorator;
 import org.eclipse.stem.core.scenario.Scenario;
@@ -60,6 +64,8 @@
 	 */
 	private final List<DelimetedFileDecoratorLogger> decoratorLoggers = new ArrayList<DelimetedFileDecoratorLogger>();
 	
+	
+	
 	/**
 	 * @param logger
 	 * @param simulation
@@ -75,6 +81,10 @@
 		}
 	}
 	
+
+	
+	
+	
 	/**
 	 * @return The underlying model for this simulation logger
 	 */
@@ -134,6 +144,14 @@
 	{
 		for (DelimetedFileDecoratorLogger logger : decoratorLoggers) {
 			logger.start();
+
+			if (logger.getLogger().isLogRunParameters()) {
+				logger.writeRunParameters();
+			}
+			
+			if (logger.getLogger().isLogInitialState()) {
+				logger.log();
+			}
 		}
 	}
 	
@@ -153,6 +171,33 @@
 	 */
 	public void log(SimulationEvent event)
 	{
+		
+//		// if this is an Evolving Disease model we need to clone any new children
+//	    if((EvolvingDiseaseModel.newChildrenToLog != null)&&(EvolvingDiseaseModel.newChildrenToLog.size() > 0)){
+//	    	
+//	    	EvolvingDiseaseModel evolvingDecorator = null;
+//	    	DelimetedFileDecoratorLogger parentLogger = null;
+//			for (DelimetedFileDecoratorLogger logger : decoratorLoggers) {
+//				IntegrationDecorator decorator = logger.decorator;
+//				if(decorator instanceof EvolvingDiseaseModel) {
+//					parentLogger = logger;
+//					evolvingDecorator = (EvolvingDiseaseModel)decorator;
+//					break;
+//				}
+//			}
+//			
+//			synchronized(this) {
+//				// New loggers for new clones from EvolvingDiseaseModel.newChildrenToLog
+//				if(EvolvingDiseaseModel.newChildrenToLog.size() > 0) {
+//					for(EvolvingDiseaseModel decorator:EvolvingDiseaseModel.newChildrenToLog) {
+//						this.addChildDecoratorLogger(parentLogger, (IntegrationDecorator)decorator);
+//					}
+//					EvolvingDiseaseModel.newChildrenToLog.clear();
+//				}
+//			}
+//	    }// if EVOLVING then prepare to log children
+		
+		
 		for (DelimetedFileDecoratorLogger logger : decoratorLoggers) {
 			if (event.getSimulationState().equals(SimulationState.PAUSED)) {
 				logger.flush();
@@ -173,6 +218,24 @@
 			decoratorLoggers.add(new DelimetedFileDecoratorLogger(this, decorator));
 		}
 	}
+	
+	/**
+	 * SPLUNGE 1
+	 * This method is called only for evolving disease models when a new logger is created for a new child disease
+	 * @param decorator
+	 */
+	protected void addChildDecoratorLogger(IntegrationDecorator decorator) {
+//		for (DelimetedFileDecoratorLogger logger : decoratorLoggers) {
+//			if (logger.decorator == parent) {
+//				
+//			}
+//		}
+		// TODO JHK: the true flag prevents child loggers from logging summaries (which causes a recursion error and should not be logged anyway).
+		DelimetedFileDecoratorLogger childLogger = new DelimetedFileDecoratorLogger(this, decorator, true);
+		decoratorLoggers.add(childLogger);
+//		childLogger.start();
+	}
+	
 
 	/**
 	 * Checks if the specified decorator is explicitly excluded by class name
@@ -193,6 +256,31 @@
 	{
 		List<IntegrationDecorator> decorators = new ArrayList<IntegrationDecorator>();
 		
+		simulation.getScenario().getCanonicalGraph().eAdapters().add(new AdapterImpl() {
+
+			@Override
+			public void notifyChanged(Notification msg) {
+				
+				super.notifyChanged(msg);
+				int featureId = msg.getFeatureID(Graph.class);
+				
+				if (featureId == GraphPackage.GRAPH__DECORATORS) {
+					if (msg.getNewValue() instanceof IntegrationDecorator) {
+						addChildDecoratorLogger((IntegrationDecorator)msg.getNewValue());
+						//System.out.println(msg);
+					}
+					
+					
+				}
+				
+				//addChildDecoratorLogger(parentLogger, (IntegrationDecorator)decorator);
+			}
+
+			
+			
+		});
+		
+		
 		for (Decorator decorator : simulation.getScenario().getCanonicalGraph().getDecorators()) {
 			if(decorator instanceof IntegrationDecorator 
 					&& !isExcludedDecorator(decorator)
diff --git a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java
index 41281c4..9a7eed3 100644
--- a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java
+++ b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java
@@ -17,7 +17,6 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
-import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -247,15 +246,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((CSVLogger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_CSVLogger_type") :
-			getString("_UI_CSVLogger_type") + " " + label;
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.loggers/META-INF/MANIFEST.MF b/core/org.eclipse.stem.loggers/META-INF/MANIFEST.MF
index b61b835..72000f2 100644
--- a/core/org.eclipse.stem.loggers/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.stem.loggers/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.emf.ecore.edit,
  org.eclipse.stem.core;visibility:=reexport,
- org.eclipse.stem.jobs,
+ org.eclipse.stem.jobs;visibility:=reexport,
  org.eclipse.core.resources
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.stem.loggers,
diff --git a/core/org.eclipse.stem.loggers/models/SimulationLogger.genmodel b/core/org.eclipse.stem.loggers/models/SimulationLogger.genmodel
index ac68b1c..310fa3b 100644
--- a/core/org.eclipse.stem.loggers/models/SimulationLogger.genmodel
+++ b/core/org.eclipse.stem.loggers/models/SimulationLogger.genmodel
@@ -7,7 +7,7 @@
     editPluginClass="org.eclipse.stem.loggers.provider.SimulationLoggerEditPlugin"
     editorPluginClass="org.eclipse.stem.loggers.presentation.SimulationLoggerEditorPlugin"
     testSuiteClass="org.eclipse.stem.loggers.tests.SimulationLoggerAllTests" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="5.0" editPluginID="org.eclipse.stem.loggers" editorPluginID="org.eclipse.stem.loggers"
+    complianceLevel="5.0" editPluginID="org.eclipse.stem.ui.loggers" editorPluginID="org.eclipse.stem.ui.loggers"
     runtimeVersion="2.6" language="" usedGenPackages="../../org.eclipse.stem.core/model/core.genmodel#//common ../../org.eclipse.stem.core/model/core.genmodel#//graph ../../org.eclipse.stem.core/model/core.genmodel#//model ../../org.eclipse.stem.core/model/core.genmodel#//modifier ../../org.eclipse.stem.core/model/core.genmodel#//scenario ../../org.eclipse.stem.core/model/core.genmodel#//sequencer ../../org.eclipse.stem.core/model/core.genmodel#//solver ../../org.eclipse.stem.core/model/core.genmodel#//logger platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"
     runtimePlatform="RCP">
   <foreignModel>SimulationLogger.ecore</foreignModel>
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java
index 920c75c..0e6379e 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java
@@ -20,11 +20,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.IdentifierProperty#getIdentifier <em>Identifier</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.IdentifierProperty#getProperty <em>Property</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.loggers.SimulationLoggerPackage#getIdentifierProperty()
  * @model
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java
index aaba40f..ab02307 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java
@@ -308,6 +308,8 @@
 	 * Returns the '<em><b>LOGGER EVENTS</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 LOGGER_EVENTS get(String literal) {
@@ -324,6 +326,8 @@
 	 * Returns the '<em><b>LOGGER EVENTS</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 LOGGER_EVENTS getByName(String name) {
@@ -340,6 +344,8 @@
 	 * Returns the '<em><b>LOGGER EVENTS</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 LOGGER_EVENTS get(int value) {
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java
index 43fb08d..c0205e6 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java
@@ -22,12 +22,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.SimulationLogger#isEnabled <em>Enabled</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.SimulationLogger#getStepMod <em>Step Mod</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.SimulationLogger#getStartStep <em>Start Step</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.loggers.SimulationLoggerPackage#getSimulationLogger()
  * @model abstract="true"
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java
index 45fd326..6227a07 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java
@@ -23,10 +23,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.SynchronousDecoratorPropertyLogger#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.loggers.SimulationLoggerPackage#getSynchronousDecoratorPropertyLogger()
  * @model abstract="true"
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java
index 8b4f31b..350c13c 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java
@@ -23,11 +23,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.impl.IdentifierPropertyImpl#getIdentifier <em>Identifier</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.impl.IdentifierPropertyImpl#getProperty <em>Property</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java
index d9d79e7..2b31175 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java
@@ -19,8 +19,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Event</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java
index e82eb5d..3071bc9 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java
@@ -45,7 +45,7 @@
 	 */
 	public static SimulationLoggerFactory init() {
 		try {
-			SimulationLoggerFactory theSimulationLoggerFactory = (SimulationLoggerFactory)EPackage.Registry.INSTANCE.getEFactory("http://org/eclipse/stem/loggers/"); 
+			SimulationLoggerFactory theSimulationLoggerFactory = (SimulationLoggerFactory)EPackage.Registry.INSTANCE.getEFactory(SimulationLoggerPackage.eNS_URI);
 			if (theSimulationLoggerFactory != null) {
 				return theSimulationLoggerFactory;
 			}
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java
index 8450e60..9dd1593 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java
@@ -26,12 +26,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.impl.SimulationLoggerImpl#isEnabled <em>Enabled</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.impl.SimulationLoggerImpl#getStepMod <em>Step Mod</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.impl.SimulationLoggerImpl#getStartStep <em>Start Step</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java
index 031fc7b..2c76697 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.impl.SynchronousDecoratorPropertyLoggerImpl#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java
index d0e0f7e..ab380e1 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java
@@ -127,6 +127,12 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SimulationLoggerPackage.ISIMULATION_LISTENER: {
+				ISimulationListener iSimulationListener = (ISimulationListener)theEObject;
+				T1 result = caseISimulationListener(iSimulationListener);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case SimulationLoggerPackage.ASYNCHRONOUS_LOGGER: {
 				AsynchronousLogger asynchronousLogger = (AsynchronousLogger)theEObject;
 				T1 result = caseAsynchronousLogger(asynchronousLogger);
diff --git a/core/org.eclipse.stem.solvers.fd/src/org/eclipse/stem/solvers/fd/impl/FiniteDifferenceImpl.java b/core/org.eclipse.stem.solvers.fd/src/org/eclipse/stem/solvers/fd/impl/FiniteDifferenceImpl.java
index 19991be..9dbc887 100644
--- a/core/org.eclipse.stem.solvers.fd/src/org/eclipse/stem/solvers/fd/impl/FiniteDifferenceImpl.java
+++ b/core/org.eclipse.stem.solvers.fd/src/org/eclipse/stem/solvers/fd/impl/FiniteDifferenceImpl.java
@@ -1,5 +1,7 @@
 package org.eclipse.stem.solvers.fd.impl;

 

+import java.util.ArrayList;

+

 /*******************************************************************************

  * Copyright (c) 2009 IBM Corporation and others.

  * All rights reserved. This program and the accompanying materials

@@ -12,6 +14,7 @@
  *******************************************************************************/

 

 import java.util.Iterator;

+import java.util.List;

 

 import org.eclipse.core.runtime.IStatus;

 import org.eclipse.emf.common.notify.Notification;

@@ -93,6 +96,7 @@
 	@Override

 	public boolean step(STEMTime time, long timeDelta, int cycle) throws SolverException {

 

+		long t1 = System.currentTimeMillis();

 		Activator act = org.eclipse.stem.ui.Activator.getDefault();

 		if (act != null) {

 			final IPreferenceStore preferenceStore = act.getPreferenceStore();

@@ -103,8 +107,11 @@
 

 		partitioner.setNumProcesses(num_threads);

 

+		

+		List<Decorator> decoratorsToIterate = new ArrayList<Decorator>(getCanonicalGraph().getDecorators());

+		

 		// Find triggers and make sure they are invoked

-		for (Decorator decorator : this.getCanonicalGraph().getDecorators()) {

+		for (Decorator decorator : decoratorsToIterate) {

 			if (decorator instanceof Trigger || decorator instanceof TriggerList || decorator instanceof TransformationDecorator) {

 				decorator.updateLabels(time, timeDelta, cycle);

 			}

@@ -153,7 +160,10 @@
 		} // If not initialized

 

 		iterativeStep(time, timeDelta, cycle);

-

+		

+		//long t2 = System.currentTimeMillis();

+		//System.err.println("==> Step["+cycle+"] CPU Time: "+ (t2-t1));

+		

 		return true;

 	}

 

diff --git a/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/ApacheCommonsMathODESolverImpl.java b/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/ApacheCommonsMathODESolverImpl.java
index ae9c00d..6f988e1 100644
--- a/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/ApacheCommonsMathODESolverImpl.java
+++ b/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/ApacheCommonsMathODESolverImpl.java
@@ -14,6 +14,7 @@
 
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 
 import org.apache.commons.math3.ode.FirstOrderDifferentialEquations;
 import org.apache.commons.math3.ode.FirstOrderIntegrator;
@@ -86,9 +87,9 @@
 			}
 				
 			partitioner.setNumProcesses(num_threads);
-			
+			List<Decorator> decoratorsToIterate = new ArrayList<Decorator>(getCanonicalGraph().getDecorators());
 			// Find triggers and make sure they are invoked
-			for(Decorator decorator:this.getCanonicalGraph().getDecorators()) {
+			for(Decorator decorator:decoratorsToIterate) {
 				if(decorator instanceof Trigger || decorator instanceof TransformationDecorator) {
 					decorator.updateLabels(time, timeDelta, cycle);
 				}
diff --git a/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/RungeKuttaImpl.java b/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/RungeKuttaImpl.java
index 231857f..1461caa 100644
--- a/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/RungeKuttaImpl.java
+++ b/core/org.eclipse.stem.solvers.rk/src/org/eclipse/stem/solvers/rk/impl/RungeKuttaImpl.java
@@ -14,6 +14,7 @@
 import java.util.ArrayList;

 import java.util.HashMap;

 import java.util.Iterator;

+import java.util.List;

 import java.util.Map;

 import java.util.concurrent.BrokenBarrierException;

 import java.util.concurrent.CyclicBarrier;

@@ -202,7 +203,8 @@
 		updateDoneBarrier = new CyclicBarrier(num_threads);

 		

 		// Find triggers and any transformation decorator and make sure they are invoked

-		for(Decorator decorator:this.getCanonicalGraph().getDecorators()) {

+		List<Decorator> decoratorsToIterate = new ArrayList<Decorator>(getCanonicalGraph().getDecorators());

+		for(Decorator decorator:decoratorsToIterate) {

 			if(decorator instanceof Trigger || decorator instanceof TransformationDecorator) {

 				decorator.updateLabels(time, timeDelta, cycle);

 			}

diff --git a/core/org.eclipse.stem.solvers.stochastic/plugin.xml b/core/org.eclipse.stem.solvers.stochastic/plugin.xml
index 95b4896..3ec186b 100644
--- a/core/org.eclipse.stem.solvers.stochastic/plugin.xml
+++ b/core/org.eclipse.stem.solvers.stochastic/plugin.xml
@@ -29,4 +29,11 @@
             creator="%dc_standard_stochastic_creator">
       </dublin_core>
    </extension>
+   
+     <extension point="org.eclipse.emf.ecore.generated_package">
+      <package
+            uri="http:///org/eclipse/stem/solvers/stochastic"
+            class="org.eclipse.stem.solvers.stochastic.StochasticPackage"
+            genModel="model/stochastic.genmodel"/>
+   </extension>
 </plugin>
diff --git a/core/org.eclipse.stem.solvers.stochastic/src/org/eclipse/stem/solvers/stochastic/impl/StandardStochasticImpl.java b/core/org.eclipse.stem.solvers.stochastic/src/org/eclipse/stem/solvers/stochastic/impl/StandardStochasticImpl.java
index 79797d3..b797054 100644
--- a/core/org.eclipse.stem.solvers.stochastic/src/org/eclipse/stem/solvers/stochastic/impl/StandardStochasticImpl.java
+++ b/core/org.eclipse.stem.solvers.stochastic/src/org/eclipse/stem/solvers/stochastic/impl/StandardStochasticImpl.java
@@ -2,8 +2,10 @@
  */
 package org.eclipse.stem.solvers.stochastic.impl;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.BasicEList;
@@ -110,6 +112,15 @@
 		partitioner.setNumProcesses(1);
 
 		
+		List<Decorator> decoratorsToIterate = new ArrayList<Decorator>(getCanonicalGraph().getDecorators());
+		// Find Transformation decorators and call update
+		for (Decorator decorator : decoratorsToIterate) {
+			// THIS MUST HAPPEN BEFORE WE RESET THE INCIDENCE
+			if (decorator instanceof TransformationDecorator) {
+				decorator.updateLabels(time, timeDelta, cycle);
+			}
+		}
+		
 		// First initialize the Y and temp label values from the current
 		// label values.
 
@@ -139,9 +150,10 @@
 			}
 		}
 				
+		
 		// Find triggers and make sure they are invoked
-		for (Decorator decorator : this.getCanonicalGraph().getDecorators()) {
-			if (decorator instanceof Trigger || decorator instanceof TriggerList || decorator instanceof TransformationDecorator) {
+		for (Decorator decorator : getCanonicalGraph().getDecorators()) {
+			if (decorator instanceof Trigger || decorator instanceof TriggerList ) {
 				decorator.updateLabels(time, timeDelta, cycle);
 			}
 		}
@@ -247,10 +259,14 @@
 										}
 									}
 									// Ok disease models are done. Subtract from the population model label the sum of all deaths
-									iLabCurrentValue.eSetDouble(StandardPackage.eINSTANCE.getStandardPopulationModelLabelValue_Count().getFeatureID(), 
-											iLabCurrentValue.eGetDouble(StandardPackage.eINSTANCE.getStandardPopulationModelLabelValue_Count().getFeatureID())-sum);
-									iLabCurrentValue.eSetDouble(StandardPackage.eINSTANCE.getStandardPopulationModelLabelValue_Deaths().getFeatureID(), 
-											sum);
+									
+									if(iLab instanceof StandardPopulationModelLabel) {
+										iLabCurrentValue.eSetDouble(StandardPackage.eINSTANCE.getStandardPopulationModelLabelValue_Count().getFeatureID(), 
+												iLabCurrentValue.eGetDouble(StandardPackage.eINSTANCE.getStandardPopulationModelLabelValue_Count().getFeatureID())-sum);
+										iLabCurrentValue.eSetDouble(StandardPackage.eINSTANCE.getStandardPopulationModelLabelValue_Deaths().getFeatureID(), 
+												sum);
+									}// if this is a population model
+									
 									
 								} else {
 									// We are doing disease deaths
@@ -477,6 +493,8 @@
 			}
 		}
 		
+		
+		
 		return true;
 	}
 	
diff --git a/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF b/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF
index 4c6f3de..855745b 100644
--- a/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF
@@ -8,13 +8,16 @@
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
- org.eclipse.stem.loggers,
- org.eclipse.stem.core,
+ org.eclipse.stem.loggers;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.stem.core;visibility:=reexport,
  org.eclipse.stem.ui,
  org.eclipse.core.resources,
- org.eclipse.core.expressions, 
+ org.eclipse.core.expressions,
  org.eclipse.emf.ecore;visibility:=reexport,
- org.eclipse.emf.ecore.edit
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.stem.loggers.presentation,
diff --git a/core/org.eclipse.stem.ui.loggers/plugin.properties b/core/org.eclipse.stem.ui.loggers/plugin.properties
index 509a09c..17a7773 100644
--- a/core/org.eclipse.stem.ui.loggers/plugin.properties
+++ b/core/org.eclipse.stem.ui.loggers/plugin.properties
@@ -20,6 +20,8 @@
 _UI_Logging = Logging
 
 
+_UI_LoggerEditor_label = Logger Editor
+
 _UI_LoggerWizard_label = Logger
 _UI_LoggerWizard_description = Create a new Logger
 _UI_CreateChild_text = {0}
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java
index 02a1d53..0dd269b 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java
@@ -92,6 +92,7 @@
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.stem.core.STEMXMIResourceFactoryImpl;
 import org.eclipse.stem.core.common.provider.CommonItemProviderAdapterFactory;
 import org.eclipse.stem.core.graph.provider.GraphItemProviderAdapterFactory;
 import org.eclipse.stem.core.logger.provider.LoggerItemProviderAdapterFactory;
@@ -592,7 +593,7 @@
 	 * This sets up the editing domain for the model editor.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	protected void initializeEditingDomain() {
 		// Create an adapter factory that yields item providers.
@@ -643,6 +644,13 @@
 		// Create the editing domain with a special command stack.
 		//
 		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+		editingDomain.getResourceSet().getResourceFactoryRegistry()
+		.getExtensionToFactoryMap().put("*",
+				STEMXMIResourceFactoryImpl.INSTANCE);
+
+		editingDomain.getResourceSet().getResourceFactoryRegistry()
+				.getProtocolToFactoryMap().put("platform",
+						STEMXMIResourceFactoryImpl.INSTANCE);
 	}
 
 	/**
@@ -908,7 +916,7 @@
 	 * This is the method used by the framework to install your own controls.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public void createPages() {
@@ -942,7 +950,8 @@
 				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
 
 				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
-				selectionViewer.setInput(editingDomain.getResourceSet());
+				//selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setInput(editingDomain.getResourceSet().getResources().get(0));
 				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
 				viewerPane.setTitle(editingDomain.getResourceSet());
 
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java
index f5fd556..f1eb69a 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java
@@ -17,14 +17,8 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
-import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.core.logger.provider.LoggerItemProvider;
@@ -38,13 +32,7 @@
  * @generated
  */
 public class SimulationLoggerItemProvider
-	extends LoggerItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends LoggerItemProvider {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -161,15 +149,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((SimulationLogger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_SimulationLogger_type") :
-			getString("_UI_SimulationLogger_type") + " " + label;
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java
index 177bf28..1ae205c 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java
@@ -16,14 +16,8 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.loggers.SimulationLoggerPackage;
@@ -36,13 +30,7 @@
  * @generated
  */
 public class SynchronousDecoratorPropertyLoggerItemProvider
-	extends SimulationLoggerItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends SimulationLoggerItemProvider {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -102,15 +90,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((SynchronousDecoratorPropertyLogger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_SynchronousDecoratorPropertyLogger_type") :
-			getString("_UI_SynchronousDecoratorPropertyLogger_type") + " " + label;
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java
index b1fa0f2..de5f505 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java
@@ -18,6 +18,7 @@
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.ui.action.LoadResourceAction;
 import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.stem.loggers.provider.SimulationLoggerEditPlugin;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 import org.eclipse.jface.action.GroupMarker;
diff --git a/core/org.eclipse.stem.ui/plugin.xml b/core/org.eclipse.stem.ui/plugin.xml
index 722f9a0..6f8314d 100644
--- a/core/org.eclipse.stem.ui/plugin.xml
+++ b/core/org.eclipse.stem.ui/plugin.xml
@@ -18,6 +18,7 @@
         point="org.eclipse.core.runtime.products">
      <product
            application="org.eclipse.stem.ui.CoreEditorAdvisorApplication"
+           description="SpatioTemporal Epidemiological Modeler"
            name="STEM">
         <property
               name="preferenceCustomization"
diff --git a/core/org.eclipse.stem.ui/src/org/eclipse/stem/core/common/presentation/CoreEditorAdvisor.java b/core/org.eclipse.stem.ui/src/org/eclipse/stem/core/common/presentation/CoreEditorAdvisor.java
index 6f135b9..91dae28 100644
--- a/core/org.eclipse.stem.ui/src/org/eclipse/stem/core/common/presentation/CoreEditorAdvisor.java
+++ b/core/org.eclipse.stem.ui/src/org/eclipse/stem/core/common/presentation/CoreEditorAdvisor.java
@@ -123,11 +123,14 @@
 
 	
 	/**
+	 * replace deprecated method
 	 * @see org.eclipse.ui.application.WorkbenchAdvisor#preStartup()
+	 * @generated NOT
 	 */
 	@Override
 	public void preStartup() {
-		WorkbenchAdapterBuilder.registerAdapters();
+		// new
+		org.eclipse.ui.ide.IDE.registerAdapters();
 	}
 
 	public void postStartup() {
diff --git a/features/org.eclipse.stem.models.epidemiology.feature/feature.xml b/features/org.eclipse.stem.models.epidemiology.feature/feature.xml
index a154b9f..b0ada0b 100644
--- a/features/org.eclipse.stem.models.epidemiology.feature/feature.xml
+++ b/features/org.eclipse.stem.models.epidemiology.feature/feature.xml
@@ -204,4 +204,11 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.stem.diseasemodels.evolving"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/.classpath b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/.classpath
new file mode 100644
index 0000000..22f3064
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/.classpath
@@ -0,0 +1,7 @@
+<?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 kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/.project b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/.project
new file mode 100644
index 0000000..08f307a
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.stem.diseasemodels.evolving.crossspecies</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.stem.model.builder.MetamodelBuilder</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.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.stem.model.common.ModelProjectNature</nature>
+	</natures>
+</projectDescription>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/META-INF/MANIFEST.MF b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ba969fd
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/META-INF/MANIFEST.MF
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.stem.diseasemodels.evolving.crossspecies;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .,bin/
+Bundle-Activator: org.eclipse.stem.evolvingcrossspeciesmodel.provider.EvolvingCrossSpeciesModelEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.stem.evolvingcrossspeciesmodel,
+ org.eclipse.stem.evolvingcrossspeciesmodel.impl,
+ org.eclipse.stem.evolvingcrossspeciesmodel.presentation,
+ org.eclipse.stem.evolvingcrossspeciesmodel.provider,
+ org.eclipse.stem.evolvingcrossspeciesmodel.util
+Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.stem.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.ecore.editor;visibility:=reexport,
+ org.eclipse.stem.core;visibility:=reexport,
+ org.eclipse.stem.diseasemodels;visibility:=reexport,
+ org.eclipse.core.runtime,
+ org.eclipse.stem.diseasemodels.evolving;visibility:=reexport,
+ org.eclipse.stem.ui.diseasemodels;visibility:=reexport,
+ org.eclipse.core.resources;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.stem.diseasemodels.vector;bundle-version="3.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/build.properties b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/build.properties
new file mode 100644
index 0000000..10c87a0
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/build.properties
@@ -0,0 +1,14 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/obj16/EvolvingCrossSpeciesModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/obj16/EvolvingCrossSpeciesModel.gif
new file mode 100644
index 0000000..4e404e4
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/obj16/EvolvingCrossSpeciesModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/obj16/EvolvingCrossSpeciesModelModelFile.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/obj16/EvolvingCrossSpeciesModelModelFile.gif
new file mode 100644
index 0000000..102f65e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/obj16/EvolvingCrossSpeciesModelModelFile.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/wizban/NewEvolvingCrossSpeciesModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/wizban/NewEvolvingCrossSpeciesModel.gif
new file mode 100644
index 0000000..568874a
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/icons/full/wizban/NewEvolvingCrossSpeciesModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/.evolvingcrossspeciesmodel.vmm b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/.evolvingcrossspeciesmodel.vmm
new file mode 100644
index 0000000..034c9a5
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/.evolvingcrossspeciesmodel.vmm
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eclipse.stem.model.vmm:CanvasPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:org.eclipse.stem.model.vmm="http:///org/eclipse/stem/model/vmm.ecore" metamodel="evolvingcrossspeciesmodel.metamodel#/">
+  <modelElements model="evolvingcrossspeciesmodel.metamodel#//@models.0">
+    <compartmentElements x="5" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.0/@compartments.0"/>
+    <compartmentElements x="99" y="262" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.0"/>
+    <compartmentElements x="215" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.1"/>
+    <compartmentElements x="320" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.2"/>
+    <compartmentElements x="390" y="265" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.2/@compartments.0"/>
+    <compartmentElements x="540" y="254" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.3/@compartments.0"/>
+    <compartmentElements x="261" y="280" width="80" height="60" compartment="evolvingcrossspeciesmodel.metamodel#//@compartmentGroups.0/@compartments.0"/>
+    <compartmentElements x="467" y="7" width="94" height="82" compartment="evolvingcrossspeciesmodel.metamodel#//@compartmentGroups.0/@compartments.1"/>
+    <transitionElements source="#//@modelElements.0/@compartmentElements.4" target="#//@modelElements.0/@compartmentElements.5"
+        transition="evolvingcrossspeciesmodel.metamodel#//@models.0/@transitions.0"/>
+    <transitionElements source="#//@modelElements.0/@compartmentElements.5" target="#//@modelElements.0/@compartmentElements.1"
+        transition="evolvingcrossspeciesmodel.metamodel#//@models.0/@transitions.1"/>
+    <transitionElements source="#//@modelElements.0/@compartmentElements.1" target="#//@modelElements.0/@compartmentElements.6"
+        transition="evolvingcrossspeciesmodel.metamodel#//@models.0/@transitions.2"/>
+    <transitionElements source="#//@modelElements.0/@compartmentElements.6" target="#//@modelElements.0/@compartmentElements.4"
+        transition="evolvingcrossspeciesmodel.metamodel#//@models.0/@transitions.3"/>
+  </modelElements>
+</org.eclipse.stem.model.vmm:CanvasPackage>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.ecore b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.ecore
new file mode 100644
index 0000000..942ac43
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.ecore
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="evolvingcrossspeciesmodel" nsURI="http:///org/eclipse/stem/evolvingcrossspeciesmodel/evolvingcrossspeciesmodel.ecore"
+    nsPrefix="org.eclipse.stem.evolvingcrossspeciesmodel">
+  <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+    <details key="version" value="1.0"/>
+  </eAnnotations>
+  <eAnnotations source="http:///org/eclipse/stem/modelgen/metamodel">
+    <details key="uri" value="platform:/resource/.stemgenerator/model/evolvingcrossspeciesmodel.metamodel"/>
+  </eAnnotations>
+  <eAnnotations source="http:///org/eclipse/stem/modelgen/metamodel">
+    <details key="uri" value="platform:/resource/org.eclipse.stem.evolvingcrossspeciesmodel/model/evolvingcrossspeciesmodel.metamodel"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingCrossSpeciesModelLabel" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//StandardDiseaseModelLabel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingCrossSpeciesModelLabelValue"
+      eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//SIRLabelValue">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="e" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="seff" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingCrossSpeciesModel" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels.evolving/model/evolving.ecore#//EvolvingSIRDiseaseModel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/label">
+      <details key="*" value="EvolvingCrossSpeciesModelLabel"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/labelvalue">
+      <details key="*" value="EvolvingCrossSpeciesModelLabelValue"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/adapters"/>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="otherToOtherTransmissionRate"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Other To Other Transmission Rate"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="otherRecoveryRate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.1">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Other Recovery Rate"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="otherToHostTransmissionRate"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Other To Host Transmission Rate"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="temperatureFactor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="20.0">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Temperature Factor"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="otherPopulationIdentifier"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" defaultValueLiteral="avian">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Other Population Identifier"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="otherImmunityLossRate"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.001">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Other Immunity Loss Rate"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="incubationRate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="1.0">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Incubation Rate"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.genmodel b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.genmodel
new file mode 100644
index 0000000..f47fd3a
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.genmodel
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.stem.evolvingcrossspeciesmodel/src"
+    editDirectory="/org.eclipse.stem.evolvingcrossspeciesmodel/src" editorDirectory="/org.eclipse.stem.evolvingcrossspeciesmodel/src"
+    modelPluginID="org.eclipse.stem.evolvingcrossspeciesmodel" templateDirectory="platform:/plugin/org.eclipse.stem.model.codegen/templates"
+    dynamicTemplates="true" forceOverwrite="true" modelName="EvolvingCrossSpeciesModel"
+    importerID="http:///org/eclipse/stem/modelgen/1.0" suppressNotification="true"
+    complianceLevel="6.0" publicConstructors="true" editPluginID="org.eclipse.stem.evolvingcrossspeciesmodel"
+    editorPluginID="org.eclipse.stem.evolvingcrossspeciesmodel" usedGenPackages="platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//common platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//experiment platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//graph platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//model platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//modifier platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//predicate platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//scenario platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//sequencer platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//trigger platform:/plugin/org.eclipse.stem.diseasemodels/model/diseasemodels.genmodel#//diseasepredicates platform:/plugin/org.eclipse.stem.diseasemodels.evolving/model/evolving.genmodel#//evolving platform:/plugin/org.eclipse.stem.diseasemodels/model/diseasemodels.genmodel#//standard platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//logger platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//solver platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
+  <templatePluginVariables>STEM_CODEGEN=org.eclipse.stem.model.codegen</templatePluginVariables>
+  <templatePluginVariables>STEM_METAMODEL=org.eclipse.stem.model</templatePluginVariables>
+  <genPackages prefix="EvolvingCrossSpeciesModel" basePackage="org.eclipse.stem" disposableProviderFactory="true"
+      ecorePackage="evolvingcrossspeciesmodel.ecore#/">
+    <genClasses image="false" ecoreClass="evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModelLabel"/>
+    <genClasses image="false" ecoreClass="evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModelLabelValue">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModelLabelValue/e"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModelLabelValue/seff"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel/otherToOtherTransmissionRate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel/otherRecoveryRate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel/otherToHostTransmissionRate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel/temperatureFactor"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel/otherPopulationIdentifier"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel/otherImmunityLossRate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel/incubationRate"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.metamodel b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.metamodel
new file mode 100644
index 0000000..d38905c
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/model/evolvingcrossspeciesmodel.metamodel
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eclipse.stem.model:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.stem.model="http:///org/eclipse/stem/model/metamodel.ecore"
+    packagePrefix="org.eclipse.stem" name="EvolvingCrossSpeciesModel">
+  <models name="EvolvingCrossSpeciesModel" class="evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModel"
+      parentModel="platform:/plugin/org.eclipse.stem.diseasemodels.evolving/model/evolving.metamodel#//@models.1"
+      compartments="#//@compartmentGroups.0">
+    <parameters name="otherToOtherTransmissionRate" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="0.0" displayName="Other To Other Transmission Rate" unit=""
+        helpMessage="" invalidMessage="" missingMessage=""/>
+    <parameters name="otherRecoveryRate" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="0.1" displayName="Other Recovery Rate" unit="" helpMessage=""
+        invalidMessage="" missingMessage=""/>
+    <parameters name="otherToHostTransmissionRate" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="0.0" displayName="Other To Host Transmission Rate" unit="" helpMessage=""
+        invalidMessage="" missingMessage=""/>
+    <parameters name="temperatureFactor" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="20.0" displayName="Temperature Factor" unit="" helpMessage=""
+        invalidMessage="" missingMessage=""/>
+    <parameters name="otherPopulationIdentifier" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValue="avian" displayName="Other Population Identifier" unit="" helpMessage=""
+        invalidMessage="" missingMessage=""/>
+    <parameters name="otherImmunityLossRate" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="0.001" displayName="Other Immunity Loss Rate" unit="" helpMessage=""
+        invalidMessage="" missingMessage=""/>
+    <parameters name="incubationRate" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="1.0" displayName="Incubation Rate" unit="" helpMessage="" invalidMessage=""
+        missingMessage=""/>
+    <transitions source="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.2/@compartments.0"
+        target="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.3/@compartments.0"
+        expression="delta recoveryRate*I;"/>
+    <transitions source="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.3/@compartments.0"
+        target="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.0"
+        expression="delta immunityLossRate*R;"/>
+    <transitions source="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.0"
+        target="#//@compartmentGroups.0/@compartments.0" expression="delta transmissionRate*S*effective(i);"/>
+    <transitions source="#//@compartmentGroups.0/@compartments.0" target="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.2/@compartments.0"
+        expression="delta incubationRate*E;"/>
+  </models>
+  <compartmentGroups name="EvolvingCrossSpeciesModel" class="evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModelLabel"
+      valueClass="evolvingcrossspeciesmodel.ecore#//EvolvingCrossSpeciesModelLabelValue"
+      parentGroup="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.3">
+    <compartments name="e" dataType="http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    <compartments name="seff" dataType="http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </compartmentGroups>
+</org.eclipse.stem.model:Package>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/plugin.properties b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/plugin.properties
new file mode 100644
index 0000000..a556bd2
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/plugin.properties
@@ -0,0 +1,63 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+pluginName = EvolvingCrossSpeciesModel Model
+providerName = www.example.org
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+_UI_PropertyDescriptor_description = The {0} of the {1}
+_UI_EvolvingCrossSpeciesModelLabel_type = Label
+_UI_EvolvingCrossSpeciesModelLabelValue_type = Label Value
+_UI_EvolvingCrossSpeciesModel_type = Evolving Cross Species Model
+_UI_Unknown_type = Object
+_UI_Unknown_datatype= Value
+_UI_EvolvingCrossSpeciesModel_otherToOtherTransmissionRate_feature = Other To Other Transmission Rate
+_UI_EvolvingCrossSpeciesModel_otherRecoveryRate_feature = Other Recovery Rate
+_UI_EvolvingCrossSpeciesModel_otherToHostTransmissionRate_feature = Other To Host Transmission Rate
+_UI_EvolvingCrossSpeciesModel_temperatureFactor_feature = Temperature Factor
+_UI_EvolvingCrossSpeciesModel_otherPopulationIdentifier_feature = Other Population Identifier
+_UI_Unknown_feature = Unspecified
+_UI_EvolvingCrossSpeciesModelEditor_menu = &EvolvingCrossSpeciesModel Editor
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+_UI_OpenEditorError_label = Open Editor
+_UI_Wizard_category = Example EMF Model Creation Wizards
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+_UI_EvolvingCrossSpeciesModelModelWizard_label = EvolvingCrossSpeciesModel Model
+_UI_EvolvingCrossSpeciesModelModelWizard_description = Create a new EvolvingCrossSpeciesModel model
+_UI_EvolvingCrossSpeciesModelEditor_label = EvolvingCrossSpeciesModel Model Editor
+_UI_EvolvingCrossSpeciesModelEditorFilenameDefaultBase = My
+_UI_EvolvingCrossSpeciesModelEditorFilenameExtensions = evolvingcrossspeciesmodel
+_UI_Wizard_label = New
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+_UI_EvolvingCrossSpeciesModel_otherImmunityLossRate_feature = Other Immunity Loss Rate
+_UI_EvolvingCrossSpeciesModelLabelValue_e_feature = E
+_UI_EvolvingCrossSpeciesModel_incubationRate_feature = Incubation Rate
+_UI_EvolvingCrossSpeciesModelLabelValue_seff_feature = Seff
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/plugin.xml b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/plugin.xml
new file mode 100644
index 0000000..90f18f7
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/plugin.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id$
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http:///org/eclipse/stem/evolvingcrossspeciesmodel/evolvingcrossspeciesmodel.ecore"
+            class="org.eclipse.stem.evolvingcrossspeciesmodel.provider.EvolvingCrossSpeciesModelItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <package
+            uri="http:///org/eclipse/stem/evolvingcrossspeciesmodel/evolvingcrossspeciesmodel.ecore"
+            class="org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage"/>
+   </extension>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="org.eclipse.emf.ecore.Wizard.category.ID"
+            name="%_UI_Wizard_category"/>
+      <wizard
+            id="org.eclipse.stem.evolvingcrossspeciesmodel.presentation.EvolvingCrossSpeciesModelModelWizardID"
+            name="%_UI_EvolvingCrossSpeciesModelModelWizard_label"
+            class="org.eclipse.stem.evolvingcrossspeciesmodel.presentation.EvolvingCrossSpeciesModelModelWizard"
+            category="org.eclipse.emf.ecore.Wizard.category.ID"
+            icon="icons/full/obj16/EvolvingCrossSpeciesModelModelFile.gif">
+         <description>%_UI_EvolvingCrossSpeciesModelModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="org.eclipse.stem.evolvingcrossspeciesmodel.presentation.EvolvingCrossSpeciesModelEditorID"
+            name="%_UI_EvolvingCrossSpeciesModelEditor_label"
+            icon="icons/full/obj16/EvolvingCrossSpeciesModelModelFile.gif"
+            extensions="evolvingcrossspeciesmodel"
+            class="org.eclipse.stem.evolvingcrossspeciesmodel.presentation.EvolvingCrossSpeciesModelEditor"
+            contributorClass="org.eclipse.stem.evolvingcrossspeciesmodel.presentation.EvolvingCrossSpeciesModelActionBarContributor">
+      </editor>
+   </extension>
+
+	<extension point="org.eclipse.stem.diseasemodels.diseasemodel">
+		<classdef class="org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl"></classdef>
+		<dublin_core
+			creator=""
+			description=""
+			identifier=""
+			source=""
+			title="Evolving Cross Species Model"
+			license=""
+			publisher="">
+		</dublin_core>
+	</extension>
+
+
+  <extension
+        point="org.eclipse.ui.startup">        
+     <startup
+           class="org.eclipse.stem.evolvingcrossspeciesmodel.presentation.EvolvingCrossSpeciesModelPropertyEditorAdapterFactory">
+     </startup>
+     <startup
+           class="org.eclipse.stem.evolvingcrossspeciesmodel.presentation.EvolvingCrossSpeciesModelRelativeValueProviderAdapterFactory">
+     </startup>     
+  </extension>
+
+
+</plugin>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModel.java
new file mode 100644
index 0000000..5584e5d
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModel.java
@@ -0,0 +1,240 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Evolving Cross Species Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToOtherTransmissionRate <em>Other To Other Transmission Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherRecoveryRate <em>Other Recovery Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToHostTransmissionRate <em>Other To Host Transmission Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getTemperatureFactor <em>Temperature Factor</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherPopulationIdentifier <em>Other Population Identifier</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherImmunityLossRate <em>Other Immunity Loss Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getIncubationRate <em>Incubation Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/model/label *='EvolvingCrossSpeciesModelLabel'"
+ *        annotation="http:///org/eclipse/stem/modelgen/model/labelvalue *='EvolvingCrossSpeciesModelLabelValue'"
+ *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingCrossSpeciesModel extends EvolvingSIRDiseaseModel {
+	/**
+	 * Returns the value of the '<em><b>Other To Other Transmission Rate</b></em>' attribute.
+	 * The default value is <code>"0.0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Other To Other Transmission Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other To Other Transmission Rate</em>' attribute.
+	 * @see #setOtherToOtherTransmissionRate(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel_OtherToOtherTransmissionRate()
+	 * @model default="0.0"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Other To Other Transmission Rate'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getOtherToOtherTransmissionRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToOtherTransmissionRate <em>Other To Other Transmission Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other To Other Transmission Rate</em>' attribute.
+	 * @see #getOtherToOtherTransmissionRate()
+	 * @generated
+	 */
+	void setOtherToOtherTransmissionRate(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Other Recovery Rate</b></em>' attribute.
+	 * The default value is <code>"0.1"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Other Recovery Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other Recovery Rate</em>' attribute.
+	 * @see #setOtherRecoveryRate(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel_OtherRecoveryRate()
+	 * @model default="0.1"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Other Recovery Rate'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getOtherRecoveryRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherRecoveryRate <em>Other Recovery Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other Recovery Rate</em>' attribute.
+	 * @see #getOtherRecoveryRate()
+	 * @generated
+	 */
+	void setOtherRecoveryRate(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Other To Host Transmission Rate</b></em>' attribute.
+	 * The default value is <code>"0.0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Other To Host Transmission Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other To Host Transmission Rate</em>' attribute.
+	 * @see #setOtherToHostTransmissionRate(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel_OtherToHostTransmissionRate()
+	 * @model default="0.0"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Other To Host Transmission Rate'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getOtherToHostTransmissionRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToHostTransmissionRate <em>Other To Host Transmission Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other To Host Transmission Rate</em>' attribute.
+	 * @see #getOtherToHostTransmissionRate()
+	 * @generated
+	 */
+	void setOtherToHostTransmissionRate(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Temperature Factor</b></em>' attribute.
+	 * The default value is <code>"20.0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Temperature Factor</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Temperature Factor</em>' attribute.
+	 * @see #setTemperatureFactor(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel_TemperatureFactor()
+	 * @model default="20.0"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Temperature Factor'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getTemperatureFactor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getTemperatureFactor <em>Temperature Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Temperature Factor</em>' attribute.
+	 * @see #getTemperatureFactor()
+	 * @generated
+	 */
+	void setTemperatureFactor(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Other Population Identifier</b></em>' attribute.
+	 * The default value is <code>"avian"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Other Population Identifier</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other Population Identifier</em>' attribute.
+	 * @see #setOtherPopulationIdentifier(String)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel_OtherPopulationIdentifier()
+	 * @model default="avian"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Other Population Identifier'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	String getOtherPopulationIdentifier();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherPopulationIdentifier <em>Other Population Identifier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other Population Identifier</em>' attribute.
+	 * @see #getOtherPopulationIdentifier()
+	 * @generated
+	 */
+	void setOtherPopulationIdentifier(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Other Immunity Loss Rate</b></em>' attribute.
+	 * The default value is <code>"0.001"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Other Immunity Loss Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other Immunity Loss Rate</em>' attribute.
+	 * @see #setOtherImmunityLossRate(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel_OtherImmunityLossRate()
+	 * @model default="0.001"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Other Immunity Loss Rate'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getOtherImmunityLossRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherImmunityLossRate <em>Other Immunity Loss Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other Immunity Loss Rate</em>' attribute.
+	 * @see #getOtherImmunityLossRate()
+	 * @generated
+	 */
+	void setOtherImmunityLossRate(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Incubation Rate</b></em>' attribute.
+	 * The default value is <code>"1.0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Incubation Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Incubation Rate</em>' attribute.
+	 * @see #setIncubationRate(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModel_IncubationRate()
+	 * @model default="1.0"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Incubation Rate'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getIncubationRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getIncubationRate <em>Incubation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Incubation Rate</em>' attribute.
+	 * @see #getIncubationRate()
+	 * @generated
+	 */
+	void setIncubationRate(double value);
+
+
+} // EvolvingCrossSpeciesModel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelFactory.java
new file mode 100644
index 0000000..4009129
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelFactory.java
@@ -0,0 +1,64 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel;
+
+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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage
+ * @generated
+ */
+public interface EvolvingCrossSpeciesModelFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EvolvingCrossSpeciesModelFactory eINSTANCE = org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Label</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Label</em>'.
+	 * @generated
+	 */
+	EvolvingCrossSpeciesModelLabel createEvolvingCrossSpeciesModelLabel();
+
+	/**
+	 * Returns a new object of class '<em>Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Label Value</em>'.
+	 * @generated
+	 */
+	EvolvingCrossSpeciesModelLabelValue createEvolvingCrossSpeciesModelLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>Evolving Cross Species Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Evolving Cross Species Model</em>'.
+	 * @generated
+	 */
+	EvolvingCrossSpeciesModel createEvolvingCrossSpeciesModel();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	EvolvingCrossSpeciesModelPackage getEvolvingCrossSpeciesModelPackage();
+
+} //EvolvingCrossSpeciesModelFactory
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelLabel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelLabel.java
new file mode 100644
index 0000000..ef094cf
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelLabel.java
@@ -0,0 +1,23 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel;
+
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Label</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModelLabel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingCrossSpeciesModelLabel extends StandardDiseaseModelLabel {
+
+} // EvolvingCrossSpeciesModelLabel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelLabelValue.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelLabelValue.java
new file mode 100644
index 0000000..981d50b
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelLabelValue.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel;
+
+import org.eclipse.stem.diseasemodels.standard.SIRLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getE <em>E</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getSeff <em>Seff</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModelLabelValue()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingCrossSpeciesModelLabelValue extends SIRLabelValue {
+
+	/**
+	 * Returns the value of the '<em><b>E</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>E</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>E</em>' attribute.
+	 * @see #setE(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModelLabelValue_E()
+	 * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getE();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getE <em>E</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>E</em>' attribute.
+	 * @see #getE()
+	 * @generated
+	 */
+	void setE(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Seff</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Seff</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Seff</em>' attribute.
+	 * @see #setSeff(double)
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#getEvolvingCrossSpeciesModelLabelValue_Seff()
+	 * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getSeff();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getSeff <em>Seff</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Seff</em>' attribute.
+	 * @see #getSeff()
+	 * @generated
+	 */
+	void setSeff(double value);
+
+} // EvolvingCrossSpeciesModelLabelValue
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelPackage.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelPackage.java
new file mode 100644
index 0000000..65be4f8
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/EvolvingCrossSpeciesModelPackage.java
@@ -0,0 +1,983 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+
+/**
+ * <!-- 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 enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelFactory
+ * @model kind="package"
+ *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ *        annotation="http:///org/eclipse/stem/modelgen/metamodel uri='platform:/resource/.stemgenerator/model/evolvingcrossspeciesmodel.metamodel'"
+ * @generated
+ */
+public interface EvolvingCrossSpeciesModelPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "evolvingcrossspeciesmodel";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http:///org/eclipse/stem/evolvingcrossspeciesmodel/evolvingcrossspeciesmodel.ecore";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.stem.evolvingcrossspeciesmodel";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EvolvingCrossSpeciesModelPackage eINSTANCE = org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelImpl <em>Label</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelImpl
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelPackageImpl#getEvolvingCrossSpeciesModelLabel()
+	 * @generated
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__TYPE_URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__DUBLIN_CORE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+	/**
+	 * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__CURRENT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__CURRENT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Identifiable</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__IDENTIFIABLE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIABLE;
+
+	/**
+	 * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__NEXT_VALUE_VALID = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE_VALID;
+
+	/**
+	 * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__NEXT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Decorator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__DECORATOR = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DECORATOR;
+
+	/**
+	 * The feature id for the '<em><b>Node</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__NODE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NODE;
+
+	/**
+	 * The feature id for the '<em><b>Delta Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__DELTA_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DELTA_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Temp Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__TEMP_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TEMP_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Probe Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__PROBE_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__PROBE_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Error Scale</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__ERROR_SCALE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__ERROR_SCALE;
+
+	/**
+	 * The feature id for the '<em><b>Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__IDENTIFIER = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Population Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__POPULATION_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Population Model Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL__POPULATION_MODEL_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_MODEL_LABEL;
+
+	/**
+	 * The number of structural features of the '<em>Label</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_FEATURE_COUNT = StandardPackage.STANDARD_DISEASE_MODEL_LABEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelValueImpl <em>Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelValueImpl
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelPackageImpl#getEvolvingCrossSpeciesModelLabelValue()
+	 * @generated
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Arrivals</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__ARRIVALS = StandardPackage.SIR_LABEL_VALUE__ARRIVALS;
+
+	/**
+	 * The feature id for the '<em><b>Departures</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__DEPARTURES = StandardPackage.SIR_LABEL_VALUE__DEPARTURES;
+
+	/**
+	 * The feature id for the '<em><b>Population Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__POPULATION_COUNT = StandardPackage.SIR_LABEL_VALUE__POPULATION_COUNT;
+
+	/**
+	 * The feature id for the '<em><b>S</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__S = StandardPackage.SIR_LABEL_VALUE__S;
+
+	/**
+	 * The feature id for the '<em><b>Incidence</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__INCIDENCE = StandardPackage.SIR_LABEL_VALUE__INCIDENCE;
+
+	/**
+	 * The feature id for the '<em><b>Disease Deaths</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__DISEASE_DEATHS = StandardPackage.SIR_LABEL_VALUE__DISEASE_DEATHS;
+
+	/**
+	 * The feature id for the '<em><b>I</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__I = StandardPackage.SIR_LABEL_VALUE__I;
+
+	/**
+	 * The feature id for the '<em><b>R</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__R = StandardPackage.SIR_LABEL_VALUE__R;
+
+	/**
+	 * The feature id for the '<em><b>E</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E = StandardPackage.SIR_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Seff</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF = StandardPackage.SIR_LABEL_VALUE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE_FEATURE_COUNT = StandardPackage.SIR_LABEL_VALUE_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl <em>Evolving Cross Species Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelPackageImpl#getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL = 2;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__URI = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__TYPE_URI = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__DUBLIN_CORE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__LABELS_TO_UPDATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__LABELS_TO_UPDATE;
+
+	/**
+	 * The feature id for the '<em><b>Graph</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__GRAPH = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__GRAPH;
+
+	/**
+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__ENABLED = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__GRAPH_DECORATED = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__GRAPH_DECORATED;
+
+	/**
+	 * The feature id for the '<em><b>Progress</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__PROGRESS = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__PROGRESS;
+
+	/**
+	 * The feature id for the '<em><b>Add Stochastic Noise</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__ADD_STOCHASTIC_NOISE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__ADD_STOCHASTIC_NOISE;
+
+	/**
+	 * The feature id for the '<em><b>Random Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__RANDOM_SEED = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__RANDOM_SEED;
+
+	/**
+	 * The feature id for the '<em><b>Binomial Distribution</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__BINOMIAL_DISTRIBUTION = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__BINOMIAL_DISTRIBUTION;
+
+	/**
+	 * The feature id for the '<em><b>Population Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__POPULATION_IDENTIFIER = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__POPULATION_IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Time Period</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__TIME_PERIOD = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__TIME_PERIOD;
+
+	/**
+	 * The feature id for the '<em><b>Disease Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__DISEASE_NAME = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__DISEASE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Finite Difference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__FINITE_DIFFERENCE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__FINITE_DIFFERENCE;
+
+	/**
+	 * The feature id for the '<em><b>Frequency Dependent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__FREQUENCY_DEPENDENT = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__FREQUENCY_DEPENDENT;
+
+	/**
+	 * The feature id for the '<em><b>Reference Population Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__REFERENCE_POPULATION_DENSITY = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__REFERENCE_POPULATION_DENSITY;
+
+	/**
+	 * The feature id for the '<em><b>Road Network Infectious Proportion</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION;
+
+	/**
+	 * The feature id for the '<em><b>Characteristic Mixing Distance</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__CHARACTERISTIC_MIXING_DISTANCE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE;
+
+	/**
+	 * The feature id for the '<em><b>Transmission Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__TRANSMISSION_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__TRANSMISSION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Non Linearity Coefficient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__NON_LINEARITY_COEFFICIENT = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__NON_LINEARITY_COEFFICIENT;
+
+	/**
+	 * The feature id for the '<em><b>Recovery Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__RECOVERY_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__RECOVERY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Infectious Mortality Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__INFECTIOUS_MORTALITY_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__INFECTIOUS_MORTALITY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Parent Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__PARENT_DISEASE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__PARENT_DISEASE;
+
+	/**
+	 * The feature id for the '<em><b>Transformer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__TRANSFORMER = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__TRANSFORMER;
+
+	/**
+	 * The feature id for the '<em><b>Evolved At</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__EVOLVED_AT = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__EVOLVED_AT;
+
+	/**
+	 * The feature id for the '<em><b>Genome</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__GENOME = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__GENOME;
+
+	/**
+	 * The feature id for the '<em><b>Evolution Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__EVOLUTION_COUNT = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__EVOLUTION_COUNT;
+
+	/**
+	 * The feature id for the '<em><b>Case Mutation Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__CASE_MUTATION_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CASE_MUTATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Genome Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__GENOME_LENGTH = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__GENOME_LENGTH;
+
+	/**
+	 * The feature id for the '<em><b>Genetic Dist Nonlin Exponent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__GENETIC_DIST_NONLIN_EXPONENT = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT;
+
+	/**
+	 * The feature id for the '<em><b>Immunity Loss Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__IMMUNITY_LOSS_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Cross Immunity Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__CROSS_IMMUNITY_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Other To Other Transmission Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Other Recovery Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Other To Host Transmission Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Temperature Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Other Population Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Other Immunity Loss Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Incubation Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Evolving Cross Species Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_CROSS_SPECIES_MODEL_FEATURE_COUNT = EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 7;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel <em>Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Label</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel
+	 * @generated
+	 */
+	EClass getEvolvingCrossSpeciesModelLabel();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue <em>Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Label Value</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue
+	 * @generated
+	 */
+	EClass getEvolvingCrossSpeciesModelLabelValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getE <em>E</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>E</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getE()
+	 * @see #getEvolvingCrossSpeciesModelLabelValue()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModelLabelValue_E();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getSeff <em>Seff</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Seff</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue#getSeff()
+	 * @see #getEvolvingCrossSpeciesModelLabelValue()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModelLabelValue_Seff();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel <em>Evolving Cross Species Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Evolving Cross Species Model</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel
+	 * @generated
+	 */
+	EClass getEvolvingCrossSpeciesModel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToOtherTransmissionRate <em>Other To Other Transmission Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Other To Other Transmission Rate</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToOtherTransmissionRate()
+	 * @see #getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModel_OtherToOtherTransmissionRate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherRecoveryRate <em>Other Recovery Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Other Recovery Rate</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherRecoveryRate()
+	 * @see #getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModel_OtherRecoveryRate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToHostTransmissionRate <em>Other To Host Transmission Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Other To Host Transmission Rate</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherToHostTransmissionRate()
+	 * @see #getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModel_OtherToHostTransmissionRate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getTemperatureFactor <em>Temperature Factor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Temperature Factor</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getTemperatureFactor()
+	 * @see #getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModel_TemperatureFactor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherPopulationIdentifier <em>Other Population Identifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Other Population Identifier</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherPopulationIdentifier()
+	 * @see #getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModel_OtherPopulationIdentifier();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherImmunityLossRate <em>Other Immunity Loss Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Other Immunity Loss Rate</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getOtherImmunityLossRate()
+	 * @see #getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModel_OtherImmunityLossRate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getIncubationRate <em>Incubation Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Incubation Rate</em>'.
+	 * @see org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel#getIncubationRate()
+	 * @see #getEvolvingCrossSpeciesModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingCrossSpeciesModel_IncubationRate();
+
+	/**
+	 * 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
+	 */
+	EvolvingCrossSpeciesModelFactory getEvolvingCrossSpeciesModelFactory();
+
+	/**
+	 * <!-- 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 enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelImpl <em>Label</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelImpl
+		 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelPackageImpl#getEvolvingCrossSpeciesModelLabel()
+		 * @generated
+		 */
+		EClass EVOLVING_CROSS_SPECIES_MODEL_LABEL = eINSTANCE.getEvolvingCrossSpeciesModelLabel();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelValueImpl <em>Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelValueImpl
+		 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelPackageImpl#getEvolvingCrossSpeciesModelLabelValue()
+		 * @generated
+		 */
+		EClass EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE = eINSTANCE.getEvolvingCrossSpeciesModelLabelValue();
+
+		/**
+		 * The meta object literal for the '<em><b>E</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E = eINSTANCE.getEvolvingCrossSpeciesModelLabelValue_E();
+
+		/**
+		 * The meta object literal for the '<em><b>Seff</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF = eINSTANCE.getEvolvingCrossSpeciesModelLabelValue_Seff();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl <em>Evolving Cross Species Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl
+		 * @see org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelPackageImpl#getEvolvingCrossSpeciesModel()
+		 * @generated
+		 */
+		EClass EVOLVING_CROSS_SPECIES_MODEL = eINSTANCE.getEvolvingCrossSpeciesModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Other To Other Transmission Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE = eINSTANCE.getEvolvingCrossSpeciesModel_OtherToOtherTransmissionRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Other Recovery Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE = eINSTANCE.getEvolvingCrossSpeciesModel_OtherRecoveryRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Other To Host Transmission Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE = eINSTANCE.getEvolvingCrossSpeciesModel_OtherToHostTransmissionRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Temperature Factor</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR = eINSTANCE.getEvolvingCrossSpeciesModel_TemperatureFactor();
+
+		/**
+		 * The meta object literal for the '<em><b>Other Population Identifier</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER = eINSTANCE.getEvolvingCrossSpeciesModel_OtherPopulationIdentifier();
+
+		/**
+		 * The meta object literal for the '<em><b>Other Immunity Loss Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE = eINSTANCE.getEvolvingCrossSpeciesModel_OtherImmunityLossRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Incubation Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE = eINSTANCE.getEvolvingCrossSpeciesModel_IncubationRate();
+
+	}
+
+} //EvolvingCrossSpeciesModelPackage
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelExpressions.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelExpressions.java
new file mode 100644
index 0000000..f738cd7
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelExpressions.java
@@ -0,0 +1,20 @@
+package org.eclipse.stem.evolvingcrossspeciesmodel.impl;
+
+
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue;
+
+		/**
+		 * Generated expressions class for  EvolvingCrossSpeciesModel.
+		 * DO NOT EDIT DIRECTLY.  Use extended class and override methods for transitions as desired.
+		 * @generated NOT
+		 */
+		public class EvolvingCrossSpeciesModelExpressions {
+	public void calculate(double t, long timeDelta, STEMTime time, EvolvingCrossSpeciesModel model, EvolvingCrossSpeciesModelLabel label, EvolvingCrossSpeciesModelLabelValue labelValue, Node node, EvolvingCrossSpeciesModelLabelValue deltaValue) {
+		
+	}
+		
+} //
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelFactoryImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelFactoryImpl.java
new file mode 100644
index 0000000..717f471
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelFactoryImpl.java
@@ -0,0 +1,122 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.impl;
+
+import org.eclipse.emf.ecore.EClass;
+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;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelFactoryImpl extends EFactoryImpl implements EvolvingCrossSpeciesModelFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static EvolvingCrossSpeciesModelFactory init() {
+		try {
+			EvolvingCrossSpeciesModelFactory theEvolvingCrossSpeciesModelFactory = (EvolvingCrossSpeciesModelFactory)EPackage.Registry.INSTANCE.getEFactory(EvolvingCrossSpeciesModelPackage.eNS_URI);
+			if (theEvolvingCrossSpeciesModelFactory != null) {
+				return theEvolvingCrossSpeciesModelFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new EvolvingCrossSpeciesModelFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL: return createEvolvingCrossSpeciesModelLabel();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE: return createEvolvingCrossSpeciesModelLabelValue();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL: return createEvolvingCrossSpeciesModel();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelLabel createEvolvingCrossSpeciesModelLabel() {
+		EvolvingCrossSpeciesModelLabelImpl evolvingCrossSpeciesModelLabel = new EvolvingCrossSpeciesModelLabelImpl();
+		return evolvingCrossSpeciesModelLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelLabelValue createEvolvingCrossSpeciesModelLabelValue() {
+		EvolvingCrossSpeciesModelLabelValueImpl evolvingCrossSpeciesModelLabelValue = new EvolvingCrossSpeciesModelLabelValueImpl();
+		return evolvingCrossSpeciesModelLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModel createEvolvingCrossSpeciesModel() {
+		EvolvingCrossSpeciesModelImpl evolvingCrossSpeciesModel = new EvolvingCrossSpeciesModelImpl();
+		return evolvingCrossSpeciesModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelPackage getEvolvingCrossSpeciesModelPackage() {
+		return (EvolvingCrossSpeciesModelPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static EvolvingCrossSpeciesModelPackage getPackage() {
+		return EvolvingCrossSpeciesModelPackage.eINSTANCE;
+	}
+
+} //EvolvingCrossSpeciesModelFactoryImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelImpl.java
new file mode 100644
index 0000000..cf0de84
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelImpl.java
@@ -0,0 +1,1071 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.impl;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.ExchangePool;
+import org.eclipse.stem.core.graph.ExchangeType;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.scenario.ScenarioInitializationException;
+import org.eclipse.stem.definitions.functions.CTDLFunctions;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+import org.eclipse.stem.diseasemodels.vector.impl.Messages;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+import org.eclipse.stem.populationmodels.standard.PopulationModelLabel;
+import org.eclipse.stem.populationmodels.standard.impl.StandardPopulationModelLabelValueImpl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Evolving Cross Species Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl#getOtherToOtherTransmissionRate <em>Other To Other Transmission Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl#getOtherRecoveryRate <em>Other Recovery Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl#getOtherToHostTransmissionRate <em>Other To Host Transmission Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl#getTemperatureFactor <em>Temperature Factor</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl#getOtherPopulationIdentifier <em>Other Population Identifier</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl#getOtherImmunityLossRate <em>Other Immunity Loss Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelImpl#getIncubationRate <em>Incubation Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelImpl extends EvolvingSIRDiseaseModelImpl implements EvolvingCrossSpeciesModel {
+	/**
+	 * The default value of the '{@link #getOtherToOtherTransmissionRate() <em>Other To Other Transmission Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherToOtherTransmissionRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double OTHER_TO_OTHER_TRANSMISSION_RATE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getOtherToOtherTransmissionRate() <em>Other To Other Transmission Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherToOtherTransmissionRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double otherToOtherTransmissionRate = OTHER_TO_OTHER_TRANSMISSION_RATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOtherRecoveryRate() <em>Other Recovery Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherRecoveryRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double OTHER_RECOVERY_RATE_EDEFAULT = 0.1;
+	
+	/**
+	 * The cached value of the '{@link #getOtherRecoveryRate() <em>Other Recovery Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherRecoveryRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double otherRecoveryRate = OTHER_RECOVERY_RATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOtherToHostTransmissionRate() <em>Other To Host Transmission Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherToHostTransmissionRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double OTHER_TO_HOST_TRANSMISSION_RATE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getOtherToHostTransmissionRate() <em>Other To Host Transmission Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherToHostTransmissionRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double otherToHostTransmissionRate = OTHER_TO_HOST_TRANSMISSION_RATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTemperatureFactor() <em>Temperature Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTemperatureFactor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double TEMPERATURE_FACTOR_EDEFAULT = 20.0;
+
+	/**
+	 * The cached value of the '{@link #getTemperatureFactor() <em>Temperature Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTemperatureFactor()
+	 * @generated
+	 * @ordered
+	 */
+	protected double temperatureFactor = TEMPERATURE_FACTOR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOtherPopulationIdentifier() <em>Other Population Identifier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherPopulationIdentifier()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String OTHER_POPULATION_IDENTIFIER_EDEFAULT = "avian";
+
+	/**
+	 * The cached value of the '{@link #getOtherPopulationIdentifier() <em>Other Population Identifier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherPopulationIdentifier()
+	 * @generated
+	 * @ordered
+	 */
+	protected String otherPopulationIdentifier = OTHER_POPULATION_IDENTIFIER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOtherImmunityLossRate() <em>Other Immunity Loss Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherImmunityLossRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double OTHER_IMMUNITY_LOSS_RATE_EDEFAULT = 0.001;
+
+	/**
+	 * The cached value of the '{@link #getOtherImmunityLossRate() <em>Other Immunity Loss Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherImmunityLossRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double otherImmunityLossRate = OTHER_IMMUNITY_LOSS_RATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getIncubationRate() <em>Incubation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncubationRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double INCUBATION_RATE_EDEFAULT = 1.0;
+
+	/**
+	 * The cached value of the '{@link #getIncubationRate() <em>Incubation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncubationRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double incubationRate = INCUBATION_RATE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelImpl() {
+		super();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getOtherToOtherTransmissionRate() {
+		return otherToOtherTransmissionRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOtherToOtherTransmissionRate(double newOtherToOtherTransmissionRate) {
+		otherToOtherTransmissionRate = newOtherToOtherTransmissionRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getOtherRecoveryRate() {
+		return otherRecoveryRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOtherRecoveryRate(double newOtherRecoveryRate) {
+		otherRecoveryRate = newOtherRecoveryRate;
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getOtherImmunityLossRate() {
+		return otherImmunityLossRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOtherImmunityLossRate(double newOtherImmunityLossRate) {
+		otherImmunityLossRate = newOtherImmunityLossRate;
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getIncubationRate() {
+		return incubationRate;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIncubationRate(double newIncubationRate) {
+		incubationRate = newIncubationRate;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getOtherToHostTransmissionRate() {
+		return otherToHostTransmissionRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOtherToHostTransmissionRate(double newOtherToHostTransmissionRate) {
+		otherToHostTransmissionRate = newOtherToHostTransmissionRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getTemperatureFactor() {
+		return temperatureFactor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTemperatureFactor(double newTemperatureFactor) {
+		temperatureFactor = newTemperatureFactor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getOtherPopulationIdentifier() {
+		return otherPopulationIdentifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOtherPopulationIdentifier(String newOtherPopulationIdentifier) {
+		otherPopulationIdentifier = newOtherPopulationIdentifier;
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * In order to implement vector disease model (Other == Vector)
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String getVectorPopulationIdentifier() {
+		return otherPopulationIdentifier;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * In order to implement vector disease model (Other == Vector)
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void setVectorPopulationIdentifier(String newVectorPopulationIdentifier) {
+		otherPopulationIdentifier = newVectorPopulationIdentifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE:
+				return getOtherToOtherTransmissionRate();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE:
+				return getOtherRecoveryRate();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE:
+				return getOtherToHostTransmissionRate();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR:
+				return getTemperatureFactor();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER:
+				return getOtherPopulationIdentifier();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE:
+				return getOtherImmunityLossRate();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE:
+				return getIncubationRate();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE:
+				setOtherToOtherTransmissionRate((Double)newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE:
+				setOtherRecoveryRate((Double)newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE:
+				setOtherToHostTransmissionRate((Double)newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR:
+				setTemperatureFactor((Double)newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER:
+				setOtherPopulationIdentifier((String)newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE:
+				setOtherImmunityLossRate((Double)newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE:
+				setIncubationRate((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE:
+				setOtherToOtherTransmissionRate(OTHER_TO_OTHER_TRANSMISSION_RATE_EDEFAULT);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE:
+				setOtherRecoveryRate(OTHER_RECOVERY_RATE_EDEFAULT);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE:
+				setOtherToHostTransmissionRate(OTHER_TO_HOST_TRANSMISSION_RATE_EDEFAULT);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR:
+				setTemperatureFactor(TEMPERATURE_FACTOR_EDEFAULT);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER:
+				setOtherPopulationIdentifier(OTHER_POPULATION_IDENTIFIER_EDEFAULT);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE:
+				setOtherImmunityLossRate(OTHER_IMMUNITY_LOSS_RATE_EDEFAULT);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE:
+				setIncubationRate(INCUBATION_RATE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE:
+				return otherToOtherTransmissionRate != OTHER_TO_OTHER_TRANSMISSION_RATE_EDEFAULT;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE:
+				return otherRecoveryRate != OTHER_RECOVERY_RATE_EDEFAULT;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE:
+				return otherToHostTransmissionRate != OTHER_TO_HOST_TRANSMISSION_RATE_EDEFAULT;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR:
+				return temperatureFactor != TEMPERATURE_FACTOR_EDEFAULT;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER:
+				return OTHER_POPULATION_IDENTIFIER_EDEFAULT == null ? otherPopulationIdentifier != null : !OTHER_POPULATION_IDENTIFIER_EDEFAULT.equals(otherPopulationIdentifier);
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE:
+				return otherImmunityLossRate != OTHER_IMMUNITY_LOSS_RATE_EDEFAULT;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE:
+				return incubationRate != INCUBATION_RATE_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(" (otherToOtherTransmissionRate: ");
+		result.append(otherToOtherTransmissionRate);
+		result.append(", otherRecoveryRate: ");
+		result.append(otherRecoveryRate);
+		result.append(", otherToHostTransmissionRate: ");
+		result.append(otherToHostTransmissionRate);
+		result.append(", temperatureFactor: ");
+		result.append(temperatureFactor);
+		result.append(", otherPopulationIdentifier: ");
+		result.append(otherPopulationIdentifier);
+		result.append(", otherImmunityLossRate: ");
+		result.append(otherImmunityLossRate);
+		result.append(", incubationRate: ");
+		result.append(incubationRate);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void applyExternalDeltas(STEMTime currentTime, double continuousTime, long timeDelta, EList<DynamicLabel> labels) {
+		// TODO Auto-generated stub. Implement applyExternalDeltas(...) for EvolvingCrossSpeciesModelImpl.
+		super.applyExternalDeltas(currentTime, continuousTime, timeDelta, labels);
+	} // applyExternalDeltas
+
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doStochasticProcess(IntegrationLabel label, long timeDelta) {
+		// TODO Auto-generated stub. Implement doStochasticProcess(...) for EvolvingCrossSpeciesModelImpl.
+		super.doStochasticProcess(label, timeDelta);
+	} // doStochasticProcess
+
+	
+	
+	
+	/**
+	 * 
+	 * @param n
+	 * @param identifier
+	 * @param targetDiseaseName
+	 * @return
+	 * @generated NOT
+	 */
+	EvolvingCrossSpeciesModelLabel findDiseaseLabel(Node n, String identifier, String targetDiseaseName) {
+		
+		for(NodeLabel nl:n.getLabels()) {
+			if(nl instanceof EvolvingCrossSpeciesModelLabel && ((DiseaseModelLabel)nl).getPopulationModelLabel().getPopulationIdentifier().equals(identifier)) {
+				DiseaseModel disease = (DiseaseModel)(((DiseaseModelLabel)nl).getDecorator());
+				if(disease.getDiseaseName().equalsIgnoreCase(targetDiseaseName)) {
+					return (EvolvingCrossSpeciesModelLabel)nl;
+				}// if disease name matches
+			}// if evolving model and correct population
+		}// for all labels
+		return null;
+	}// findDiseaseLabel
+
+
+	
+	
+
+	/**
+	 * 
+	 * @param time
+	 * @param t
+	 * @param timeDelta
+	 * @param labels
+	 * @return
+	 * @generated NOT
+	 */
+	public void calculateDeltas(STEMTime time, double t, long timeDelta, EList<DynamicLabel> labels) {
+		 
+		for(int _i=0;_i<labels.size();++_i) {
+			EvolvingCrossSpeciesModelLabel diseaseLabel = (EvolvingCrossSpeciesModelLabel)labels.get(_i);
+			EvolvingCrossSpeciesModelLabelValue currentDiseaseState = (EvolvingCrossSpeciesModelLabelValue)diseaseLabel.getProbeValue();
+			EvolvingCrossSpeciesModelLabelValue deltaValue = (EvolvingCrossSpeciesModelLabelValue)diseaseLabel.getDeltaValue();
+			deltaValue.reset();
+			
+			double densityFactor = 1.0;
+			if(!this.frequencyDependent) {
+				double popDensity = currentDiseaseState.getPopulationCount()/CTDLFunctions.area(diseaseLabel.getNode());
+				densityFactor *= popDensity/this.referencePopulationDensity;
+			}
+			
+			
+			
+			
+			///////////////
+			// Label is PRIMARY e.g. avian vector
+			if(diseaseLabel.getPopulationModelLabel().getPopulationIdentifier().equals(this.getPopulationIdentifier())) {
+			
+				// PRIMARY  
+				double deltaS =  0.0, deltaE=0.0,  deltaI=0.0, deltaR=0.0;
+				double effectiveIPrimary = this.getNormalizedEffectiveInfectious(diseaseLabel.getNode(), diseaseLabel, currentDiseaseState.getI(), StandardPackage.Literals.SI_LABEL_VALUE__I, StandardPackage.Literals.STANDARD_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE, StandardPackage.Literals.STANDARD_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION);
+							
+				// get the cross susc matrix term
+				double effectiveSusceptible = getEffectiveSuscptible(currentDiseaseState, diseaseLabel, this.getPopulationIdentifier());
+				
+				///////////////
+				// PRIMARY  will be like AVIAN (or vector like) for now. We do not infect OTHER HOST =>AVIAN. Only PRIMARY => OTHER (below)
+				//
+				double StoE = (densityFactor*this.getTransmissionRate()*effectiveSusceptible*effectiveIPrimary);
+				double EtoI = this.getIncubationRate()*currentDiseaseState.getE();
+				double ItoR = this.getRecoveryRate()*currentDiseaseState.getI();
+				double RtoS = this.getImmunityLossRate()*currentDiseaseState.getR();
+				
+				
+				// S->E
+				Exchange seExchange = (Exchange)ExchangePool.POOL.get(); 
+				seExchange.setSource(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+				seExchange.setTarget(EvolvingCrossSpeciesModelPackage.eINSTANCE.getEvolvingCrossSpeciesModelLabelValue_E());
+				seExchange.setCount(StoE);
+				seExchange.getForIncidence().add(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_Incidence());
+				seExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(seExchange);
+				
+				// E->I
+				// Stochastic exchange for e -> i
+				Exchange eiExchange = (Exchange)ExchangePool.POOL.get();
+				eiExchange.setSource(EvolvingCrossSpeciesModelPackage.eINSTANCE.getEvolvingCrossSpeciesModelLabelValue_E());
+				eiExchange.setTarget(StandardPackage.eINSTANCE.getSILabelValue_I());
+				eiExchange.setCount(EtoI);
+				eiExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(eiExchange);
+
+				// I->R
+				Exchange irExchange = (Exchange)ExchangePool.POOL.get(); 
+				irExchange.setSource(StandardPackage.eINSTANCE.getSILabelValue_I());
+				irExchange.setTarget(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+				irExchange.setCount(ItoR);
+				irExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(irExchange);
+
+				// R->S
+				Exchange rsExchange = (Exchange)ExchangePool.POOL.get(); 
+				rsExchange.setSource(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+				rsExchange.setTarget(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+				rsExchange.setCount(RtoS);
+				rsExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(rsExchange);
+
+				
+				deltaS = -StoE+RtoS;
+				deltaE = StoE-EtoI;
+				deltaI = EtoI-ItoR;
+				deltaR = ItoR - RtoS;
+				
+				deltaValue.setS(deltaS);
+				deltaValue.setE(deltaE);
+				deltaValue.setI(deltaI);
+				deltaValue.setR(deltaR);
+				deltaValue.setIncidence(StoE);
+				
+			} else {
+				
+				///////////////////////////////////////////////////////////
+				// OTHER => Like the host/human can be infected by PRIMARY
+				//
+				double deltaS =  0.0, deltaE=0.0, deltaI=0.0, deltaR = 0.0;
+							
+				// get "the vector"
+				double effectiveIVector = 0.0;
+				EvolvingCrossSpeciesModelLabel vectorLabel = findDiseaseLabel(diseaseLabel.getNode(), this.getPopulationIdentifier(), this.getDiseaseName());
+				EvolvingCrossSpeciesModelLabelValue vectorLabelValue = null;
+				if(vectorLabel != null) {
+					vectorLabelValue = (EvolvingCrossSpeciesModelLabelValue)vectorLabel.getTempValue();
+					effectiveIVector = this.getNormalizedEffectiveInfectious(diseaseLabel.getNode(), vectorLabel, vectorLabelValue.getI(), StandardPackage.Literals.SI_LABEL_VALUE__I, StandardPackage.Literals.STANDARD_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE, StandardPackage.Literals.STANDARD_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION); 
+				}
+				
+				// like the human
+				double effectiveIOther = this.getNormalizedEffectiveInfectious(diseaseLabel.getNode(), diseaseLabel, currentDiseaseState.getI(), StandardPackage.Literals.SI_LABEL_VALUE__I, StandardPackage.Literals.STANDARD_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE, StandardPackage.Literals.STANDARD_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION);
+		
+				
+				// get the cross susc matrix term
+				double effectiveSusceptible = getEffectiveSuscptible(currentDiseaseState, diseaseLabel, diseaseLabel.getPopulationModelLabel().getPopulationIdentifier());
+				
+				// here we are OTHER and can be infect by PRIMARY
+				double StoE = (densityFactor*this.getOtherToOtherTransmissionRate()*effectiveSusceptible*effectiveIOther)
+								+
+							  (densityFactor*this.getOtherToHostTransmissionRate()*effectiveSusceptible*effectiveIVector);
+				
+				double EtoI = this.getIncubationRate()*currentDiseaseState.getE();
+				double ItoR = this.getOtherRecoveryRate()*currentDiseaseState.getI();
+				double RtoS = this.getOtherImmunityLossRate()*currentDiseaseState.getR();
+				
+				deltaS = -StoE+RtoS;
+				deltaE = StoE-EtoI;
+				deltaI = EtoI-ItoR;
+				deltaR = ItoR - RtoS;
+				
+				
+				// S->E
+				Exchange seExchange = (Exchange)ExchangePool.POOL.get(); 
+				seExchange.setSource(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+				seExchange.setTarget(EvolvingCrossSpeciesModelPackage.eINSTANCE.getEvolvingCrossSpeciesModelLabelValue_E());
+				seExchange.setCount(StoE);
+				seExchange.getForIncidence().add(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_Incidence());
+				seExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(seExchange);
+
+				// E->I
+				// Stochastic exchange for e -> i
+				Exchange eiExchange = (Exchange)ExchangePool.POOL.get();
+				eiExchange.setSource(EvolvingCrossSpeciesModelPackage.eINSTANCE.getEvolvingCrossSpeciesModelLabelValue_E());
+				eiExchange.setTarget(StandardPackage.eINSTANCE.getSILabelValue_I());
+				eiExchange.setCount(EtoI);
+				eiExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(eiExchange);
+				
+				// I->R
+				Exchange irExchange = (Exchange)ExchangePool.POOL.get(); 
+				irExchange.setSource(StandardPackage.eINSTANCE.getSILabelValue_I());
+				irExchange.setTarget(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+				irExchange.setCount(ItoR);
+				irExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(irExchange);
+				
+				// R->S
+				Exchange rsExchange = (Exchange)ExchangePool.POOL.get(); 
+				rsExchange.setSource(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+				rsExchange.setTarget(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+				rsExchange.setCount(RtoS);
+				rsExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+				deltaValue.getDepartures().add(rsExchange);
+
+					
+				deltaValue.setS(deltaS);
+				deltaValue.setE(deltaE);
+				deltaValue.setI(deltaI);
+				deltaValue.setR(deltaR);
+				deltaValue.setIncidence(StoE);
+				
+			}
+			
+			deltaValue.scale(((double) timeDelta / (double) getTimePeriod()));
+			computeAdditionalDeltasAndExchanges(diseaseLabel, time, t, timeDelta);
+		}
+		
+
+	} // calculateDeltas
+
+	
+	
+	
+	/**
+	 * 
+	 * @param currentSIR
+	 * @param diseaseLabel
+	 * @return
+	 */
+	public double getEffectiveSuscptible(EvolvingCrossSpeciesModelLabelValue currentSIR, EvolvingCrossSpeciesModelLabel diseaseLabel, String targetPopulationIdentifier) {
+		
+		////////////////////////////////////////////////////
+		// ******* EVOLVING DISEASE MODEL *************** //
+		//
+		//  Si* = Si   ∏_(j≠i) 〖[1-χji (Rj/N〗)] 
+		//
+		double effectiveSusceptible = currentSIR.getS();
+		double popCount = currentSIR.getS()+currentSIR.getE()+currentSIR.getI()+currentSIR.getR(); 
+		double crossProduct = 1.0;
+		if((crossImmunityRate>0.0)&&(effectiveSusceptible>1)) {
+			// NEED TO CORRECT SUSCEPTIBLES BASED ON CROSS STRAIN IMMUNITY //
+			Node thisNode = diseaseLabel.getNode();
+			EList<NodeLabel> allLabels = thisNode.getLabels();
+			for(NodeLabel nl:allLabels) {
+				if(nl instanceof EvolvingSIRDiseaseModelLabel) {
+					EvolvingSIRDiseaseModelLabel sirLabel = (EvolvingSIRDiseaseModelLabel) nl;
+					Decorator otherDisease = sirLabel.getDecorator();
+					
+					// need to check both the disease and the target population  
+					if( (otherDisease instanceof EvolvingSIRDiseaseModel)&&(sirLabel.getPopulationModelLabel().getPopulationIdentifier().equalsIgnoreCase(targetPopulationIdentifier)) ){
+						// should always be true
+						EvolvingSIRDiseaseModel otherSIRDiease = (EvolvingSIRDiseaseModel)otherDisease;
+						if(!otherSIRDiease.getDiseaseName().equals(this.getDiseaseName())) {
+							// ie NOT this DISEASE
+							EvolvingSIRDiseaseModelLabelValue otherValue = (EvolvingSIRDiseaseModelLabelValue)sirLabel.getCurrentValue();
+							
+							
+								double immuneTerm = otherValue.getR()/popCount;
+								
+								// the genetic distance is based on comparing the 2 genomes. Each letter gives a difference of 1
+								// the crossImmunityRate is the crossImmunity with 1 nt different
+								double geneticDistance = getGeneticDistance(otherSIRDiease);
+								
+								// for a center of mass distance model uncomment the following....
+								// double geneticDistance *= getCMdistance(otherSIR);
+								
+								if(geneticDistance >= 1 ) {
+									immuneTerm *= (crossImmunityRate/ geneticDistance);
+								}
+								
+								
+								crossProduct *= (1.0-immuneTerm);
+								// prevent round off error
+								if(crossProduct < 0) {
+									crossProduct = 0.0; // round off error
+								}
+							
+							
+						}
+					}
+				}
+			}
+		} 
+		effectiveSusceptible *= crossProduct;
+	    //System.out.println("S = "+currentSIR.getS()+" crossProduct = "+crossProduct+"  Seffective = "+effectiveSusceptible);
+		
+		
+		// ******* EVOLVING DISEASE MODEL *************** //
+		////////////////////////////////////////////////////
+		
+		return effectiveSusceptible;
+	}
+	
+	/**
+	 * 
+	 * @param genome
+	 * @return value between 1 and 2
+	 */
+	public double getHostTransmissionRate(boolean[] genome) {
+		double transRate = 0;
+		int len = genome.length;
+		for(int i = 0; i < len-1; i ++) {
+			if(!genome[i]) {
+				transRate = transRate + Math.pow(2.0,(double) i);
+			}
+		}
+		transRate = transRate/Math.pow(2.0,(double) (len-1)); // 0 =>1
+		//transRate ++;               // 1 =>2
+		 
+		return transRate;
+	}
+	
+	/**
+	 * 
+	 * @param genome
+	 * @return
+	 */
+	public double getCrossTransmissionRate(boolean[] genome) {
+		// use all bits for host transmission Cross strain will be constant
+//		double transRate = 0;
+//		for(int j = 4; j < 8; j ++) {
+//			int i = j-4;
+//			if(!genome[j]) {
+//				transRate = transRate + Math.pow(2.0,(double) i);
+//			}
+//		}
+//		transRate = transRate/16.0; // 0 =>1
+//		transRate ++;               // 1 =>2
+		double transRate = 1;
+		return transRate;
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public void calculateEvolvedInitialState() {
+		EvolvingSIRDiseaseModelImpl parentDiseaseModel = (EvolvingSIRDiseaseModelImpl)getParentDisease();
+		DiseaseModelLabel parentEvolutionSource = getEvolvedAt();
+		if (parentDiseaseModel == null && parentEvolutionSource == null) {
+			// The evolution wasn't initialized correctly.  
+			// This should be unreachable but who knows.
+			System.err.println("Trying to calculate label state from an improperly initialized evolved model.  Do something.");
+			return;	
+		} 
+		
+		Node currentNode = parentEvolutionSource.getNode();
+		URI evolutionLocation = currentNode.getURI();
+		
+		boolean[] genome = getGenome();
+		boolean[] parentGenome = parentDiseaseModel.getGenome();
+
+		// Update the genome
+		if(genome != null && genome.length > 1) {
+			double dMute = Math.random()*genome.length;
+			int iMute = (int)Math.round(dMute);
+			for(int i = 0; i < genome.length; i ++) {
+				genome[i] = parentGenome[i];
+				if(i==iMute) {
+					genome[i] = !genome[i];
+				}
+			}
+		}
+		
+		setGenome(genome);
+		double otherTransRate = getHostTransmissionRate(genome);// number from 0 -> 1
+		double factor = getOtherRecoveryRate()+getOtherImmunityLossRate();
+		double newTransRateOther = factor*(1.0+(otherTransRate/4));
+		System.out.println(" new transmission = "+newTransRateOther );
+		
+		setOtherToOtherTransmissionRate(newTransRateOther); // 1->2*factor
+		
+		// TEST CODE new human transmission rate
+		// double primateTransmisionRate = getOtherToOtherTransmissionRate();
+		// System.out.println("human transmission new =  "+primateTransmisionRate);
+		 
+		
+		// AVIAN transmission rate will be constant - it is the reservoir
+		// double avianTransmissionRate = getTransmissionRate();
+		// System.out.println("avian transmission rate fixed at "+avianTransmissionRate);	
+		
+
+		//setOtherToHostTransmissionRate(factor*2*getCrossTransmissionRate(genome));
+		
+		setOtherToHostTransmissionRate(factor*1.05);
+		
+		
+        // create the child labels
+		for (DynamicLabel dl : this.getLabelsToUpdate()) {
+			if (dl instanceof EvolvingCrossSpeciesModelLabel) {
+				double s = 0.0;
+				double e = 0.0;
+				double i = 0.0;
+				double r = 0.0;
+				double diseaseDeaths = 0.0;
+				
+				// this is the new label we need to set
+				EvolvingCrossSpeciesModelLabel childLabel = (EvolvingCrossSpeciesModelLabel)dl;
+				EvolvingCrossSpeciesModelLabelValue childLabelValues = (EvolvingCrossSpeciesModelLabelValue)childLabel.getCurrentValue();
+				// this is the new label we need to set
+				EvolvingCrossSpeciesModelLabel parentSIRlabel = (EvolvingCrossSpeciesModelLabel) parentEvolutionSource;
+				EvolvingCrossSpeciesModelLabelValue parentSIRLabelValues = (EvolvingCrossSpeciesModelLabelValue)parentSIRlabel.getCurrentValue();
+				double parentInfectious = parentSIRLabelValues.getI();
+				
+				//String parentPop = parentSIRlabel.getPopulationModelLabel().getPopulationIdentifier();
+				//StandardPopulationModelLabelValueImpl parentValue = (StandardPopulationModelLabelValueImpl)parentSIRlabel.getPopulationModelLabel().getCurrentValue();
+				
+				//String childPopulation = childLabel.getPopulationModelLabel().getPopulationIdentifier();
+				
+				StandardPopulationModelLabelValueImpl childValue = (StandardPopulationModelLabelValueImpl)childLabel.getPopulationModelLabel().getCurrentValue();
+				double popCount = childValue.getCount(); // population count of the actually identified type
+				s = popCount;
+				
+				// Do something interesting here to initialize disease state
+				if (childLabel.getNode().getURI().equals(evolutionLocation)) {
+					// This is where the evolution happened, so you probably need to set your
+					// infectious state differently
+					
+					if(parentEvolutionSource instanceof EvolvingCrossSpeciesModelLabel) {
+						// should be true
+						if((popCount > 1.0)&&(parentInfectious > 1.0)) {
+							// init the child diseases values. if the population is zero or i is zero this is the OTHER population so we do not initialize it.
+							e = 1.0;
+							s = s - 1.0;
+						} // else nothing. It's to be expected
+					}
+					
+				} else {
+					// This is everywhere else
+					// for now we are already set
+				} // if else
+				
+				childLabelValues.setS(s);
+				childLabelValues.setE(e);
+				childLabelValues.setI(i);
+				childLabelValues.setR(r);
+				childLabelValues.setDiseaseDeaths(diseaseDeaths);
+			}
+		}
+	}
+	
+	
+	
+
+
+	/**
+	 * Includes the Vector population in list of populations
+	 * @generated NOT
+	 */
+	@Override
+	public EList<String> getAllLabelIdentifiers() {
+		EList<String> identifiers = new BasicEList<String>();
+		
+		identifiers.add(getPopulationIdentifier());
+		identifiers.add(getOtherPopulationIdentifier());
+		
+		return identifiers;
+	}
+	
+	
+	/**
+	 * We need to override this method to return all population model labels for both humans and the vector
+	 * 
+	 * @param populationIdentifier
+	 *            the population being labeled
+	 * @param graph
+	 *            the graph to search
+	 * @return the PopulationLabel instances of the graph that match the
+	 *         identifier.
+	 * @generated NOT
+	 */
+	@Override
+	public EList<PopulationModelLabel> getPopulationModelLabels(
+			String populationIdentifier, Graph graph) throws ScenarioInitializationException {
+		final EList<PopulationModelLabel> retValue = new BasicEList<PopulationModelLabel>();
+
+		// Iterate through all of the population labels in the graph
+		EList<NodeLabel> labels = graph.getNodeLabelsByTypeURI(
+				PopulationModelLabel.URI_TYPE_DYNAMIC_POPULATION_LABEL);
+		
+		boolean foundPrimary = false, foundOther = false;
+		for (NodeLabel pl:labels) {
+			final PopulationModelLabel populationLabel = (PopulationModelLabel) pl;
+			// Is this label for the population we're looking for?
+			boolean keep = false;
+			if(populationLabel.getPopulationIdentifier().equals(populationIdentifier)) 
+				{keep=true;foundPrimary = true;}
+			else if(populationLabel.getPopulationIdentifier().equals(getVectorPopulationIdentifier())) 
+				{keep=true;foundOther = true;}
+				
+			if (keep) {
+				// Yes
+				// If there is a problem with the "node uri" of the population
+				// label then it would not have been associated with a node
+				// instance in the graph at this point. This is a problem for
+				// disease models that are trying to label the node (there isn't
+				// one!). So filter out those mistakes here.
+
+				// Does the population label have an associated node?
+				if (populationLabel.getNode() != null) {
+					// Yes
+					retValue.add(populationLabel);
+				} // if the population label has a node
+			} // if the population we're looking for
+		} // for each population label
+
+		// If we didn't find both humans and the vector, return an empty list.
+		// This will force a retry creating disease labels after all population model labels have
+		// had time to decorate the graph
+		if(!foundPrimary) 
+			throw new ScenarioInitializationException(NLS.bind(Messages.HOST_POP_MOD_LABEL_NOT_FOUND, new Object[] {this.getURI().toString(), this.getPopulationIdentifier()}), this, new Exception());
+		if(!foundOther)
+			throw new ScenarioInitializationException(NLS.bind(Messages.VECTOR_POP_MOD_LABEL_NOT_FOUND, new Object[] {this.getURI().toString(), this.getVectorPopulationIdentifier()}),this, new Exception());
+		
+		return retValue;
+	}
+
+	
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DiseaseModelLabel createDiseaseModelLabel(String populationIdentifier) {	
+
+		DiseaseModelLabel label = EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabel(); 
+		label.setTypeURI(DiseaseModelLabel.URI_TYPE_DYNAMIC_DISEASE_LABEL);
+
+		return label;
+	} // createDiseaseModelLabel
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DiseaseModelLabelValue createDiseaseModelLabelValue(String populationIdentifier) {	
+ 
+		return EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue(); 
+	}
+
+							
+
+} //EvolvingCrossSpeciesModelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelLabelImpl.java
new file mode 100644
index 0000000..7a6246f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelLabelImpl.java
@@ -0,0 +1,52 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelLabelImpl;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelLabelImpl extends StandardDiseaseModelLabelImpl implements EvolvingCrossSpeciesModelLabel {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelLabelImpl() {
+		super();
+		setCurrentValue(EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue());
+		setNextValue(EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue());
+		setTempValue(EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue());
+		setProbeValue(EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue());
+		setErrorScale(EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue());
+		setDeltaValue(EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue());		
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL_LABEL;
+	}
+
+
+							
+
+} //EvolvingCrossSpeciesModelLabelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelLabelValueImpl.java
new file mode 100644
index 0000000..8545177
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelLabelValueImpl.java
@@ -0,0 +1,476 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.diseasemodels.standard.impl.SIRLabelValueImpl;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelValueImpl#getE <em>E</em>}</li>
+ *   <li>{@link org.eclipse.stem.evolvingcrossspeciesmodel.impl.EvolvingCrossSpeciesModelLabelValueImpl#getSeff <em>Seff</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelLabelValueImpl extends SIRLabelValueImpl implements EvolvingCrossSpeciesModelLabelValue {
+	/**
+	 * The default value of the '{@link #getE() <em>E</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getE()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double E_EDEFAULT = 0.0;
+	/**
+	 * The cached value of the '{@link #getE() <em>E</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getE()
+	 * @generated
+	 * @ordered
+	 */
+	protected double e = E_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeff() <em>Seff</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeff()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double SEFF_EDEFAULT = 0.0;
+	/**
+	 * The cached value of the '{@link #getSeff() <em>Seff</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeff()
+	 * @generated
+	 * @ordered
+	 */
+	protected double seff = SEFF_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelLabelValueImpl() {
+		super();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE;
+	}
+
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getE() {
+		return e;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setE(double newE) {
+		e = newE;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getSeff() {
+		return seff;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeff(double newSeff) {
+		seff = newSeff;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E:
+				return getE();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF:
+				return getSeff();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E:
+				setE((Double)newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF:
+				setSeff((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E:
+				setE(E_EDEFAULT);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF:
+				setSeff(SEFF_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E:
+				return e != E_EDEFAULT;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF:
+				return seff != SEFF_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(" (e: ");
+		result.append(e);
+		result.append(", seff: ");
+		result.append(seff);
+		result.append(')');
+		return result.toString();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegrationLabelValue set(IntegrationLabelValue value) {
+		EvolvingCrossSpeciesModelLabelValue v = (EvolvingCrossSpeciesModelLabelValue)value;
+		super.set(v);
+
+		setE(v.getE());
+		setSeff(v.getSeff());
+
+		return this;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegrationLabelValue add(IntegrationLabelValue value) {
+		EvolvingCrossSpeciesModelLabelValue v = (EvolvingCrossSpeciesModelLabelValue)value;
+		super.add(v);
+
+		setE(getE() + v.getE());
+		setSeff(getSeff() + v.getSeff());
+
+		return this;	
+	}	
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegrationLabelValue add(double value) {
+		super.add(value);
+
+		setE((double)(getE() + value));
+		setSeff((double)(getSeff() + value));
+
+		return this;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override	
+	public IntegrationLabelValue sub(IntegrationLabelValue value) {
+		EvolvingCrossSpeciesModelLabelValue v = (EvolvingCrossSpeciesModelLabelValue)value;
+		super.sub(v);
+
+		setE(getE() - v.getE());
+		setSeff(getSeff() - v.getSeff());
+
+		return this;	
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegrationLabelValue divide(IntegrationLabelValue value) {
+		EvolvingCrossSpeciesModelLabelValue v = (EvolvingCrossSpeciesModelLabelValue)value;
+		super.divide(v);
+
+		setE(getE() / v.getE());
+		setSeff(getSeff() / v.getSeff());
+
+		return this;	
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegrationLabelValue scale(double scaleFactor) {
+		super.scale(scaleFactor);
+
+		setE((double)(getE() * scaleFactor));
+		setSeff((double)(getSeff() * scaleFactor));
+
+		return this;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegrationLabelValue abs() {
+		super.abs();
+
+		setE(Math.abs(getE()));
+		setSeff(Math.abs(getSeff()));
+		return this;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double max() {
+		double maxValue = super.max();
+
+		maxValue = Math.max(maxValue, getE());
+		maxValue = Math.max(maxValue, getSeff());
+		return maxValue;
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double computeDeltaAdjustment(IntegrationLabelValue value) {
+		EvolvingCrossSpeciesModelLabelValue v = (EvolvingCrossSpeciesModelLabelValue)value;
+		double factor = super.computeDeltaAdjustment(v);
+
+		if ((double)(getE() + v.getE()) < 0.0) {
+			factor = Math.min(factor, (double)(-v.getE() / getE()));
+		}
+		if ((double)(getSeff() + v.getSeff()) < 0.0) {
+			factor = Math.min(factor, (double)(-v.getSeff() / getSeff()));
+		}
+		return factor;
+	} // computeDeltaAdjustment
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */	
+	@Override
+	public void reset() {
+		super.reset();
+		
+		setE((double)0.0);
+		setSeff((double)0.0);
+	} // reset
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */	
+	@Override
+	public double getPopulationCount() {
+		double count = super.getPopulationCount();  
+	
+		count += (double)getE();
+		count += (double)getSeff();
+
+		return count;
+	} // getPopulationCount
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean avoidNegative(IntegrationLabelValue value) {
+		EvolvingCrossSpeciesModelLabelValue v = (EvolvingCrossSpeciesModelLabelValue)value;
+		boolean adjusted = super.avoidNegative(v);
+
+		if ((double)(getE() + v.getE()) < 0.0) {
+			adjusted = true;
+			setE(-v.getE());
+		}
+
+		if ((double)(getSeff() + v.getSeff()) < 0.0) {
+			adjusted = true;
+			setSeff(-v.getSeff());
+		}
+
+		return adjusted;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean sameValue(LabelValue value) {
+		EvolvingCrossSpeciesModelLabelValue v = (EvolvingCrossSpeciesModelLabelValue)value;
+		if (!super.sameValue(v)) {
+			return false;
+		}
+
+		if (getE() != v.getE()) {
+			return false;
+		}
+		if (getSeff() != v.getSeff()) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntegrationLabelValue copy() {
+		EvolvingCrossSpeciesModelLabelValue copy = EvolvingCrossSpeciesModelFactory.eINSTANCE.createEvolvingCrossSpeciesModelLabelValue();
+		copy.set(this);
+		return copy;
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */	
+	@Override
+	public void prepareCycle() {
+		super.prepareCycle();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double eGetDouble(int featureID) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E:
+				return getE();
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF:
+				return getSeff();
+		}
+
+		return super.eGetDouble(featureID);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSetDouble(int featureID, double newValue) {
+		switch (featureID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E:
+				setE(newValue);
+				return;
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF:
+				setSeff(newValue);
+				return;
+		}
+		
+		super.eSetDouble(featureID,newValue);
+	}
+							
+
+} //EvolvingCrossSpeciesModelLabelValueImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelPackageImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelPackageImpl.java
new file mode 100644
index 0000000..b80147b
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/impl/EvolvingCrossSpeciesModelPackageImpl.java
@@ -0,0 +1,562 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.DiseasepredicatesPackage;
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelPackageImpl extends EPackageImpl implements EvolvingCrossSpeciesModelPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingCrossSpeciesModelLabelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingCrossSpeciesModelLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingCrossSpeciesModelEClass = 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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private EvolvingCrossSpeciesModelPackageImpl() {
+		super(eNS_URI, EvolvingCrossSpeciesModelFactory.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 EvolvingCrossSpeciesModelPackage#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 EvolvingCrossSpeciesModelPackage init() {
+		if (isInited) return (EvolvingCrossSpeciesModelPackage)EPackage.Registry.INSTANCE.getEPackage(EvolvingCrossSpeciesModelPackage.eNS_URI);
+
+		// Obtain or create and register package
+		EvolvingCrossSpeciesModelPackageImpl theEvolvingCrossSpeciesModelPackage = (EvolvingCrossSpeciesModelPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof EvolvingCrossSpeciesModelPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new EvolvingCrossSpeciesModelPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		CommonPackage.eINSTANCE.eClass();
+		ExperimentPackage.eINSTANCE.eClass();
+		GraphPackage.eINSTANCE.eClass();
+		ModelPackage.eINSTANCE.eClass();
+		ModifierPackage.eINSTANCE.eClass();
+		PredicatePackage.eINSTANCE.eClass();
+		ScenarioPackage.eINSTANCE.eClass();
+		SequencerPackage.eINSTANCE.eClass();
+		TriggerPackage.eINSTANCE.eClass();
+		DiseasepredicatesPackage.eINSTANCE.eClass();
+		EvolvingPackage.eINSTANCE.eClass();
+		LoggerPackage.eINSTANCE.eClass();
+		SolverPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theEvolvingCrossSpeciesModelPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theEvolvingCrossSpeciesModelPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theEvolvingCrossSpeciesModelPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(EvolvingCrossSpeciesModelPackage.eNS_URI, theEvolvingCrossSpeciesModelPackage);
+		return theEvolvingCrossSpeciesModelPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingCrossSpeciesModelLabel() {
+		return evolvingCrossSpeciesModelLabelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingCrossSpeciesModelLabelValue() {
+		return evolvingCrossSpeciesModelLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModelLabelValue_E() {
+		return (EAttribute)evolvingCrossSpeciesModelLabelValueEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModelLabelValue_Seff() {
+		return (EAttribute)evolvingCrossSpeciesModelLabelValueEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingCrossSpeciesModel() {
+		return evolvingCrossSpeciesModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModel_OtherToOtherTransmissionRate() {
+		return (EAttribute)evolvingCrossSpeciesModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModel_OtherRecoveryRate() {
+		return (EAttribute)evolvingCrossSpeciesModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModel_OtherToHostTransmissionRate() {
+		return (EAttribute)evolvingCrossSpeciesModelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModel_TemperatureFactor() {
+		return (EAttribute)evolvingCrossSpeciesModelEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModel_OtherPopulationIdentifier() {
+		return (EAttribute)evolvingCrossSpeciesModelEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModel_OtherImmunityLossRate() {
+		return (EAttribute)evolvingCrossSpeciesModelEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingCrossSpeciesModel_IncubationRate() {
+		return (EAttribute)evolvingCrossSpeciesModelEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelFactory getEvolvingCrossSpeciesModelFactory() {
+		return (EvolvingCrossSpeciesModelFactory)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
+		evolvingCrossSpeciesModelLabelEClass = createEClass(EVOLVING_CROSS_SPECIES_MODEL_LABEL);
+
+		evolvingCrossSpeciesModelLabelValueEClass = createEClass(EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE);
+		createEAttribute(evolvingCrossSpeciesModelLabelValueEClass, EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E);
+		createEAttribute(evolvingCrossSpeciesModelLabelValueEClass, EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF);
+
+		evolvingCrossSpeciesModelEClass = createEClass(EVOLVING_CROSS_SPECIES_MODEL);
+		createEAttribute(evolvingCrossSpeciesModelEClass, EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE);
+		createEAttribute(evolvingCrossSpeciesModelEClass, EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE);
+		createEAttribute(evolvingCrossSpeciesModelEClass, EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE);
+		createEAttribute(evolvingCrossSpeciesModelEClass, EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR);
+		createEAttribute(evolvingCrossSpeciesModelEClass, EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER);
+		createEAttribute(evolvingCrossSpeciesModelEClass, EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE);
+		createEAttribute(evolvingCrossSpeciesModelEClass, EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE);
+	}
+
+	/**
+	 * <!-- 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
+		StandardPackage theStandardPackage = (StandardPackage)EPackage.Registry.INSTANCE.getEPackage(StandardPackage.eNS_URI);
+		EvolvingPackage theEvolvingPackage = (EvolvingPackage)EPackage.Registry.INSTANCE.getEPackage(EvolvingPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		evolvingCrossSpeciesModelLabelEClass.getESuperTypes().add(theStandardPackage.getStandardDiseaseModelLabel());
+		evolvingCrossSpeciesModelLabelValueEClass.getESuperTypes().add(theStandardPackage.getSIRLabelValue());
+		evolvingCrossSpeciesModelEClass.getESuperTypes().add(theEvolvingPackage.getEvolvingSIRDiseaseModel());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(evolvingCrossSpeciesModelLabelEClass, EvolvingCrossSpeciesModelLabel.class, "EvolvingCrossSpeciesModelLabel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(evolvingCrossSpeciesModelLabelValueEClass, EvolvingCrossSpeciesModelLabelValue.class, "EvolvingCrossSpeciesModelLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEvolvingCrossSpeciesModelLabelValue_E(), ecorePackage.getEDouble(), "e", null, 0, 1, EvolvingCrossSpeciesModelLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingCrossSpeciesModelLabelValue_Seff(), ecorePackage.getEDouble(), "seff", null, 0, 1, EvolvingCrossSpeciesModelLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(evolvingCrossSpeciesModelEClass, EvolvingCrossSpeciesModel.class, "EvolvingCrossSpeciesModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEvolvingCrossSpeciesModel_OtherToOtherTransmissionRate(), ecorePackage.getEDouble(), "otherToOtherTransmissionRate", "0.0", 0, 1, EvolvingCrossSpeciesModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingCrossSpeciesModel_OtherRecoveryRate(), ecorePackage.getEDouble(), "otherRecoveryRate", "0.1", 0, 1, EvolvingCrossSpeciesModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingCrossSpeciesModel_OtherToHostTransmissionRate(), ecorePackage.getEDouble(), "otherToHostTransmissionRate", "0.0", 0, 1, EvolvingCrossSpeciesModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingCrossSpeciesModel_TemperatureFactor(), ecorePackage.getEDouble(), "temperatureFactor", "20.0", 0, 1, EvolvingCrossSpeciesModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingCrossSpeciesModel_OtherPopulationIdentifier(), ecorePackage.getEString(), "otherPopulationIdentifier", "avian", 0, 1, EvolvingCrossSpeciesModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingCrossSpeciesModel_OtherImmunityLossRate(), ecorePackage.getEDouble(), "otherImmunityLossRate", "0.001", 0, 1, EvolvingCrossSpeciesModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingCrossSpeciesModel_IncubationRate(), ecorePackage.getEDouble(), "incubationRate", "1.0", 0, 1, EvolvingCrossSpeciesModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/stem/modelgen/generated
+		createGeneratedAnnotations();
+		// http:///org/eclipse/stem/modelgen/metamodel
+		createMetamodelAnnotations();
+		// http:///org/eclipse/stem/modelgen/model/label
+		createLabelAnnotations();
+		// http:///org/eclipse/stem/modelgen/model/labelvalue
+		createLabelvalueAnnotations();
+		// http:///org/eclipse/stem/modelgen/model/adapters
+		createAdaptersAnnotations();
+		// http:///org/eclipse/stem/modelgen/modelparam/messages
+		createMessagesAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/generated</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createGeneratedAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/generated";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingCrossSpeciesModelLabelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingCrossSpeciesModelLabelValueEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModelLabelValue_E(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModelLabelValue_Seff(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingCrossSpeciesModelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherToOtherTransmissionRate(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherRecoveryRate(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherToHostTransmissionRate(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_TemperatureFactor(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherPopulationIdentifier(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherImmunityLossRate(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_IncubationRate(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/metamodel</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createMetamodelAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/metamodel";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "uri", "platform:/resource/.stemgenerator/model/evolvingcrossspeciesmodel.metamodel"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/model/label</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createLabelAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/model/label";	
+		addAnnotation
+		  (evolvingCrossSpeciesModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingCrossSpeciesModelLabel"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/model/labelvalue</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createLabelvalueAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/model/labelvalue";	
+		addAnnotation
+		  (evolvingCrossSpeciesModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingCrossSpeciesModelLabelValue"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/model/adapters</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createAdaptersAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/model/adapters";	
+		addAnnotation
+		  (evolvingCrossSpeciesModelEClass, 
+		   source, 
+		   new String[] {
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/modelparam/messages</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createMessagesAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/modelparam/messages";	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherToOtherTransmissionRate(), 
+		   source, 
+		   new String[] {
+			 "name", "Other To Other Transmission Rate"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherRecoveryRate(), 
+		   source, 
+		   new String[] {
+			 "name", "Other Recovery Rate"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherToHostTransmissionRate(), 
+		   source, 
+		   new String[] {
+			 "name", "Other To Host Transmission Rate"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_TemperatureFactor(), 
+		   source, 
+		   new String[] {
+			 "name", "Temperature Factor"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherPopulationIdentifier(), 
+		   source, 
+		   new String[] {
+			 "name", "Other Population Identifier"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_OtherImmunityLossRate(), 
+		   source, 
+		   new String[] {
+			 "name", "Other Immunity Loss Rate"
+		   });	
+		addAnnotation
+		  (getEvolvingCrossSpeciesModel_IncubationRate(), 
+		   source, 
+		   new String[] {
+			 "name", "Incubation Rate"
+		   });
+	}
+
+} //EvolvingCrossSpeciesModelPackageImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelActionBarContributor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelActionBarContributor.java
new file mode 100644
index 0000000..e9e80bf
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelActionBarContributor.java
@@ -0,0 +1,423 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.stem.evolvingcrossspeciesmodel.provider.EvolvingCrossSpeciesModelEditPlugin;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the EvolvingCrossSpeciesModel model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("evolvingcrossspeciesmodel-settings"));
+		toolBarManager.add(new Separator("evolvingcrossspeciesmodel-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelEditor_menu"), "org.eclipse.stem.evolvingcrossspeciesmodelMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelEditor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelEditor.java
new file mode 100644
index 0000000..ad8bc8a
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelEditor.java
@@ -0,0 +1,1814 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.stem.core.common.provider.CommonItemProviderAdapterFactory;
+import org.eclipse.stem.core.experiment.provider.ExperimentItemProviderAdapterFactory;
+import org.eclipse.stem.core.graph.provider.GraphItemProviderAdapterFactory;
+import org.eclipse.stem.core.logger.provider.LoggerItemProviderAdapterFactory;
+import org.eclipse.stem.core.model.provider.ModelItemProviderAdapterFactory;
+import org.eclipse.stem.core.modifier.provider.ModifierItemProviderAdapterFactory;
+import org.eclipse.stem.core.predicate.provider.PredicateItemProviderAdapterFactory;
+import org.eclipse.stem.core.scenario.provider.ScenarioItemProviderAdapterFactory;
+import org.eclipse.stem.core.sequencer.provider.SequencerItemProviderAdapterFactory;
+import org.eclipse.stem.core.solver.provider.SolverItemProviderAdapterFactory;
+import org.eclipse.stem.core.trigger.provider.TriggerItemProviderAdapterFactory;
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingItemProviderAdapterFactory;
+import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.provider.DiseasepredicatesItemProviderAdapterFactory;
+import org.eclipse.stem.diseasemodels.standard.provider.StandardItemProviderAdapterFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.provider.EvolvingCrossSpeciesModelEditPlugin;
+import org.eclipse.stem.evolvingcrossspeciesmodel.provider.EvolvingCrossSpeciesModelItemProviderAdapterFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+
+/**
+ * This is an example of a EvolvingCrossSpeciesModel model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(EvolvingCrossSpeciesModelEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(EvolvingCrossSpeciesModelEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == EvolvingCrossSpeciesModelEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(EvolvingCrossSpeciesModelEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == EvolvingCrossSpeciesModelEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(EvolvingCrossSpeciesModelEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "org.eclipse.stem.evolvingcrossspeciesmodel",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EvolvingCrossSpeciesModelItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CommonItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ExperimentItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new GraphItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ModelItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ModifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new PredicateItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ScenarioItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SequencerItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new TriggerItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new DiseasepredicatesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EvolvingItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new StandardItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new LoggerItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SolverItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "org.eclipse.stem.evolvingcrossspeciesmodel",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "org.eclipse.stem.evolvingcrossspeciesmodel",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingCrossSpeciesModelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingCrossSpeciesModelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingCrossSpeciesModelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingCrossSpeciesModelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingCrossSpeciesModelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingCrossSpeciesModelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					EvolvingCrossSpeciesModelEditor.this.setSelectionToViewer(selection);
+					EvolvingCrossSpeciesModelEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelModelWizard.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelModelWizard.java
new file mode 100644
index 0000000..b795c3e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelModelWizard.java
@@ -0,0 +1,606 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.core.resources.IContainer;
+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.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+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;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+import org.eclipse.stem.evolvingcrossspeciesmodel.provider.EvolvingCrossSpeciesModelEditPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+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.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingCrossSpeciesModelPackage evolvingCrossSpeciesModelPackage = EvolvingCrossSpeciesModelPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingCrossSpeciesModelFactory evolvingCrossSpeciesModelFactory = evolvingCrossSpeciesModelPackage.getEvolvingCrossSpeciesModelFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingCrossSpeciesModelModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingCrossSpeciesModelModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getImage("full/wizban/NewEvolvingCrossSpeciesModel")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : evolvingCrossSpeciesModelPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)evolvingCrossSpeciesModelPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = evolvingCrossSpeciesModelFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class EvolvingCrossSpeciesModelModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public EvolvingCrossSpeciesModelModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class EvolvingCrossSpeciesModelModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public EvolvingCrossSpeciesModelModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				EvolvingCrossSpeciesModelEditPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new EvolvingCrossSpeciesModelModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelModelWizard_label"));
+		newFileCreationPage.setDescription(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelModelWizard_description"));
+		newFileCreationPage.setFileName(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new EvolvingCrossSpeciesModelModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_EvolvingCrossSpeciesModelModelWizard_label"));
+		initialObjectCreationPage.setDescription(EvolvingCrossSpeciesModelEditPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditor.java
new file mode 100644
index 0000000..49cd3df
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditor.java
@@ -0,0 +1,211 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+import java.util.MissingResourceException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingSIRDiseaseModelPropertyEditor;
+import org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingSIRDiseaseModelPropertyEditor.EvolvingSIRDiseaseModelPropertyStringProviderAdapter;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelPropertyEditor extends
+		EvolvingSIRDiseaseModelPropertyEditor {
+	/**
+	 * @param parent
+	 * @param style
+	 * @param model
+	 * @param projectValidator
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelPropertyEditor(Composite parent, int style,
+			DiseaseModel model, ModifyListener projectValidator,
+			IProject project) {
+		super(parent, style, model, projectValidator, project);
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public void populate(DiseaseModel object) {
+		super.populate(object);
+
+		EvolvingCrossSpeciesModel model = (EvolvingCrossSpeciesModel)object;
+
+ 		// Set value for Other To Other Transmission Rate (Double)
+		try {
+			Double otherToOtherTransmissionRateValue = Double.parseDouble(
+				map.get(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE).getText());
+			model.setOtherToOtherTransmissionRate(otherToOtherTransmissionRateValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+ 		// Set value for Other Recovery Rate (Double)
+		try {
+			Double otherRecoveryRateValue = Double.parseDouble(
+				map.get(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE).getText());
+			model.setOtherRecoveryRate(otherRecoveryRateValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+ 		// Set value for Other To Host Transmission Rate (Double)
+		try {
+			Double otherToHostTransmissionRateValue = Double.parseDouble(
+				map.get(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE).getText());
+			model.setOtherToHostTransmissionRate(otherToHostTransmissionRateValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+ 		// Set value for Temperature Factor (Double)
+		try {
+			Double temperatureFactorValue = Double.parseDouble(
+				map.get(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR).getText());
+			model.setTemperatureFactor(temperatureFactorValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+ 		// Set value for Other Population Identifier (String)
+  		String otherPopulationIdentifierValue = map.get(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER).getText();
+		model.setOtherPopulationIdentifier(otherPopulationIdentifierValue);
+ 		// Set value for Other Immunity Loss Rate (Double)
+		try {
+			Double otherImmunityLossRateValue = Double.parseDouble(
+				map.get(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE).getText());
+			model.setOtherImmunityLossRate(otherImmunityLossRateValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+ 		// Set value for Incubation Rate (Double)
+		try {
+			Double incubationRateValue = Double.parseDouble(
+				map.get(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE).getText());
+			model.setIncubationRate(incubationRateValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean validate() {
+		boolean valid = super.validate();
+
+		valid = valid && validateFeatureConstraint(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE);
+		valid = valid && validateFeatureConstraint(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE);
+		valid = valid && validateFeatureConstraint(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE);
+		valid = valid && validateFeatureConstraint(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR);
+		valid = valid && validateFeatureConstraint(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER);
+		valid = valid && validateFeatureConstraint(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE);
+		valid = valid && validateFeatureConstraint(EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE);
+
+		return valid;
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingCrossSpeciesModelPropertyStringProviderAdapter
+		extends EvolvingSIRDiseaseModelPropertyStringProviderAdapter {
+		/**
+		 * @param descriptor
+		 * @return the NLS'd name of the property to display to the user
+		 * @generated
+		 */
+		public String getPropertyName(IItemPropertyDescriptor descriptor) {
+			try {
+				return EvolvingCrossSpeciesModelWizardMessages
+						.getString(((EStructuralFeature) descriptor
+								.getFeature(null)).getName(), "EvolvingCrossSpeciesModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyName(descriptor);
+			}
+		} // getPropertyName
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd tool tip text that describes the property
+		 * @generated
+		 */
+		public String getPropertyToolTip(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingCrossSpeciesModelWizardMessages.getString(feature
+						.getName() + TT_SUFFIX, "EvolvingCrossSpeciesModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyToolTip(descriptor);
+			}
+		} // getPropertyToolTip
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text that represents the units of the
+		 *         property
+		 * @generated
+		 */
+		public String getPropertyUnits(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingCrossSpeciesModelWizardMessages.getString(feature
+						.getName() + UNIT_SUFFIX, "EvolvingCrossSpeciesModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyUnits(descriptor);
+			}
+		} // getPropertyUnits
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyMissing(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingCrossSpeciesModelWizardMessages.getString(feature
+						.getName() + MISSING_SUFFIX, "EvolvingCrossSpeciesModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyMissing(descriptor);
+			}
+		} // getPropertyMissing
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyInvalid(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingCrossSpeciesModelWizardMessages.getString(feature
+						.getName() + INVALID_SUFFIX, "EvolvingCrossSpeciesModel");
+			} catch (MissingResourceException e) {	
+				return super.getPropertyInvalid(descriptor);
+			}
+		} // getPropertyInvalid		
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditorAdapter.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditorAdapter.java
new file mode 100644
index 0000000..4993c93
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditorAdapter.java
@@ -0,0 +1,34 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditor;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapter;
+import org.eclipse.stem.ui.wizards.DiseaseModelPropertyComposite;
+import org.eclipse.swt.events.ModifyListener;
+
+/**
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelPropertyEditorAdapter extends
+		DiseaseModelPropertyEditorAdapter {
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public DiseaseModelPropertyEditor createDiseaseModelPropertyEditor(
+			DiseaseModelPropertyComposite composite,
+			int style, ModifyListener projectValidator, IProject project) {
+		return new EvolvingCrossSpeciesModelPropertyEditor(
+				composite, style,
+				(DiseaseModel)getTarget(), projectValidator, project);
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditorAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditorAdapterFactory.java
new file mode 100644
index 0000000..01d7719
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyEditorAdapterFactory.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.stem.evolvingcrossspeciesmodel.util.EvolvingCrossSpeciesModelAdapterFactory;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapter;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapterFactory;
+import org.eclipse.ui.IStartup;
+
+/**
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelPropertyEditorAdapterFactory extends
+		EvolvingCrossSpeciesModelAdapterFactory implements IStartup, DiseaseModelPropertyEditorAdapterFactory {
+
+	/**
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelPropertyEditorAdapterFactory() {
+		super();
+		DiseaseModelPropertyEditorAdapterFactory.INSTANCE.addAdapterFactory(this);
+	}
+
+	/**
+	 * @generated
+	 */
+	public void earlyStartup() {
+		new EvolvingCrossSpeciesModelPropertyStringProviderAdapterFactory();
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingCrossSpeciesModelAdapter() {
+		return new EvolvingCrossSpeciesModelPropertyEditorAdapter();
+	}
+	
+
+	/**
+	 * @generated
+	 */
+	public boolean isFactoryForType(Object type) {
+		boolean isType = super.isFactoryForType(type);
+		isType = isType || type == DiseaseModelPropertyEditorAdapter.class;
+		return isType;
+	}
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyStringProviderAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyStringProviderAdapterFactory.java
new file mode 100644
index 0000000..7a57cdd
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelPropertyStringProviderAdapterFactory.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.stem.evolvingcrossspeciesmodel.util.EvolvingCrossSpeciesModelAdapterFactory;
+import org.eclipse.stem.ui.adapters.propertystrings.PropertyStringProvider;
+import org.eclipse.stem.ui.adapters.propertystrings.PropertyStringProviderAdapterFactory;
+
+/**
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelPropertyStringProviderAdapterFactory extends
+		EvolvingCrossSpeciesModelAdapterFactory implements
+		PropertyStringProviderAdapterFactory {
+	/**
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelPropertyStringProviderAdapterFactory() {
+		super();
+		PropertyStringProviderAdapterFactory.INSTANCE.addAdapterFactory(this);
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return super.isFactoryForType(type)
+				|| type == PropertyStringProvider.class;
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingCrossSpeciesModelAdapter() {
+		return new EvolvingCrossSpeciesModelPropertyEditor.EvolvingCrossSpeciesModelPropertyStringProviderAdapter();
+	}
+	
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelRelativeValueProviderAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelRelativeValueProviderAdapterFactory.java
new file mode 100644
index 0000000..3d616af
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelRelativeValueProviderAdapterFactory.java
@@ -0,0 +1,273 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.ui.provider.PropertySource;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.definitions.adapters.relativevalue.RelativeValueProvider;
+import org.eclipse.stem.definitions.adapters.relativevalue.RelativeValueProviderAdapterFactory;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider;
+import org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider;
+import org.eclipse.stem.evolvingcrossspeciesmodel.provider.EvolvingCrossSpeciesModelItemProviderAdapterFactory;
+import org.eclipse.stem.evolvingcrossspeciesmodel.util.EvolvingCrossSpeciesModelAdapterFactory;
+import org.eclipse.ui.IStartup;
+
+/**
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelRelativeValueProviderAdapterFactory extends
+		EvolvingCrossSpeciesModelAdapterFactory 
+		implements IStartup, RelativeValueProviderAdapterFactory {
+	
+	/**
+	 * This keeps track of the root adapter factory that delegates to this
+	 * adapter factory.
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement
+	 * {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This factory is used to create item providers for the adapted classes.
+	 * The item providers are used as property sources to get the properties
+	 * that can have relative values.
+	 */
+	private static EvolvingCrossSpeciesModelItemProviderAdapterFactory itemProviderFactory;	
+	
+	
+	/**
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelRelativeValueProviderAdapterFactory() {
+		super();
+		RelativeValueProviderAdapterFactory.INSTANCE.addAdapterFactory(this);
+	}
+
+	/**
+	 * @generated
+	 */
+	public void earlyStartup() {
+		new EvolvingCrossSpeciesModelRelativeValueProviderAdapterFactory();
+	}
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.IChangeNotifier#addListener(org.eclipse.emf.edit.provider.INotifyChangedListener)
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	} // addListener
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.IChangeNotifier#fireNotifyChanged(org.eclipse.emf.common.notify.Notification)
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	} // fireNotifyChanged
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.IChangeNotifier#removeListener(org.eclipse.emf.edit.provider.INotifyChangedListener)
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	} // removeListener
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.ComposeableAdapterFactory#getRootAdapterFactory()
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory
+				.getRootAdapterFactory();
+	} // getRootAdapterFactory
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.ComposeableAdapterFactory#setParentAdapterFactory(org.eclipse.emf.edit.provider.ComposedAdapterFactory)
+	 * @generated
+	 */
+	public void setParentAdapterFactory(
+			ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	} // setParentAdapterFactory
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * 
+	 * @see org.eclipse.emf.edit.provider.IDisposable#dispose()
+	 * @generated
+	 */
+	public void dispose() {
+		// Nothing
+	} // dispose
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return super.isFactoryForType(type)
+				|| type == RelativeValueProvider.class;
+	}
+
+	/**
+	 * @return the instance of the Relative Value Provider Adapter Factory
+	 * @generated
+	 */
+	private static RelativeValueProviderAdapterFactory getRelativeValueProviderAdapterFactory() {
+		return RelativeValueProviderAdapterFactory.INSTANCE;
+	}
+
+	/**
+	 * @return the instance of the Standard Item Provider factory.
+	 * @generated
+	 */
+	private static EvolvingCrossSpeciesModelItemProviderAdapterFactory getItemProviderFactory() {
+		if (itemProviderFactory == null) {
+			itemProviderFactory = new EvolvingCrossSpeciesModelItemProviderAdapterFactory();
+		}
+		return itemProviderFactory;
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingCrossSpeciesModelLabelAdapter() {
+		return new EvolvingCrossSpeciesModelLabelRelativeValueProviderAdapter();
+	}
+	
+ 
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingCrossSpeciesModelLabelValueAdapter() {
+		return new EvolvingCrossSpeciesModelLabelValueRelativeValueProviderAdapter();
+	}
+	
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingCrossSpeciesModelLabelRelativeValueProviderAdapter 
+		extends DiseaseModelLabelRelativeValueProvider {
+	
+		/**
+		 * @generated
+		 */
+		private IntegrationLabelValue getCurrentLabelValue() {
+			return (IntegrationLabelValue)((IntegrationLabel)getTarget()).getCurrentValue();
+		}
+
+		/**
+		 * @generated
+		 */
+		private RelativeValueProvider getCurrentLabelValueRelativeValueProvider() {
+			return (RelativeValueProvider)getRelativeValueProviderAdapterFactory()
+				.adapt(getCurrentLabelValue(), RelativeValueProvider.class);
+		} 
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			return getCurrentLabelValueRelativeValueProvider().getProperties();
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			return getCurrentLabelValueRelativeValueProvider().getRelativeValue(feature);
+		}
+  
+  		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getCurrentLabelValue()).getPopulationCount();
+		}  
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingCrossSpeciesModelLabelValueRelativeValueProviderAdapter 
+		extends DiseaseModelLabelValueRelativeValueProvider {
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			final IItemPropertySource propertySource = (IItemPropertySource)getItemProviderFactory()
+					.adapt(getTarget(), PropertySource.class);
+
+			final List<IItemPropertyDescriptor> properties = new ArrayList<IItemPropertyDescriptor>();
+			for (IItemPropertyDescriptor descriptor : propertySource.getPropertyDescriptors(null)) {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				if (!(feature instanceof EReference)) {
+					properties.add(descriptor);
+				}
+			}
+			return properties;
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			final IntegrationLabelValue labelValue = (IntegrationLabelValue)getTarget();
+			final double stateCount = labelValue.eGetDouble(feature.getFeatureID());
+			final double denominator = getDenominator(feature);
+			if (denominator <= 0.0) {
+				return 0.0;
+			}
+			return stateCount / denominator;
+		}
+		
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getTarget()).getPopulationCount();
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelWizardMessages.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelWizardMessages.java
new file mode 100644
index 0000000..f84c66e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/EvolvingCrossSpeciesModelWizardMessages.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.presentation;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelWizardMessages {
+	/**
+	 * @generated
+	 */
+	private static final String BUNDLE_NAME = "org.eclipse.stem.evolvingcrossspeciesmodel.presentation.messages"; //$NON-NLS-1$
+
+	/**
+	 * @generated
+	 */
+	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+
+	/**
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelWizardMessages() {
+		// empty
+	}
+
+	/**
+	 * @param key the key for the message
+	 * @return the string that matches the key
+	 * @throws MissingResourceException if the key cannot be found
+	 * @generated
+	 */
+	public static String getString(String key) throws MissingResourceException {
+		return RESOURCE_BUNDLE.getString(key);
+	}
+	
+	/**
+	 * @param key the key for the message
+	 * @param context the class name for which this key resides
+	 * @return the string that matches the key
+	 * @throws MissingResourceException if the key cannot be found
+	 * @generated
+	 */
+	public static String getString(String key, String context) throws MissingResourceException {
+		return RESOURCE_BUNDLE.getString(context +"."+ key);
+	}	
+	
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/messages.properties b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/messages.properties
new file mode 100644
index 0000000..909e6ba
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/presentation/messages.properties
@@ -0,0 +1,47 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+# Messages for EvolvingCrossSpeciesModel
+EvolvingCrossSpeciesModel.otherToOtherTransmissionRate = Other To Other Transmission Rate
+EvolvingCrossSpeciesModel.otherToOtherTransmissionRateTT = Other To Other Transmission Rate
+EvolvingCrossSpeciesModel.otherToOtherTransmissionRateUNIT = 
+EvolvingCrossSpeciesModel.otherToOtherTransmissionRateMISSING = A value for Other To Other Transmission Rate is required
+EvolvingCrossSpeciesModel.otherToOtherTransmissionRateINVALID = The value for Other To Other Transmission Rate is invalid
+
+EvolvingCrossSpeciesModel.otherRecoveryRate = Other Recovery Rate
+EvolvingCrossSpeciesModel.otherRecoveryRateTT = Other Recovery Rate
+EvolvingCrossSpeciesModel.otherRecoveryRateUNIT = 
+EvolvingCrossSpeciesModel.otherRecoveryRateMISSING = A value for Other Recovery Rate is required
+EvolvingCrossSpeciesModel.otherRecoveryRateINVALID = The value for Other Recovery Rate is invalid
+
+EvolvingCrossSpeciesModel.otherToHostTransmissionRate = Other To Host Transmission Rate
+EvolvingCrossSpeciesModel.otherToHostTransmissionRateTT = Other To Host Transmission Rate
+EvolvingCrossSpeciesModel.otherToHostTransmissionRateUNIT = 
+EvolvingCrossSpeciesModel.otherToHostTransmissionRateMISSING = A value for Other To Host Transmission Rate is required
+EvolvingCrossSpeciesModel.otherToHostTransmissionRateINVALID = The value for Other To Host Transmission Rate is invalid
+
+EvolvingCrossSpeciesModel.temperatureFactor = Temperature Factor
+EvolvingCrossSpeciesModel.temperatureFactorTT = Temperature Factor
+EvolvingCrossSpeciesModel.temperatureFactorUNIT = 
+EvolvingCrossSpeciesModel.temperatureFactorMISSING = A value for Temperature Factor is required
+EvolvingCrossSpeciesModel.temperatureFactorINVALID = The value for Temperature Factor is invalid
+
+EvolvingCrossSpeciesModel.otherPopulationIdentifier = Other Population Identifier
+EvolvingCrossSpeciesModel.otherPopulationIdentifierTT = Other Population Identifier
+EvolvingCrossSpeciesModel.otherPopulationIdentifierUNIT = 
+EvolvingCrossSpeciesModel.otherPopulationIdentifierMISSING = A value for Other Population Identifier is required
+EvolvingCrossSpeciesModel.otherPopulationIdentifierINVALID = The value for Other Population Identifier is invalid
+
+ 
+EvolvingCrossSpeciesModel.otherImmunityLossRate = Other Immunity Loss Rate
+EvolvingCrossSpeciesModel.otherImmunityLossRateTT = Other Immunity Loss Rate
+EvolvingCrossSpeciesModel.otherImmunityLossRateUNIT = 
+EvolvingCrossSpeciesModel.otherImmunityLossRateMISSING = A value for Other Immunity Loss Rate is required
+EvolvingCrossSpeciesModel.otherImmunityLossRateINVALID = The value for Other Immunity Loss Rate is invalid
+EvolvingCrossSpeciesModel.incubationRate = Incubation Rate
+EvolvingCrossSpeciesModel.incubationRateTT = Incubation Rate
+EvolvingCrossSpeciesModel.incubationRateUNIT = 
+EvolvingCrossSpeciesModel.incubationRateMISSING = A value for Incubation Rate is required
+EvolvingCrossSpeciesModel.incubationRateINVALID = The value for Incubation Rate is invalid
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelEditPlugin.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelEditPlugin.java
new file mode 100644
index 0000000..4720f69
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelEditPlugin.java
@@ -0,0 +1,107 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingEditPlugin;
+
+import org.eclipse.stem.diseasemodels.standard.provider.DiseasemodelsEditPlugin;
+
+/**
+ * This is the central singleton for the EvolvingCrossSpeciesModel editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class EvolvingCrossSpeciesModelEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final EvolvingCrossSpeciesModelEditPlugin INSTANCE = new EvolvingCrossSpeciesModelEditPlugin();
+	
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelEditPlugin() {
+		super
+			(new ResourceLocator [] {
+				CoreEditPlugin.INSTANCE,
+				DiseasemodelsEditPlugin.INSTANCE,
+				EvolvingEditPlugin.INSTANCE,
+				EcoreEditPlugin.INSTANCE,
+			});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+	
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+	
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+	
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelItemProvider.java
new file mode 100644
index 0000000..89c9253
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelItemProvider.java
@@ -0,0 +1,292 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingSIRDiseaseModelItemProvider;
+
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelItemProvider
+	extends EvolvingSIRDiseaseModelItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOtherToOtherTransmissionRatePropertyDescriptor(object);
+			addOtherRecoveryRatePropertyDescriptor(object);
+			addOtherToHostTransmissionRatePropertyDescriptor(object);
+			addTemperatureFactorPropertyDescriptor(object);
+			addOtherPopulationIdentifierPropertyDescriptor(object);
+			addOtherImmunityLossRatePropertyDescriptor(object);
+			addIncubationRatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Other To Other Transmission Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOtherToOtherTransmissionRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModel_otherToOtherTransmissionRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModel_otherToOtherTransmissionRate_feature", "_UI_EvolvingCrossSpeciesModel_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Other Recovery Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOtherRecoveryRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModel_otherRecoveryRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModel_otherRecoveryRate_feature", "_UI_EvolvingCrossSpeciesModel_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Other To Host Transmission Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOtherToHostTransmissionRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModel_otherToHostTransmissionRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModel_otherToHostTransmissionRate_feature", "_UI_EvolvingCrossSpeciesModel_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Temperature Factor feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTemperatureFactorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModel_temperatureFactor_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModel_temperatureFactor_feature", "_UI_EvolvingCrossSpeciesModel_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Other Population Identifier feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOtherPopulationIdentifierPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModel_otherPopulationIdentifier_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModel_otherPopulationIdentifier_feature", "_UI_EvolvingCrossSpeciesModel_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Other Immunity Loss Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOtherImmunityLossRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModel_otherImmunityLossRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModel_otherImmunityLossRate_feature", "_UI_EvolvingCrossSpeciesModel_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Incubation Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIncubationRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModel_incubationRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModel_incubationRate_feature", "_UI_EvolvingCrossSpeciesModel_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return super.getText(object);
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EvolvingCrossSpeciesModel.class)) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_OTHER_TRANSMISSION_RATE:
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_RECOVERY_RATE:
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_TO_HOST_TRANSMISSION_RATE:
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__TEMPERATURE_FACTOR:
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_POPULATION_IDENTIFIER:
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__OTHER_IMMUNITY_LOSS_RATE:
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL__INCUBATION_RATE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingCrossSpeciesModelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelItemProviderAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelItemProviderAdapterFactory.java
new file mode 100644
index 0000000..77de58b
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelItemProviderAdapterFactory.java
@@ -0,0 +1,251 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.stem.evolvingcrossspeciesmodel.util.EvolvingCrossSpeciesModelAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelItemProviderAdapterFactory extends EvolvingCrossSpeciesModelAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingCrossSpeciesModelLabelItemProvider evolvingCrossSpeciesModelLabelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingCrossSpeciesModelLabelAdapter() {
+		if (evolvingCrossSpeciesModelLabelItemProvider == null) {
+			evolvingCrossSpeciesModelLabelItemProvider = new EvolvingCrossSpeciesModelLabelItemProvider(this);
+		}
+
+		return evolvingCrossSpeciesModelLabelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingCrossSpeciesModelLabelValueItemProvider evolvingCrossSpeciesModelLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingCrossSpeciesModelLabelValueAdapter() {
+		if (evolvingCrossSpeciesModelLabelValueItemProvider == null) {
+			evolvingCrossSpeciesModelLabelValueItemProvider = new EvolvingCrossSpeciesModelLabelValueItemProvider(this);
+		}
+
+		return evolvingCrossSpeciesModelLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingCrossSpeciesModelItemProvider evolvingCrossSpeciesModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingCrossSpeciesModelAdapter() {
+		if (evolvingCrossSpeciesModelItemProvider == null) {
+			evolvingCrossSpeciesModelItemProvider = new EvolvingCrossSpeciesModelItemProvider(this);
+		}
+
+		return evolvingCrossSpeciesModelItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (evolvingCrossSpeciesModelLabelItemProvider != null) evolvingCrossSpeciesModelLabelItemProvider.dispose();
+		if (evolvingCrossSpeciesModelLabelValueItemProvider != null) evolvingCrossSpeciesModelLabelValueItemProvider.dispose();
+		if (evolvingCrossSpeciesModelItemProvider != null) evolvingCrossSpeciesModelItemProvider.dispose();
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelLabelItemProvider.java
new file mode 100644
index 0000000..ab85b13
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelLabelItemProvider.java
@@ -0,0 +1,120 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.stem.diseasemodels.standard.provider.StandardDiseaseModelLabelItemProvider;
+
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelLabelItemProvider
+	extends StandardDiseaseModelLabelItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelLabelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		URI labelValue = ((EvolvingCrossSpeciesModelLabel)object).getURI();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingCrossSpeciesModelLabel_type") :
+			getString("_UI_EvolvingCrossSpeciesModelLabel_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingCrossSpeciesModelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelLabelValueItemProvider.java
new file mode 100644
index 0000000..67f1d57
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/provider/EvolvingCrossSpeciesModelLabelValueItemProvider.java
@@ -0,0 +1,173 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.diseasemodels.standard.provider.SIRLabelValueItemProvider;
+
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue;
+import org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelLabelValueItemProvider
+	extends SIRLabelValueItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addEPropertyDescriptor(object);
+			addSeffPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the E feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModelLabelValue_e_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModelLabelValue_e_feature", "_UI_EvolvingCrossSpeciesModelLabelValue_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Seff feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeffPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingCrossSpeciesModelLabelValue_seff_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingCrossSpeciesModelLabelValue_seff_feature", "_UI_EvolvingCrossSpeciesModelLabelValue_type"),
+				 EvolvingCrossSpeciesModelPackage.Literals.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		EvolvingCrossSpeciesModelLabelValue evolvingCrossSpeciesModelLabelValue = (EvolvingCrossSpeciesModelLabelValue)object;
+		return getString("_UI_EvolvingCrossSpeciesModelLabelValue_type") + " " + evolvingCrossSpeciesModelLabelValue.getPopulationCount();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EvolvingCrossSpeciesModelLabelValue.class)) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__E:
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE__SEFF:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingCrossSpeciesModelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/util/EvolvingCrossSpeciesModelAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/util/EvolvingCrossSpeciesModelAdapterFactory.java
new file mode 100644
index 0000000..cc34cf3
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/util/EvolvingCrossSpeciesModelAdapterFactory.java
@@ -0,0 +1,678 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.util;
+
+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;
+
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.PrimitiveTypeOperations;
+import org.eclipse.stem.core.common.SanityChecker;
+
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.NodeDecorator;
+
+import org.eclipse.stem.core.modifier.Modifiable;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SI;
+import org.eclipse.stem.diseasemodels.standard.SILabelValue;
+import org.eclipse.stem.diseasemodels.standard.SIRLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
+
+import org.eclipse.stem.evolvingcrossspeciesmodel.*;
+
+/**
+ * <!-- 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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static EvolvingCrossSpeciesModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = EvolvingCrossSpeciesModelPackage.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 EvolvingCrossSpeciesModelSwitch<Adapter> modelSwitch =
+		new EvolvingCrossSpeciesModelSwitch<Adapter>() {
+			@Override
+			public Adapter caseEvolvingCrossSpeciesModelLabel(EvolvingCrossSpeciesModelLabel object) {
+				return createEvolvingCrossSpeciesModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingCrossSpeciesModelLabelValue(EvolvingCrossSpeciesModelLabelValue object) {
+				return createEvolvingCrossSpeciesModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingCrossSpeciesModel(EvolvingCrossSpeciesModel object) {
+				return createEvolvingCrossSpeciesModelAdapter();
+			}
+			@Override
+			public <T> Adapter caseComparable(Comparable<T> object) {
+				return createComparableAdapter();
+			}
+			@Override
+			public Adapter caseSanityChecker(SanityChecker object) {
+				return createSanityCheckerAdapter();
+			}
+			@Override
+			public Adapter caseIdentifiable(Identifiable object) {
+				return createIdentifiableAdapter();
+			}
+			@Override
+			public Adapter caseLabel(Label object) {
+				return createLabelAdapter();
+			}
+			@Override
+			public Adapter caseDynamicLabel(DynamicLabel object) {
+				return createDynamicLabelAdapter();
+			}
+			@Override
+			public Adapter caseNodeLabel(NodeLabel object) {
+				return createNodeLabelAdapter();
+			}
+			@Override
+			public Adapter caseDynamicNodeLabel(DynamicNodeLabel object) {
+				return createDynamicNodeLabelAdapter();
+			}
+			@Override
+			public Adapter caseIntegrationLabel(IntegrationLabel object) {
+				return createIntegrationLabelAdapter();
+			}
+			@Override
+			public Adapter caseDiseaseModelLabel(DiseaseModelLabel object) {
+				return createDiseaseModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseStandardDiseaseModelLabel(StandardDiseaseModelLabel object) {
+				return createStandardDiseaseModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseLabelValue(LabelValue object) {
+				return createLabelValueAdapter();
+			}
+			@Override
+			public Adapter casePrimitiveTypeOperations(PrimitiveTypeOperations object) {
+				return createPrimitiveTypeOperationsAdapter();
+			}
+			@Override
+			public Adapter caseIntegrationLabelValue(IntegrationLabelValue object) {
+				return createIntegrationLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseDiseaseModelLabelValue(DiseaseModelLabelValue object) {
+				return createDiseaseModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseStandardDiseaseModelLabelValue(StandardDiseaseModelLabelValue object) {
+				return createStandardDiseaseModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseSILabelValue(SILabelValue object) {
+				return createSILabelValueAdapter();
+			}
+			@Override
+			public Adapter caseSIRLabelValue(SIRLabelValue object) {
+				return createSIRLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseDecorator(Decorator object) {
+				return createDecoratorAdapter();
+			}
+			@Override
+			public Adapter caseNodeDecorator(NodeDecorator object) {
+				return createNodeDecoratorAdapter();
+			}
+			@Override
+			public Adapter caseIntegrationDecorator(IntegrationDecorator object) {
+				return createIntegrationDecoratorAdapter();
+			}
+			@Override
+			public Adapter caseModifiable(Modifiable object) {
+				return createModifiableAdapter();
+			}
+			@Override
+			public Adapter caseDiseaseModel(DiseaseModel object) {
+				return createDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseStandardDiseaseModel(StandardDiseaseModel object) {
+				return createStandardDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseSI(SI object) {
+				return createSIAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingDiseaseModel(EvolvingDiseaseModel object) {
+				return createEvolvingDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIDiseaseModel(EvolvingSIDiseaseModel object) {
+				return createEvolvingSIDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIRDiseaseModel(EvolvingSIRDiseaseModel object) {
+				return createEvolvingSIRDiseaseModelAdapter();
+			}
+			@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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel <em>Label</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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabel
+	 * @generated
+	 */
+	public Adapter createEvolvingCrossSpeciesModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue <em>Label Value</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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelLabelValue
+	 * @generated
+	 */
+	public Adapter createEvolvingCrossSpeciesModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel <em>Evolving Cross Species Model</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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModel
+	 * @generated
+	 */
+	public Adapter createEvolvingCrossSpeciesModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</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 java.lang.Comparable
+	 * @generated
+	 */
+	public Adapter createComparableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</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.stem.core.common.SanityChecker
+	 * @generated
+	 */
+	public Adapter createSanityCheckerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</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.stem.core.common.Identifiable
+	 * @generated
+	 */
+	public Adapter createIdentifiableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.Label <em>Label</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.stem.core.graph.Label
+	 * @generated
+	 */
+	public Adapter createLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.DynamicLabel <em>Dynamic Label</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.stem.core.graph.DynamicLabel
+	 * @generated
+	 */
+	public Adapter createDynamicLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.NodeLabel <em>Node Label</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.stem.core.graph.NodeLabel
+	 * @generated
+	 */
+	public Adapter createNodeLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.DynamicNodeLabel <em>Dynamic Node Label</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.stem.core.graph.DynamicNodeLabel
+	 * @generated
+	 */
+	public Adapter createDynamicNodeLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.IntegrationLabel <em>Integration Label</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.stem.core.graph.IntegrationLabel
+	 * @generated
+	 */
+	public Adapter createIntegrationLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel <em>Disease Model Label</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.stem.diseasemodels.standard.DiseaseModelLabel
+	 * @generated
+	 */
+	public Adapter createDiseaseModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel <em>Disease Model Label</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.stem.diseasemodels.standard.StandardDiseaseModelLabel
+	 * @generated
+	 */
+	public Adapter createStandardDiseaseModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.LabelValue <em>Label Value</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.stem.core.graph.LabelValue
+	 * @generated
+	 */
+	public Adapter createLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.PrimitiveTypeOperations <em>Primitive Type Operations</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.stem.core.common.PrimitiveTypeOperations
+	 * @generated
+	 */
+	public Adapter createPrimitiveTypeOperationsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.IntegrationLabelValue <em>Integration Label Value</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.stem.core.graph.IntegrationLabelValue
+	 * @generated
+	 */
+	public Adapter createIntegrationLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue <em>Disease Model Label Value</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.stem.diseasemodels.standard.DiseaseModelLabelValue
+	 * @generated
+	 */
+	public Adapter createDiseaseModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue <em>Disease Model Label Value</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.stem.diseasemodels.standard.StandardDiseaseModelLabelValue
+	 * @generated
+	 */
+	public Adapter createStandardDiseaseModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.SILabelValue <em>SI Label Value</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.stem.diseasemodels.standard.SILabelValue
+	 * @generated
+	 */
+	public Adapter createSILabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.SIRLabelValue <em>SIR Label Value</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.stem.diseasemodels.standard.SIRLabelValue
+	 * @generated
+	 */
+	public Adapter createSIRLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.Decorator <em>Decorator</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.stem.core.model.Decorator
+	 * @generated
+	 */
+	public Adapter createDecoratorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.NodeDecorator <em>Node Decorator</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.stem.core.model.NodeDecorator
+	 * @generated
+	 */
+	public Adapter createNodeDecoratorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.IntegrationDecorator <em>Integration Decorator</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.stem.core.model.IntegrationDecorator
+	 * @generated
+	 */
+	public Adapter createIntegrationDecoratorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</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.stem.core.modifier.Modifiable
+	 * @generated
+	 */
+	public Adapter createModifiableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.DiseaseModel <em>Disease Model</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.stem.diseasemodels.standard.DiseaseModel
+	 * @generated
+	 */
+	public Adapter createDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseModel <em>Disease Model</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.stem.diseasemodels.standard.StandardDiseaseModel
+	 * @generated
+	 */
+	public Adapter createStandardDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.SI <em>SI</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.stem.diseasemodels.standard.SI
+	 * @generated
+	 */
+	public Adapter createSIAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel <em>Disease Model</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.stem.diseasemodels.evolving.EvolvingDiseaseModel
+	 * @generated
+	 */
+	public Adapter createEvolvingDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel <em>SI Disease Model</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.stem.diseasemodels.evolving.EvolvingSIDiseaseModel
+	 * @generated
+	 */
+	public Adapter createEvolvingSIDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel <em>SIR Disease Model</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.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel
+	 * @generated
+	 */
+	public Adapter createEvolvingSIRDiseaseModelAdapter() {
+		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;
+	}
+
+} //EvolvingCrossSpeciesModelAdapterFactory
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/util/EvolvingCrossSpeciesModelSwitch.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/util/EvolvingCrossSpeciesModelSwitch.java
new file mode 100644
index 0000000..80a95d5
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving.crossspecies/src/org/eclipse/stem/evolvingcrossspeciesmodel/util/EvolvingCrossSpeciesModelSwitch.java
@@ -0,0 +1,624 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.evolvingcrossspeciesmodel.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.PrimitiveTypeOperations;
+import org.eclipse.stem.core.common.SanityChecker;
+
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.NodeDecorator;
+
+import org.eclipse.stem.core.modifier.Modifiable;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SI;
+import org.eclipse.stem.diseasemodels.standard.SILabelValue;
+import org.eclipse.stem.diseasemodels.standard.SIRLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
+
+import org.eclipse.stem.evolvingcrossspeciesmodel.*;
+
+/**
+ * <!-- 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.stem.evolvingcrossspeciesmodel.EvolvingCrossSpeciesModelPackage
+ * @generated
+ */
+public class EvolvingCrossSpeciesModelSwitch<T1> extends Switch<T1> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static EvolvingCrossSpeciesModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingCrossSpeciesModelSwitch() {
+		if (modelPackage == null) {
+			modelPackage = EvolvingCrossSpeciesModelPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter 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 T1 doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL: {
+				EvolvingCrossSpeciesModelLabel evolvingCrossSpeciesModelLabel = (EvolvingCrossSpeciesModelLabel)theEObject;
+				T1 result = caseEvolvingCrossSpeciesModelLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseStandardDiseaseModelLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseDiseaseModelLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseIntegrationLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseDynamicNodeLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseDynamicLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseNodeLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseLabel(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseIdentifiable(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseComparable(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = caseSanityChecker(evolvingCrossSpeciesModelLabel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL_LABEL_VALUE: {
+				EvolvingCrossSpeciesModelLabelValue evolvingCrossSpeciesModelLabelValue = (EvolvingCrossSpeciesModelLabelValue)theEObject;
+				T1 result = caseEvolvingCrossSpeciesModelLabelValue(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = caseSIRLabelValue(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = caseSILabelValue(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = caseStandardDiseaseModelLabelValue(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = caseDiseaseModelLabelValue(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = caseIntegrationLabelValue(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = caseLabelValue(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = casePrimitiveTypeOperations(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = caseSanityChecker(evolvingCrossSpeciesModelLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingCrossSpeciesModelPackage.EVOLVING_CROSS_SPECIES_MODEL: {
+				EvolvingCrossSpeciesModel evolvingCrossSpeciesModel = (EvolvingCrossSpeciesModel)theEObject;
+				T1 result = caseEvolvingCrossSpeciesModel(evolvingCrossSpeciesModel);
+				if (result == null) result = caseEvolvingSIRDiseaseModel(evolvingCrossSpeciesModel);
+				if (result == null) result = caseEvolvingSIDiseaseModel(evolvingCrossSpeciesModel);
+				if (result == null) result = caseSI(evolvingCrossSpeciesModel);
+				if (result == null) result = caseEvolvingDiseaseModel(evolvingCrossSpeciesModel);
+				if (result == null) result = caseStandardDiseaseModel(evolvingCrossSpeciesModel);
+				if (result == null) result = caseDiseaseModel(evolvingCrossSpeciesModel);
+				if (result == null) result = caseIntegrationDecorator(evolvingCrossSpeciesModel);
+				if (result == null) result = caseModifiable(evolvingCrossSpeciesModel);
+				if (result == null) result = caseNodeDecorator(evolvingCrossSpeciesModel);
+				if (result == null) result = caseDecorator(evolvingCrossSpeciesModel);
+				if (result == null) result = caseIdentifiable(evolvingCrossSpeciesModel);
+				if (result == null) result = caseComparable(evolvingCrossSpeciesModel);
+				if (result == null) result = caseSanityChecker(evolvingCrossSpeciesModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label</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</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingCrossSpeciesModelLabel(EvolvingCrossSpeciesModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label Value</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 Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingCrossSpeciesModelLabelValue(EvolvingCrossSpeciesModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Evolving Cross Species Model</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>Evolving Cross Species Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingCrossSpeciesModel(EvolvingCrossSpeciesModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Comparable</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>Comparable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public <T> T1 caseComparable(Comparable<T> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</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>Sanity Checker</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSanityChecker(SanityChecker object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Identifiable</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>Identifiable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIdentifiable(Identifiable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label</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</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLabel(Label object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dynamic Label</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>Dynamic Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDynamicLabel(DynamicLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Node Label</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>Node Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseNodeLabel(NodeLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dynamic Node Label</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>Dynamic Node Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDynamicNodeLabel(DynamicNodeLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integration Label</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>Integration Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegrationLabel(IntegrationLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label</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>Disease Model Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDiseaseModelLabel(DiseaseModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label</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>Disease Model Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStandardDiseaseModelLabel(StandardDiseaseModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label Value</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 Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLabelValue(LabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Primitive Type Operations</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>Primitive Type Operations</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 casePrimitiveTypeOperations(PrimitiveTypeOperations object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integration Label Value</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>Integration Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegrationLabelValue(IntegrationLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label Value</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>Disease Model Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDiseaseModelLabelValue(DiseaseModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label Value</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>Disease Model Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStandardDiseaseModelLabelValue(StandardDiseaseModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI Label Value</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>SI Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSILabelValue(SILabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SIR Label Value</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>SIR Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSIRLabelValue(SIRLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Decorator</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>Decorator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDecorator(Decorator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Node Decorator</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>Node Decorator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseNodeDecorator(NodeDecorator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integration Decorator</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>Integration Decorator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegrationDecorator(IntegrationDecorator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Modifiable</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>Modifiable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseModifiable(Modifiable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model</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>Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDiseaseModel(DiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model</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>Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStandardDiseaseModel(StandardDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI</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>SI</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSI(SI object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model</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>Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingDiseaseModel(EvolvingDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI Disease Model</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>SI Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIDiseaseModel(EvolvingSIDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SIR Disease Model</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>SIR Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIRDiseaseModel(EvolvingSIRDiseaseModel 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 T1 defaultCase(EObject object) {
+		return null;
+	}
+
+} //EvolvingCrossSpeciesModelSwitch
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/.classpath b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/.classpath
new file mode 100644
index 0000000..22f3064
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/.classpath
@@ -0,0 +1,7 @@
+<?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 kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/.project b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/.project
new file mode 100644
index 0000000..6ab1b5d
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.stem.diseasemodels.evolving</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.stem.model.builder.MetamodelBuilder</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.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.stem.model.common.ModelProjectNature</nature>
+	</natures>
+</projectDescription>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/META-INF/MANIFEST.MF b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a0512d8
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.stem.diseasemodels.evolving;singleton:=true
+Bundle-Version: 3.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.stem.diseasemodels.evolving.provider.EvolvingEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.stem.diseasemodels.evolving,
+ org.eclipse.stem.diseasemodels.evolving.impl,
+ org.eclipse.stem.diseasemodels.evolving.presentation,
+ org.eclipse.stem.diseasemodels.evolving.provider,
+ org.eclipse.stem.diseasemodels.evolving.util
+Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.stem.diseasemodels;visibility:=reexport,
+ org.eclipse.stem.populationmodels;visibility:=reexport,
+ org.eclipse.stem.definitions;visibility:=reexport,
+ org.eclipse.stem.interventions,
+ org.eclipse.core.runtime,
+ org.eclipse.stem.ui.diseasemodels;visibility:=reexport,
+ org.eclipse.stem.ui;visibility:=reexport,
+ org.eclipse.core.resources;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.ecore.editor;visibility:=reexport,
+ org.eclipse.stem.core;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/build.properties b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/build.properties
new file mode 100644
index 0000000..08f0e47
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/build.properties
@@ -0,0 +1,15 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+bin.includes = .,\
+               icons/,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingDiseaseTransformer.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingDiseaseTransformer.gif
new file mode 100644
index 0000000..c4fb30e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingDiseaseTransformer.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingModelFile.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingModelFile.gif
new file mode 100644
index 0000000..b251792
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingModelFile.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModel.gif
new file mode 100644
index 0000000..4e404e4
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModelLabel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModelLabel.gif
new file mode 100644
index 0000000..db7414e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModelLabel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModelLabelValue.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModelLabelValue.gif
new file mode 100644
index 0000000..c4fb30e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSEIRDiseaseModelLabelValue.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModel.gif
new file mode 100644
index 0000000..4e404e4
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModelLabel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModelLabel.gif
new file mode 100644
index 0000000..45731fe
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModelLabel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModelLabelValue.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModelLabelValue.gif
new file mode 100644
index 0000000..1e5345f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIDiseaseModelLabelValue.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModel.gif
new file mode 100644
index 0000000..4e404e4
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModelLabel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModelLabel.gif
new file mode 100644
index 0000000..c00aedf
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModelLabel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModelLabelValue.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModelLabelValue.gif
new file mode 100644
index 0000000..98b351f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/obj16/EvolvingSIRDiseaseModelLabelValue.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/wizban/NewEvolving.gif b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/wizban/NewEvolving.gif
new file mode 100644
index 0000000..97fd1e1
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/icons/full/wizban/NewEvolving.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/.evolving.vmm b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/.evolving.vmm
new file mode 100644
index 0000000..6c5c1aa
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/.evolving.vmm
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eclipse.stem.model.vmm:CanvasPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:org.eclipse.stem.model.vmm="http:///org/eclipse/stem/model/vmm.ecore" metamodel="evolving.metamodel#/">
+  <modelElements model="evolving.metamodel#//@models.0">
+    <compartmentElements x="5" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.0/@compartments.0"/>
+    <compartmentElements x="110" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.0"/>
+    <compartmentElements x="215" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.1"/>
+    <compartmentElements x="320" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.2"/>
+    <compartmentElements x="425" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.2/@compartments.0"/>
+  </modelElements>
+  <modelElements model="evolving.metamodel#//@models.1">
+    <compartmentElements x="5" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.0/@compartments.0"/>
+    <compartmentElements x="110" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.0"/>
+    <compartmentElements x="215" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.1"/>
+    <compartmentElements x="320" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.2"/>
+    <compartmentElements x="425" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.2/@compartments.0"/>
+    <compartmentElements x="530" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.3/@compartments.0"/>
+  </modelElements>
+  <modelElements model="evolving.metamodel#//@models.2">
+    <compartmentElements x="5" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.0/@compartments.0"/>
+    <compartmentElements x="110" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.0"/>
+    <compartmentElements x="215" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.1"/>
+    <compartmentElements x="320" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.4/@compartments.2"/>
+    <compartmentElements x="425" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.2/@compartments.0"/>
+    <compartmentElements x="530" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.3/@compartments.0"/>
+    <compartmentElements x="635" y="5" width="75" height="75" compartment="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.1/@compartments.0"/>
+  </modelElements>
+</org.eclipse.stem.model.vmm:CanvasPackage>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.ecore b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.ecore
new file mode 100644
index 0000000..f4fdf4d
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.ecore
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="evolving" nsURI="http:///org/eclipse/stem/diseasemodels/evolving/evolving.ecore"
+    nsPrefix="org.eclipse.stem.diseasemodels.evolving">
+  <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+    <details key="version" value="1.0"/>
+  </eAnnotations>
+  <eAnnotations source="http:///org/eclipse/stem/modelgen/metamodel">
+    <details key="uri" value="platform:/resource/org.eclipse.stem.diseasemodels.evolving/model/evolving.metamodel"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EDataType" name="BooleanArray" instanceClassName="boolean[]"/>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingDiseaseTransformer" eSuperTypes="platform:/plugin/org.eclipse.stem.core/model/model.ecore#//TransformationDecorator">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="baseDisease" lowerBound="1"
+        eType="ecore:EClass platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//DiseaseModel"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="evolvedDiseases" upperBound="-1"
+        eType="ecore:EClass platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//DiseaseModel"
+        transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="evolutionCount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="evolutionCountHardLimit"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="256"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stopAllEvolution" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        transient="true" defaultValueLiteral="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingDiseaseModel" abstract="true"
+      interface="true">
+    <eOperations name="evolve" eType="#//EvolvingDiseaseModel">
+      <eParameters name="label" eType="ecore:EClass platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//DiseaseModelLabel"/>
+    </eOperations>
+    <eOperations name="calculateEvolvedInitialState"/>
+    <eOperations name="getGeneticDistance" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eParameters name="otherDiseaseStrain" eType="#//EvolvingDiseaseModel"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parentDisease" eType="#//EvolvingDiseaseModel"
+        transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="transformer" eType="#//EvolvingDiseaseTransformer"
+        transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="evolvedAt" eType="ecore:EClass platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//DiseaseModelLabel"
+        transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="genome" eType="#//BooleanArray"
+        transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="evolutionCount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        transient="true" defaultValueLiteral="0"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSIDiseaseModelLabel" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//StandardDiseaseModelLabel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSIDiseaseModelLabelValue" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//SILabelValue">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSIDiseaseModel" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//SI #//EvolvingDiseaseModel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/label">
+      <details key="*" value="EvolvingSIDiseaseModelLabel"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/labelvalue">
+      <details key="*" value="EvolvingSIDiseaseModelLabelValue"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/adapters">
+      <details key="propertyEditorSuperClass" value="org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor"/>
+      <details key="stringProviderSuperClass" value="org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter"/>
+      <details key="labelRelativeValueProviderSuperClass" value="org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider"/>
+      <details key="labelValueRelativeValueProviderSuperClass" value="org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="caseMutationRate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.00001"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="genomeLength" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="5"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="geneticDistNonlinExponent"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSIRDiseaseModelLabel" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//StandardDiseaseModelLabel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSIRDiseaseModelLabelValue" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//SIRLabelValue">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSIRDiseaseModel" eSuperTypes="#//EvolvingSIDiseaseModel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/label">
+      <details key="*" value="EvolvingSIRDiseaseModelLabel"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/labelvalue">
+      <details key="*" value="EvolvingSIRDiseaseModelLabelValue"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/adapters">
+      <details key="propertyEditorSuperClass" value="org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor"/>
+      <details key="stringProviderSuperClass" value="org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter"/>
+      <details key="labelRelativeValueProviderSuperClass" value="org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider"/>
+      <details key="labelValueRelativeValueProviderSuperClass" value="org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="immunityLossRate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.0">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/constraints">
+        <details key="minValue" value="0.0"/>
+        <details key="maxValue" value="1.0"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Immunity Loss Rate"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="crossImmunityRate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.75"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSEIRDiseaseModelLabel" eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//StandardDiseaseModelLabel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSEIRDiseaseModelLabelValue"
+      eSuperTypes="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.ecore#//SEIRLabelValue">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvolvingSEIRDiseaseModel" eSuperTypes="#//EvolvingSIRDiseaseModel">
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/label">
+      <details key="*" value="EvolvingSEIRDiseaseModelLabel"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/labelvalue">
+      <details key="*" value="EvolvingSEIRDiseaseModelLabelValue"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/model/adapters">
+      <details key="propertyEditorSuperClass" value="org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor"/>
+      <details key="stringProviderSuperClass" value="org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter"/>
+      <details key="labelRelativeValueProviderSuperClass" value="org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider"/>
+      <details key="labelValueRelativeValueProviderSuperClass" value="org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+      <details key="version" value="1.0"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="incubationRate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.0">
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/constraints">
+        <details key="minValue" value="0.0"/>
+        <details key="maxValue" value="1.0"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/modelparam/messages">
+        <details key="name" value="Incubation Rate"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/stem/modelgen/generated">
+        <details key="version" value="1.0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.genmodel b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.genmodel
new file mode 100644
index 0000000..6792c7a
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.genmodel
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.stem.diseasemodels.evolving/src" editDirectory="/org.eclipse.stem.diseasemodels.evolving/src"
+    editorDirectory="/org.eclipse.stem.diseasemodels.evolving/src" modelPluginID="org.eclipse.stem.diseasemodels.evolving"
+    templateDirectory="platform:/plugin/org.eclipse.stem.model.codegen/templates"
+    dynamicTemplates="true" forceOverwrite="true" modelName="Evolving" importerID="org.eclipse.emf.importer.ecore"
+    suppressNotification="true" complianceLevel="6.0" publicConstructors="true" editPluginID="org.eclipse.stem.diseasemodels.evolving"
+    editorPluginID="org.eclipse.stem.diseasemodels.evolving" usedGenPackages="platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//common platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//graph platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//model platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//modifier platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//scenario platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//sequencer platform:/plugin/org.eclipse.stem.diseasemodels/model/diseasemodels.genmodel#//standard platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//logger platform:/plugin/org.eclipse.stem.core/model/core.genmodel#//solver platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.stem.populationmodels/model/standard.genmodel#//standard platform:/plugin/org.eclipse.stem.definitions/model/definitions.genmodel#//labels">
+  <foreignModel>evolving.ecore</foreignModel>
+  <templatePluginVariables>STEM_CODEGEN=org.eclipse.stem.model.codegen</templatePluginVariables>
+  <templatePluginVariables>STEM_METAMODEL=org.eclipse.stem.model</templatePluginVariables>
+  <genPackages prefix="Evolving" basePackage="org.eclipse.stem.diseasemodels" disposableProviderFactory="true"
+      ecorePackage="evolving.ecore#/">
+    <genDataTypes ecoreDataType="evolving.ecore#//BooleanArray"/>
+    <genClasses ecoreClass="evolving.ecore#//EvolvingDiseaseTransformer">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolving.ecore#//EvolvingDiseaseTransformer/baseDisease"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolving.ecore#//EvolvingDiseaseTransformer/evolvedDiseases"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingDiseaseTransformer/evolutionCount"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingDiseaseTransformer/evolutionCountHardLimit"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingDiseaseTransformer/stopAllEvolution"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="evolving.ecore#//EvolvingDiseaseModel">
+      <genFeatures property="None" notify="false" createChild="false" propertySortChoices="true"
+          ecoreFeature="ecore:EReference evolving.ecore#//EvolvingDiseaseModel/parentDisease"/>
+      <genFeatures property="None" notify="false" createChild="false" propertySortChoices="true"
+          ecoreFeature="ecore:EReference evolving.ecore#//EvolvingDiseaseModel/transformer"/>
+      <genFeatures property="None" notify="false" createChild="false" propertySortChoices="true"
+          ecoreFeature="ecore:EReference evolving.ecore#//EvolvingDiseaseModel/evolvedAt"/>
+      <genFeatures property="None" createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingDiseaseModel/genome"/>
+      <genFeatures property="None" createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingDiseaseModel/evolutionCount"/>
+      <genOperations ecoreOperation="evolving.ecore#//EvolvingDiseaseModel/evolve">
+        <genParameters ecoreParameter="evolving.ecore#//EvolvingDiseaseModel/evolve/label"/>
+      </genOperations>
+      <genOperations ecoreOperation="evolving.ecore#//EvolvingDiseaseModel/calculateEvolvedInitialState"/>
+      <genOperations ecoreOperation="evolving.ecore#//EvolvingDiseaseModel/getGeneticDistance">
+        <genParameters ecoreParameter="evolving.ecore#//EvolvingDiseaseModel/getGeneticDistance/otherDiseaseStrain"/>
+      </genOperations>
+    </genClasses>
+    <genClasses ecoreClass="evolving.ecore#//EvolvingSIDiseaseModelLabel"/>
+    <genClasses ecoreClass="evolving.ecore#//EvolvingSIDiseaseModelLabelValue"/>
+    <genClasses image="false" ecoreClass="evolving.ecore#//EvolvingSIDiseaseModel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingSIDiseaseModel/caseMutationRate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingSIDiseaseModel/genomeLength"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingSIDiseaseModel/geneticDistNonlinExponent"/>
+    </genClasses>
+    <genClasses ecoreClass="evolving.ecore#//EvolvingSIRDiseaseModelLabel"/>
+    <genClasses ecoreClass="evolving.ecore#//EvolvingSIRDiseaseModelLabelValue"/>
+    <genClasses image="false" ecoreClass="evolving.ecore#//EvolvingSIRDiseaseModel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingSIRDiseaseModel/immunityLossRate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingSIRDiseaseModel/crossImmunityRate"/>
+    </genClasses>
+    <genClasses ecoreClass="evolving.ecore#//EvolvingSEIRDiseaseModelLabel"/>
+    <genClasses ecoreClass="evolving.ecore#//EvolvingSEIRDiseaseModelLabelValue"/>
+    <genClasses image="false" ecoreClass="evolving.ecore#//EvolvingSEIRDiseaseModel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolving.ecore#//EvolvingSEIRDiseaseModel/incubationRate"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.metamodel b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.metamodel
new file mode 100644
index 0000000..6e60acb
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/model/evolving.metamodel
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eclipse.stem.model:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.stem.model="http:///org/eclipse/stem/model/metamodel.ecore"
+    packagePrefix="org.eclipse.stem.diseasemodels" name="Evolving">
+  <models name="EvolvingSIDiseaseModel" class="evolving.ecore#//EvolvingSIDiseaseModel"
+      parentModel="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@models.2"
+      compartments="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.2"/>
+  <models name="EvolvingSIRDiseaseModel" class="evolving.ecore#//EvolvingSIRDiseaseModel"
+      parentModel="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@models.2"
+      compartments="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.3">
+    <parameters name="immunityLossRate" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="0.0" displayName="Immunity Loss Rate" unit="" helpMessage=""
+        invalidMessage="" missingMessage="">
+      <constraints name="minValue" constraint="0.0"/>
+      <constraints name="maxValue" constraint="1.0"/>
+    </parameters>
+  </models>
+  <models name="EvolvingSEIRDiseaseModel" class="evolving.ecore#//EvolvingSEIRDiseaseModel"
+      parentModel="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@models.3"
+      compartments="platform:/plugin/org.eclipse.stem.diseasemodels/model/standard.metamodel#//@compartmentGroups.1">
+    <parameters name="incubationRate" dataType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValue="0.0" displayName="Incubation Rate" unit="" helpMessage="" invalidMessage=""
+        missingMessage="">
+      <constraints name="minValue" constraint="0.0"/>
+      <constraints name="maxValue" constraint="1.0"/>
+    </parameters>
+  </models>
+</org.eclipse.stem.model:Package>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/plugin.properties b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/plugin.properties
new file mode 100644
index 0000000..b1367b4
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/plugin.properties
@@ -0,0 +1,82 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+pluginName = Evolving Disease Models
+providerName = Eclipse Foundation
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+_UI_PropertyDescriptor_description = The {0} of the {1}
+_UI_EvolvingSIDiseaseModelLabel_type = Evolving SI Disease Model Label
+_UI_EvolvingSIDiseaseModelLabelValue_type = Evolving SI Disease Model Label Value
+_UI_EvolvingSIDiseaseModel_type = Evolving SI Disease Model
+_UI_Unknown_type = Object
+_UI_Unknown_datatype= Value
+_UI_Unknown_feature = Unspecified
+_UI_EvolvingEditor_menu = &Evolving Editor
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+_UI_OpenEditorError_label = Open Editor
+_UI_Wizard_category = Example EMF Model Creation Wizards
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+_UI_EvolvingModelWizard_label = Evolving Model
+_UI_EvolvingModelWizard_description = Create a new Evolving model
+_UI_EvolvingEditor_label = Evolving Model Editor
+_UI_EvolvingEditorFilenameDefaultBase = My
+_UI_EvolvingEditorFilenameExtensions = evolving
+_UI_Wizard_label = New
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+_UI_EvolvingSIRDiseaseModelLabel_type = Evolving SIR Disease Model Label
+_UI_EvolvingSIRDiseaseModelLabelValue_type = Evolving SIR Disease Model Label Value
+_UI_EvolvingSIRDiseaseModel_type = Evolving SIR Disease Model
+_UI_EvolvingSIRDiseaseModel_immunityLossRate_feature = Immunity Loss Rate
+_UI_EvolvingSEIRDiseaseModelLabel_type = Evolving SEIR Disease Model Label
+_UI_EvolvingSEIRDiseaseModelLabelValue_type = Evolving SEIR Disease Model Label Value
+_UI_EvolvingSEIRDiseaseModel_type = Evolving SEIR Disease Model
+_UI_EvolvingSEIRDiseaseModel_incubationRate_feature = Incubation Rate
+_UI_EvolvingDiseaseTransformer_type = Disease Transformer
+_UI_EvolvingDiseaseModel_type = Disease Model
+_UI_EvolvingDiseaseTransformer_baseDisease_feature = Base Disease
+_UI_EvolvingDiseaseTransformer_evolvedDiseases_feature = Evolved Diseases
+_UI_EvolvingDiseaseTransformer_evolutionCount_feature = Evolution Count
+_UI_EvolvingDiseaseTransformer_evolutionCountHardLimit_feature = Evolution Count Hard Limit
+_UI_EvolvingDiseaseTransformer_stopAllEvolution_feature = Stop All Evolution
+_UI_EvolvingDiseaseModel_parentDisease_feature = Parent Disease
+_UI_EvolvingDiseaseModel_transformer_feature = Transformer
+_UI_EvolvingDiseaseModel_evolvedAt_feature = Evolved At
+_UI_EvolvingDiseaseModel_evolutionCount_feature = Evolution Count
+_UI_EvolvingDiseaseModel_crossImmunityRate_feature = Cross Immunity Rate
+_UI_EvolvingDiseaseModel_caseMutationRate_feature = Case Mutation Rate
+_UI_EvolvingDiseaseModel_genomeLength_feature = Genome Length
+_UI_EvolvingDiseaseModel_geneticDistNonlinExponent_feature = Genetic Distance Non-Linear Exponent
+_UI_EvolvingDiseaseModel_genome_feature = Genome
+_UI_EvolvingSIDiseaseModel_caseMutationRate_feature = Case Mutation Rate
+_UI_EvolvingSIDiseaseModel_genomeLength_feature = Genome Length
+_UI_EvolvingSIDiseaseModel_geneticDistNonlinExponent_feature = Genetic Dist Nonlin Exponent
+_UI_EvolvingSIRDiseaseModel_crossImmunityRate_feature = Cross Immunity Rate
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/plugin.xml b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/plugin.xml
new file mode 100644
index 0000000..e8b1ba5
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/plugin.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id$
+-->
+
+<plugin>
+
+	<extension point="org.eclipse.stem.model.metamodel">
+		<metamodel
+       		path="model/evolving.metamodel">
+		</metamodel>
+	</extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http:///org/eclipse/stem/diseasemodels/evolving/evolving.ecore"
+            class="org.eclipse.stem.diseasemodels.evolving.provider.EvolvingItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <package
+            uri="http:///org/eclipse/stem/diseasemodels/evolving/evolving.ecore"
+            class="org.eclipse.stem.diseasemodels.evolving.EvolvingPackage"
+            genModel = "model/evolving.genmodel" />
+   </extension>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="org.eclipse.emf.ecore.Wizard.category.ID"
+            name="%_UI_Wizard_category"/>
+      <wizard
+            id="org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingModelWizardID"
+            name="%_UI_EvolvingModelWizard_label"
+            class="org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingModelWizard"
+            category="org.eclipse.emf.ecore.Wizard.category.ID"
+            icon="icons/full/obj16/EvolvingModelFile.gif">
+         <description>%_UI_EvolvingModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingEditorID"
+            name="%_UI_EvolvingEditor_label"
+            icon="icons/full/obj16/EvolvingModelFile.gif"
+            extensions="evolving"
+            class="org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingEditor"
+            contributorClass="org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingActionBarContributor">
+      </editor>
+   </extension>
+
+	<extension point="org.eclipse.stem.diseasemodels.diseasemodel">
+		<classdef class="org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl"></classdef>
+		<dublin_core
+			creator=""
+			description=""
+			identifier=""
+			source=""
+			title="Evolving SI Disease Model"
+			license=""
+			publisher="">
+		</dublin_core>
+	</extension>
+
+	<extension point="org.eclipse.stem.diseasemodels.diseasemodel">
+		<classdef class="org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl"></classdef>
+		<dublin_core
+			creator=""
+			description=""
+			identifier=""
+			source=""
+			title="Evolving SIR Disease Model"
+			license=""
+			publisher="">
+		</dublin_core>
+	</extension>
+
+	<extension point="org.eclipse.stem.diseasemodels.diseasemodel">
+		<classdef class="org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelImpl"></classdef>
+		<dublin_core
+			creator=""
+			description=""
+			identifier=""
+			source=""
+			title="Evolving SEIR Disease Model"
+			license=""
+			publisher="">
+		</dublin_core>
+	</extension>
+
+  <extension
+        point="org.eclipse.ui.startup">        
+     <startup
+           class="org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingPropertyEditorAdapterFactory">
+     </startup>
+     <startup
+           class="org.eclipse.stem.diseasemodels.evolving.presentation.EvolvingRelativeValueProviderAdapterFactory">
+     </startup>     
+  </extension>
+
+
+</plugin>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingDiseaseModel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingDiseaseModel.java
new file mode 100644
index 0000000..80e3da9
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingDiseaseModel.java
@@ -0,0 +1,184 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Disease Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getParentDisease <em>Parent Disease</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getTransformer <em>Transformer</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolvedAt <em>Evolved At</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getGenome <em>Genome</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolutionCount <em>Evolution Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseModel()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface EvolvingDiseaseModel extends EObject {
+
+	/**
+	 * Returns the value of the '<em><b>Parent Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent Disease</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parent Disease</em>' reference.
+	 * @see #setParentDisease(EvolvingDiseaseModel)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseModel_ParentDisease()
+	 * @model transient="true"
+	 * @generated
+	 */
+	EvolvingDiseaseModel getParentDisease();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getParentDisease <em>Parent Disease</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parent Disease</em>' reference.
+	 * @see #getParentDisease()
+	 * @generated
+	 */
+	void setParentDisease(EvolvingDiseaseModel value);
+
+	/**
+	 * Returns the value of the '<em><b>Transformer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Transformer</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Transformer</em>' reference.
+	 * @see #setTransformer(EvolvingDiseaseTransformer)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseModel_Transformer()
+	 * @model transient="true"
+	 * @generated
+	 */
+	EvolvingDiseaseTransformer getTransformer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getTransformer <em>Transformer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Transformer</em>' reference.
+	 * @see #getTransformer()
+	 * @generated
+	 */
+	void setTransformer(EvolvingDiseaseTransformer value);
+
+	/**
+	 * Returns the value of the '<em><b>Evolved At</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Evolved At</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Evolved At</em>' reference.
+	 * @see #setEvolvedAt(DiseaseModelLabel)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseModel_EvolvedAt()
+	 * @model transient="true"
+	 * @generated
+	 */
+	DiseaseModelLabel getEvolvedAt();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolvedAt <em>Evolved At</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Evolved At</em>' reference.
+	 * @see #getEvolvedAt()
+	 * @generated
+	 */
+	void setEvolvedAt(DiseaseModelLabel value);
+
+	/**
+	 * Returns the value of the '<em><b>Evolution Count</b></em>' attribute.
+	 * The default value is <code>"0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Evolution 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>Evolution Count</em>' attribute.
+	 * @see #setEvolutionCount(int)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseModel_EvolutionCount()
+	 * @model default="0" transient="true"
+	 * @generated
+	 */
+	int getEvolutionCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolutionCount <em>Evolution Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Evolution Count</em>' attribute.
+	 * @see #getEvolutionCount()
+	 * @generated
+	 */
+	void setEvolutionCount(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Genome</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Genome</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Genome</em>' attribute.
+	 * @see #setGenome(boolean[])
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseModel_Genome()
+	 * @model dataType="org.eclipse.stem.diseasemodels.evolving.BooleanArray" transient="true" derived="true"
+	 * @generated
+	 */
+	boolean[] getGenome();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getGenome <em>Genome</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Genome</em>' attribute.
+	 * @see #getGenome()
+	 * @generated
+	 */
+	void setGenome(boolean[] value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	EvolvingDiseaseModel evolve(DiseaseModelLabel label);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	void calculateEvolvedInitialState();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	double getGeneticDistance(EvolvingDiseaseModel otherDiseaseStrain);
+} // EvolvingDiseaseModel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingDiseaseTransformer.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingDiseaseTransformer.java
new file mode 100644
index 0000000..a92b442
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingDiseaseTransformer.java
@@ -0,0 +1,168 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.model.TransformationDecorator;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Disease Transformer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getBaseDisease <em>Base Disease</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolvedDiseases <em>Evolved Diseases</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCount <em>Evolution Count</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCountHardLimit <em>Evolution Count Hard Limit</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#isStopAllEvolution <em>Stop All Evolution</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseTransformer()
+ * @model
+ * @generated
+ */
+public interface EvolvingDiseaseTransformer extends TransformationDecorator {
+
+    /**
+     * This is the top-level segment for all type URI's for labels.
+     * @generated NOT
+     */
+    String URI_TYPE_TRANSFORMER_SEGMENT = "transformer";
+
+    /**
+     * This is the type URI for a Label
+     * @generated NOT
+     */
+    URI URI_TYPE_TRANSFORMER = STEMURI.createTypeURI(URI_TYPE_TRANSFORMER_SEGMENT);
+    
+    
+	/**
+	 * Returns the value of the '<em><b>Base Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Disease</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Disease</em>' reference.
+	 * @see #setBaseDisease(DiseaseModel)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseTransformer_BaseDisease()
+	 * @model required="true"
+	 * @generated
+	 */
+	DiseaseModel getBaseDisease();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getBaseDisease <em>Base Disease</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Disease</em>' reference.
+	 * @see #getBaseDisease()
+	 * @generated
+	 */
+	void setBaseDisease(DiseaseModel value);
+
+	/**
+	 * Returns the value of the '<em><b>Evolved Diseases</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.stem.diseasemodels.standard.DiseaseModel}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Evolved Diseases</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Evolved Diseases</em>' reference list.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseTransformer_EvolvedDiseases()
+	 * @model transient="true"
+	 * @generated
+	 */
+	EList<DiseaseModel> getEvolvedDiseases();
+
+	/**
+	 * Returns the value of the '<em><b>Evolution Count</b></em>' attribute.
+	 * The default value is <code>"0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Evolution 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>Evolution Count</em>' attribute.
+	 * @see #setEvolutionCount(int)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseTransformer_EvolutionCount()
+	 * @model default="0"
+	 * @generated
+	 */
+	int getEvolutionCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCount <em>Evolution Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Evolution Count</em>' attribute.
+	 * @see #getEvolutionCount()
+	 * @generated
+	 */
+	void setEvolutionCount(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Evolution Count Hard Limit</b></em>' attribute.
+	 * The default value is <code>"256"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Evolution Count Hard Limit</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Evolution Count Hard Limit</em>' attribute.
+	 * @see #setEvolutionCountHardLimit(int)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseTransformer_EvolutionCountHardLimit()
+	 * @model default="256"
+	 * @generated
+	 */
+	int getEvolutionCountHardLimit();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCountHardLimit <em>Evolution Count Hard Limit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Evolution Count Hard Limit</em>' attribute.
+	 * @see #getEvolutionCountHardLimit()
+	 * @generated
+	 */
+	void setEvolutionCountHardLimit(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Stop All Evolution</b></em>' attribute.
+	 * The default value is <code>"false"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Stop All Evolution</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Stop All Evolution</em>' attribute.
+	 * @see #setStopAllEvolution(boolean)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingDiseaseTransformer_StopAllEvolution()
+	 * @model default="false" transient="true"
+	 * @generated
+	 */
+	boolean isStopAllEvolution();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#isStopAllEvolution <em>Stop All Evolution</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Stop All Evolution</em>' attribute.
+	 * @see #isStopAllEvolution()
+	 * @generated
+	 */
+	void setStopAllEvolution(boolean value);
+} // EvolvingDiseaseTransformer
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingFactory.java
new file mode 100644
index 0000000..1850692
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingFactory.java
@@ -0,0 +1,127 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+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.stem.diseasemodels.evolving.EvolvingPackage
+ * @generated
+ */
+public interface EvolvingFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EvolvingFactory eINSTANCE = org.eclipse.stem.diseasemodels.evolving.impl.EvolvingFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Disease Transformer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Disease Transformer</em>'.
+	 * @generated
+	 */
+	EvolvingDiseaseTransformer createEvolvingDiseaseTransformer();
+
+	/**
+	 * Returns a new object of class '<em>SI Disease Model Label</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SI Disease Model Label</em>'.
+	 * @generated
+	 */
+	EvolvingSIDiseaseModelLabel createEvolvingSIDiseaseModelLabel();
+
+	/**
+	 * Returns a new object of class '<em>SI Disease Model Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SI Disease Model Label Value</em>'.
+	 * @generated
+	 */
+	EvolvingSIDiseaseModelLabelValue createEvolvingSIDiseaseModelLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>SI Disease Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SI Disease Model</em>'.
+	 * @generated
+	 */
+	EvolvingSIDiseaseModel createEvolvingSIDiseaseModel();
+
+	/**
+	 * Returns a new object of class '<em>SIR Disease Model Label</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SIR Disease Model Label</em>'.
+	 * @generated
+	 */
+	EvolvingSIRDiseaseModelLabel createEvolvingSIRDiseaseModelLabel();
+
+	/**
+	 * Returns a new object of class '<em>SIR Disease Model Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SIR Disease Model Label Value</em>'.
+	 * @generated
+	 */
+	EvolvingSIRDiseaseModelLabelValue createEvolvingSIRDiseaseModelLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>SIR Disease Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SIR Disease Model</em>'.
+	 * @generated
+	 */
+	EvolvingSIRDiseaseModel createEvolvingSIRDiseaseModel();
+
+	/**
+	 * Returns a new object of class '<em>SEIR Disease Model Label</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SEIR Disease Model Label</em>'.
+	 * @generated
+	 */
+	EvolvingSEIRDiseaseModelLabel createEvolvingSEIRDiseaseModelLabel();
+
+	/**
+	 * Returns a new object of class '<em>SEIR Disease Model Label Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SEIR Disease Model Label Value</em>'.
+	 * @generated
+	 */
+	EvolvingSEIRDiseaseModelLabelValue createEvolvingSEIRDiseaseModelLabelValue();
+
+	/**
+	 * Returns a new object of class '<em>SEIR Disease Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SEIR Disease Model</em>'.
+	 * @generated
+	 */
+	EvolvingSEIRDiseaseModel createEvolvingSEIRDiseaseModel();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	EvolvingPackage getEvolvingPackage();
+
+} //EvolvingFactory
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingPackage.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingPackage.java
new file mode 100644
index 0000000..dfa76aa
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingPackage.java
@@ -0,0 +1,2584 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+
+/**
+ * <!-- 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 enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingFactory
+ * @model kind="package"
+ *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ *        annotation="http:///org/eclipse/stem/modelgen/metamodel uri='platform:/resource/org.eclipse.stem.diseasemodels.evolving/model/evolving.metamodel'"
+ * @generated
+ */
+public interface EvolvingPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "evolving";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http:///org/eclipse/stem/diseasemodels/evolving/evolving.ecore";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.stem.diseasemodels.evolving";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EvolvingPackage eINSTANCE = org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl <em>Disease Transformer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingDiseaseTransformer()
+	 * @generated
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER = 0;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__URI = ModelPackage.TRANSFORMATION_DECORATOR__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__TYPE_URI = ModelPackage.TRANSFORMATION_DECORATOR__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__DUBLIN_CORE = ModelPackage.TRANSFORMATION_DECORATOR__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__LABELS_TO_UPDATE = ModelPackage.TRANSFORMATION_DECORATOR__LABELS_TO_UPDATE;
+
+	/**
+	 * The feature id for the '<em><b>Graph</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__GRAPH = ModelPackage.TRANSFORMATION_DECORATOR__GRAPH;
+
+	/**
+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__ENABLED = ModelPackage.TRANSFORMATION_DECORATOR__ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__GRAPH_DECORATED = ModelPackage.TRANSFORMATION_DECORATOR__GRAPH_DECORATED;
+
+	/**
+	 * The feature id for the '<em><b>Progress</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__PROGRESS = ModelPackage.TRANSFORMATION_DECORATOR__PROGRESS;
+
+	/**
+	 * The feature id for the '<em><b>Source Labels</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__SOURCE_LABELS = ModelPackage.TRANSFORMATION_DECORATOR__SOURCE_LABELS;
+
+	/**
+	 * The feature id for the '<em><b>Base Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE = ModelPackage.TRANSFORMATION_DECORATOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Evolved Diseases</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES = ModelPackage.TRANSFORMATION_DECORATOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Evolution Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT = ModelPackage.TRANSFORMATION_DECORATOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Evolution Count Hard Limit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT = ModelPackage.TRANSFORMATION_DECORATOR_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Stop All Evolution</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION = ModelPackage.TRANSFORMATION_DECORATOR_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Disease Transformer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_TRANSFORMER_FEATURE_COUNT = ModelPackage.TRANSFORMATION_DECORATOR_FEATURE_COUNT + 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel <em>Disease Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingDiseaseModel()
+	 * @generated
+	 */
+	int EVOLVING_DISEASE_MODEL = 1;
+
+	/**
+	 * The feature id for the '<em><b>Parent Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_MODEL__PARENT_DISEASE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Transformer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_MODEL__TRANSFORMER = 1;
+
+	/**
+	 * The feature id for the '<em><b>Evolved At</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_MODEL__EVOLVED_AT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Genome</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_MODEL__GENOME = 3;
+
+	/**
+	 * The feature id for the '<em><b>Evolution Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_MODEL__EVOLUTION_COUNT = 4;
+
+	/**
+	 * The number of structural features of the '<em>Disease Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_DISEASE_MODEL_FEATURE_COUNT = 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelImpl <em>SI Disease Model Label</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIDiseaseModelLabel()
+	 * @generated
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL = 2;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__TYPE_URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__DUBLIN_CORE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+	/**
+	 * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__CURRENT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__CURRENT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Identifiable</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__IDENTIFIABLE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIABLE;
+
+	/**
+	 * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__NEXT_VALUE_VALID = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE_VALID;
+
+	/**
+	 * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__NEXT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Decorator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__DECORATOR = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DECORATOR;
+
+	/**
+	 * The feature id for the '<em><b>Node</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__NODE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NODE;
+
+	/**
+	 * The feature id for the '<em><b>Delta Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__DELTA_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DELTA_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Temp Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__TEMP_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TEMP_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Probe Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__PROBE_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__PROBE_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Error Scale</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__ERROR_SCALE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__ERROR_SCALE;
+
+	/**
+	 * The feature id for the '<em><b>Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__IDENTIFIER = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Population Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__POPULATION_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Population Model Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL__POPULATION_MODEL_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_MODEL_LABEL;
+
+	/**
+	 * The number of structural features of the '<em>SI Disease Model Label</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_FEATURE_COUNT = StandardPackage.STANDARD_DISEASE_MODEL_LABEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelValueImpl <em>SI Disease Model Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelValueImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIDiseaseModelLabelValue()
+	 * @generated
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Arrivals</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE__ARRIVALS = StandardPackage.SI_LABEL_VALUE__ARRIVALS;
+
+	/**
+	 * The feature id for the '<em><b>Departures</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE__DEPARTURES = StandardPackage.SI_LABEL_VALUE__DEPARTURES;
+
+	/**
+	 * The feature id for the '<em><b>Population Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE__POPULATION_COUNT = StandardPackage.SI_LABEL_VALUE__POPULATION_COUNT;
+
+	/**
+	 * The feature id for the '<em><b>S</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE__S = StandardPackage.SI_LABEL_VALUE__S;
+
+	/**
+	 * The feature id for the '<em><b>Incidence</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE__INCIDENCE = StandardPackage.SI_LABEL_VALUE__INCIDENCE;
+
+	/**
+	 * The feature id for the '<em><b>Disease Deaths</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE__DISEASE_DEATHS = StandardPackage.SI_LABEL_VALUE__DISEASE_DEATHS;
+
+	/**
+	 * The feature id for the '<em><b>I</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE__I = StandardPackage.SI_LABEL_VALUE__I;
+
+	/**
+	 * The number of structural features of the '<em>SI Disease Model Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE_FEATURE_COUNT = StandardPackage.SI_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl <em>SI Disease Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIDiseaseModel()
+	 * @generated
+	 */
+	int EVOLVING_SI_DISEASE_MODEL = 4;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__URI = StandardPackage.SI__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__TYPE_URI = StandardPackage.SI__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__DUBLIN_CORE = StandardPackage.SI__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__LABELS_TO_UPDATE = StandardPackage.SI__LABELS_TO_UPDATE;
+
+	/**
+	 * The feature id for the '<em><b>Graph</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__GRAPH = StandardPackage.SI__GRAPH;
+
+	/**
+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__ENABLED = StandardPackage.SI__ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__GRAPH_DECORATED = StandardPackage.SI__GRAPH_DECORATED;
+
+	/**
+	 * The feature id for the '<em><b>Progress</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__PROGRESS = StandardPackage.SI__PROGRESS;
+
+	/**
+	 * The feature id for the '<em><b>Add Stochastic Noise</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__ADD_STOCHASTIC_NOISE = StandardPackage.SI__ADD_STOCHASTIC_NOISE;
+
+	/**
+	 * The feature id for the '<em><b>Random Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__RANDOM_SEED = StandardPackage.SI__RANDOM_SEED;
+
+	/**
+	 * The feature id for the '<em><b>Binomial Distribution</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__BINOMIAL_DISTRIBUTION = StandardPackage.SI__BINOMIAL_DISTRIBUTION;
+
+	/**
+	 * The feature id for the '<em><b>Population Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__POPULATION_IDENTIFIER = StandardPackage.SI__POPULATION_IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Time Period</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__TIME_PERIOD = StandardPackage.SI__TIME_PERIOD;
+
+	/**
+	 * The feature id for the '<em><b>Disease Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__DISEASE_NAME = StandardPackage.SI__DISEASE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Finite Difference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__FINITE_DIFFERENCE = StandardPackage.SI__FINITE_DIFFERENCE;
+
+	/**
+	 * The feature id for the '<em><b>Frequency Dependent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__FREQUENCY_DEPENDENT = StandardPackage.SI__FREQUENCY_DEPENDENT;
+
+	/**
+	 * The feature id for the '<em><b>Reference Population Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__REFERENCE_POPULATION_DENSITY = StandardPackage.SI__REFERENCE_POPULATION_DENSITY;
+
+	/**
+	 * The feature id for the '<em><b>Road Network Infectious Proportion</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION = StandardPackage.SI__ROAD_NETWORK_INFECTIOUS_PROPORTION;
+
+	/**
+	 * The feature id for the '<em><b>Characteristic Mixing Distance</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE = StandardPackage.SI__CHARACTERISTIC_MIXING_DISTANCE;
+
+	/**
+	 * The feature id for the '<em><b>Transmission Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__TRANSMISSION_RATE = StandardPackage.SI__TRANSMISSION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Non Linearity Coefficient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__NON_LINEARITY_COEFFICIENT = StandardPackage.SI__NON_LINEARITY_COEFFICIENT;
+
+	/**
+	 * The feature id for the '<em><b>Recovery Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__RECOVERY_RATE = StandardPackage.SI__RECOVERY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Infectious Mortality Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__INFECTIOUS_MORTALITY_RATE = StandardPackage.SI__INFECTIOUS_MORTALITY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Parent Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE = StandardPackage.SI_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Transformer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__TRANSFORMER = StandardPackage.SI_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Evolved At</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT = StandardPackage.SI_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Genome</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__GENOME = StandardPackage.SI_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Evolution Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT = StandardPackage.SI_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Case Mutation Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE = StandardPackage.SI_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Genome Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH = StandardPackage.SI_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Genetic Dist Nonlin Exponent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT = StandardPackage.SI_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>SI Disease Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SI_DISEASE_MODEL_FEATURE_COUNT = StandardPackage.SI_FEATURE_COUNT + 8;
+
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelImpl <em>SIR Disease Model Label</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIRDiseaseModelLabel()
+	 * @generated
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL = 5;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__TYPE_URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__DUBLIN_CORE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+	/**
+	 * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__CURRENT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__CURRENT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Identifiable</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__IDENTIFIABLE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIABLE;
+
+	/**
+	 * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__NEXT_VALUE_VALID = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE_VALID;
+
+	/**
+	 * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__NEXT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Decorator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__DECORATOR = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DECORATOR;
+
+	/**
+	 * The feature id for the '<em><b>Node</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__NODE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NODE;
+
+	/**
+	 * The feature id for the '<em><b>Delta Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__DELTA_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DELTA_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Temp Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__TEMP_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TEMP_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Probe Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__PROBE_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__PROBE_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Error Scale</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__ERROR_SCALE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__ERROR_SCALE;
+
+	/**
+	 * The feature id for the '<em><b>Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__IDENTIFIER = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Population Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__POPULATION_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Population Model Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL__POPULATION_MODEL_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_MODEL_LABEL;
+
+	/**
+	 * The number of structural features of the '<em>SIR Disease Model Label</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_FEATURE_COUNT = StandardPackage.STANDARD_DISEASE_MODEL_LABEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelValueImpl <em>SIR Disease Model Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelValueImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIRDiseaseModelLabelValue()
+	 * @generated
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE = 6;
+
+	/**
+	 * The feature id for the '<em><b>Arrivals</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__ARRIVALS = StandardPackage.SIR_LABEL_VALUE__ARRIVALS;
+
+	/**
+	 * The feature id for the '<em><b>Departures</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__DEPARTURES = StandardPackage.SIR_LABEL_VALUE__DEPARTURES;
+
+	/**
+	 * The feature id for the '<em><b>Population Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__POPULATION_COUNT = StandardPackage.SIR_LABEL_VALUE__POPULATION_COUNT;
+
+	/**
+	 * The feature id for the '<em><b>S</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__S = StandardPackage.SIR_LABEL_VALUE__S;
+
+	/**
+	 * The feature id for the '<em><b>Incidence</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__INCIDENCE = StandardPackage.SIR_LABEL_VALUE__INCIDENCE;
+
+	/**
+	 * The feature id for the '<em><b>Disease Deaths</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__DISEASE_DEATHS = StandardPackage.SIR_LABEL_VALUE__DISEASE_DEATHS;
+
+	/**
+	 * The feature id for the '<em><b>I</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__I = StandardPackage.SIR_LABEL_VALUE__I;
+
+	/**
+	 * The feature id for the '<em><b>R</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE__R = StandardPackage.SIR_LABEL_VALUE__R;
+
+	/**
+	 * The number of structural features of the '<em>SIR Disease Model Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE_FEATURE_COUNT = StandardPackage.SIR_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl <em>SIR Disease Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIRDiseaseModel()
+	 * @generated
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL = 7;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__URI = EVOLVING_SI_DISEASE_MODEL__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__TYPE_URI = EVOLVING_SI_DISEASE_MODEL__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__DUBLIN_CORE = EVOLVING_SI_DISEASE_MODEL__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__LABELS_TO_UPDATE = EVOLVING_SI_DISEASE_MODEL__LABELS_TO_UPDATE;
+
+	/**
+	 * The feature id for the '<em><b>Graph</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__GRAPH = EVOLVING_SI_DISEASE_MODEL__GRAPH;
+
+	/**
+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__ENABLED = EVOLVING_SI_DISEASE_MODEL__ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__GRAPH_DECORATED = EVOLVING_SI_DISEASE_MODEL__GRAPH_DECORATED;
+
+	/**
+	 * The feature id for the '<em><b>Progress</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__PROGRESS = EVOLVING_SI_DISEASE_MODEL__PROGRESS;
+
+	/**
+	 * The feature id for the '<em><b>Add Stochastic Noise</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__ADD_STOCHASTIC_NOISE = EVOLVING_SI_DISEASE_MODEL__ADD_STOCHASTIC_NOISE;
+
+	/**
+	 * The feature id for the '<em><b>Random Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__RANDOM_SEED = EVOLVING_SI_DISEASE_MODEL__RANDOM_SEED;
+
+	/**
+	 * The feature id for the '<em><b>Binomial Distribution</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__BINOMIAL_DISTRIBUTION = EVOLVING_SI_DISEASE_MODEL__BINOMIAL_DISTRIBUTION;
+
+	/**
+	 * The feature id for the '<em><b>Population Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__POPULATION_IDENTIFIER = EVOLVING_SI_DISEASE_MODEL__POPULATION_IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Time Period</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__TIME_PERIOD = EVOLVING_SI_DISEASE_MODEL__TIME_PERIOD;
+
+	/**
+	 * The feature id for the '<em><b>Disease Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__DISEASE_NAME = EVOLVING_SI_DISEASE_MODEL__DISEASE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Finite Difference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__FINITE_DIFFERENCE = EVOLVING_SI_DISEASE_MODEL__FINITE_DIFFERENCE;
+
+	/**
+	 * The feature id for the '<em><b>Frequency Dependent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__FREQUENCY_DEPENDENT = EVOLVING_SI_DISEASE_MODEL__FREQUENCY_DEPENDENT;
+
+	/**
+	 * The feature id for the '<em><b>Reference Population Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__REFERENCE_POPULATION_DENSITY = EVOLVING_SI_DISEASE_MODEL__REFERENCE_POPULATION_DENSITY;
+
+	/**
+	 * The feature id for the '<em><b>Road Network Infectious Proportion</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION = EVOLVING_SI_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION;
+
+	/**
+	 * The feature id for the '<em><b>Characteristic Mixing Distance</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE = EVOLVING_SI_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE;
+
+	/**
+	 * The feature id for the '<em><b>Transmission Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__TRANSMISSION_RATE = EVOLVING_SI_DISEASE_MODEL__TRANSMISSION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Non Linearity Coefficient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__NON_LINEARITY_COEFFICIENT = EVOLVING_SI_DISEASE_MODEL__NON_LINEARITY_COEFFICIENT;
+
+	/**
+	 * The feature id for the '<em><b>Recovery Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__RECOVERY_RATE = EVOLVING_SI_DISEASE_MODEL__RECOVERY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Infectious Mortality Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__INFECTIOUS_MORTALITY_RATE = EVOLVING_SI_DISEASE_MODEL__INFECTIOUS_MORTALITY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Parent Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__PARENT_DISEASE = EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE;
+
+	/**
+	 * The feature id for the '<em><b>Transformer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__TRANSFORMER = EVOLVING_SI_DISEASE_MODEL__TRANSFORMER;
+
+	/**
+	 * The feature id for the '<em><b>Evolved At</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__EVOLVED_AT = EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT;
+
+	/**
+	 * The feature id for the '<em><b>Genome</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__GENOME = EVOLVING_SI_DISEASE_MODEL__GENOME;
+
+	/**
+	 * The feature id for the '<em><b>Evolution Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__EVOLUTION_COUNT = EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT;
+
+	/**
+	 * The feature id for the '<em><b>Case Mutation Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__CASE_MUTATION_RATE = EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Genome Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__GENOME_LENGTH = EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH;
+
+	/**
+	 * The feature id for the '<em><b>Genetic Dist Nonlin Exponent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT = EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT;
+
+	/**
+	 * The feature id for the '<em><b>Immunity Loss Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE = EVOLVING_SI_DISEASE_MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cross Immunity Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE = EVOLVING_SI_DISEASE_MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>SIR Disease Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT = EVOLVING_SI_DISEASE_MODEL_FEATURE_COUNT + 2;
+
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelImpl <em>SEIR Disease Model Label</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSEIRDiseaseModelLabel()
+	 * @generated
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL = 8;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__TYPE_URI = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__DUBLIN_CORE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+	/**
+	 * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__CURRENT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__CURRENT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Identifiable</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__IDENTIFIABLE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIABLE;
+
+	/**
+	 * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__NEXT_VALUE_VALID = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE_VALID;
+
+	/**
+	 * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__NEXT_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NEXT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Decorator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__DECORATOR = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DECORATOR;
+
+	/**
+	 * The feature id for the '<em><b>Node</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__NODE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__NODE;
+
+	/**
+	 * The feature id for the '<em><b>Delta Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__DELTA_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__DELTA_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Temp Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__TEMP_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__TEMP_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Probe Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__PROBE_VALUE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__PROBE_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Error Scale</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__ERROR_SCALE = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__ERROR_SCALE;
+
+	/**
+	 * The feature id for the '<em><b>Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__IDENTIFIER = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Population Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__POPULATION_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Population Model Label</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL__POPULATION_MODEL_LABEL = StandardPackage.STANDARD_DISEASE_MODEL_LABEL__POPULATION_MODEL_LABEL;
+
+	/**
+	 * The number of structural features of the '<em>SEIR Disease Model Label</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_FEATURE_COUNT = StandardPackage.STANDARD_DISEASE_MODEL_LABEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelValueImpl <em>SEIR Disease Model Label Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelValueImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSEIRDiseaseModelLabelValue()
+	 * @generated
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Arrivals</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__ARRIVALS = StandardPackage.SEIR_LABEL_VALUE__ARRIVALS;
+
+	/**
+	 * The feature id for the '<em><b>Departures</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__DEPARTURES = StandardPackage.SEIR_LABEL_VALUE__DEPARTURES;
+
+	/**
+	 * The feature id for the '<em><b>Population Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__POPULATION_COUNT = StandardPackage.SEIR_LABEL_VALUE__POPULATION_COUNT;
+
+	/**
+	 * The feature id for the '<em><b>S</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__S = StandardPackage.SEIR_LABEL_VALUE__S;
+
+	/**
+	 * The feature id for the '<em><b>Incidence</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__INCIDENCE = StandardPackage.SEIR_LABEL_VALUE__INCIDENCE;
+
+	/**
+	 * The feature id for the '<em><b>Disease Deaths</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__DISEASE_DEATHS = StandardPackage.SEIR_LABEL_VALUE__DISEASE_DEATHS;
+
+	/**
+	 * The feature id for the '<em><b>I</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__I = StandardPackage.SEIR_LABEL_VALUE__I;
+
+	/**
+	 * The feature id for the '<em><b>R</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__R = StandardPackage.SEIR_LABEL_VALUE__R;
+
+	/**
+	 * The feature id for the '<em><b>E</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE__E = StandardPackage.SEIR_LABEL_VALUE__E;
+
+	/**
+	 * The number of structural features of the '<em>SEIR Disease Model Label Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE_FEATURE_COUNT = StandardPackage.SEIR_LABEL_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelImpl <em>SEIR Disease Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelImpl
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSEIRDiseaseModel()
+	 * @generated
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL = 10;
+
+	/**
+	 * The feature id for the '<em><b>URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__URI = EVOLVING_SIR_DISEASE_MODEL__URI;
+
+	/**
+	 * The feature id for the '<em><b>Type URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__TYPE_URI = EVOLVING_SIR_DISEASE_MODEL__TYPE_URI;
+
+	/**
+	 * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__DUBLIN_CORE = EVOLVING_SIR_DISEASE_MODEL__DUBLIN_CORE;
+
+	/**
+	 * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__LABELS_TO_UPDATE = EVOLVING_SIR_DISEASE_MODEL__LABELS_TO_UPDATE;
+
+	/**
+	 * The feature id for the '<em><b>Graph</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__GRAPH = EVOLVING_SIR_DISEASE_MODEL__GRAPH;
+
+	/**
+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__ENABLED = EVOLVING_SIR_DISEASE_MODEL__ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__GRAPH_DECORATED = EVOLVING_SIR_DISEASE_MODEL__GRAPH_DECORATED;
+
+	/**
+	 * The feature id for the '<em><b>Progress</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__PROGRESS = EVOLVING_SIR_DISEASE_MODEL__PROGRESS;
+
+	/**
+	 * The feature id for the '<em><b>Add Stochastic Noise</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__ADD_STOCHASTIC_NOISE = EVOLVING_SIR_DISEASE_MODEL__ADD_STOCHASTIC_NOISE;
+
+	/**
+	 * The feature id for the '<em><b>Random Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__RANDOM_SEED = EVOLVING_SIR_DISEASE_MODEL__RANDOM_SEED;
+
+	/**
+	 * The feature id for the '<em><b>Binomial Distribution</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__BINOMIAL_DISTRIBUTION = EVOLVING_SIR_DISEASE_MODEL__BINOMIAL_DISTRIBUTION;
+
+	/**
+	 * The feature id for the '<em><b>Population Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__POPULATION_IDENTIFIER = EVOLVING_SIR_DISEASE_MODEL__POPULATION_IDENTIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Time Period</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__TIME_PERIOD = EVOLVING_SIR_DISEASE_MODEL__TIME_PERIOD;
+
+	/**
+	 * The feature id for the '<em><b>Disease Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__DISEASE_NAME = EVOLVING_SIR_DISEASE_MODEL__DISEASE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Finite Difference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__FINITE_DIFFERENCE = EVOLVING_SIR_DISEASE_MODEL__FINITE_DIFFERENCE;
+
+	/**
+	 * The feature id for the '<em><b>Frequency Dependent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__FREQUENCY_DEPENDENT = EVOLVING_SIR_DISEASE_MODEL__FREQUENCY_DEPENDENT;
+
+	/**
+	 * The feature id for the '<em><b>Reference Population Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__REFERENCE_POPULATION_DENSITY = EVOLVING_SIR_DISEASE_MODEL__REFERENCE_POPULATION_DENSITY;
+
+	/**
+	 * The feature id for the '<em><b>Road Network Infectious Proportion</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION = EVOLVING_SIR_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION;
+
+	/**
+	 * The feature id for the '<em><b>Characteristic Mixing Distance</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE = EVOLVING_SIR_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE;
+
+	/**
+	 * The feature id for the '<em><b>Transmission Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__TRANSMISSION_RATE = EVOLVING_SIR_DISEASE_MODEL__TRANSMISSION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Non Linearity Coefficient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__NON_LINEARITY_COEFFICIENT = EVOLVING_SIR_DISEASE_MODEL__NON_LINEARITY_COEFFICIENT;
+
+	/**
+	 * The feature id for the '<em><b>Recovery Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__RECOVERY_RATE = EVOLVING_SIR_DISEASE_MODEL__RECOVERY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Infectious Mortality Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__INFECTIOUS_MORTALITY_RATE = EVOLVING_SIR_DISEASE_MODEL__INFECTIOUS_MORTALITY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Parent Disease</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__PARENT_DISEASE = EVOLVING_SIR_DISEASE_MODEL__PARENT_DISEASE;
+
+	/**
+	 * The feature id for the '<em><b>Transformer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__TRANSFORMER = EVOLVING_SIR_DISEASE_MODEL__TRANSFORMER;
+
+	/**
+	 * The feature id for the '<em><b>Evolved At</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__EVOLVED_AT = EVOLVING_SIR_DISEASE_MODEL__EVOLVED_AT;
+
+	/**
+	 * The feature id for the '<em><b>Genome</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__GENOME = EVOLVING_SIR_DISEASE_MODEL__GENOME;
+
+	/**
+	 * The feature id for the '<em><b>Evolution Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__EVOLUTION_COUNT = EVOLVING_SIR_DISEASE_MODEL__EVOLUTION_COUNT;
+
+	/**
+	 * The feature id for the '<em><b>Case Mutation Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__CASE_MUTATION_RATE = EVOLVING_SIR_DISEASE_MODEL__CASE_MUTATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Genome Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__GENOME_LENGTH = EVOLVING_SIR_DISEASE_MODEL__GENOME_LENGTH;
+
+	/**
+	 * The feature id for the '<em><b>Genetic Dist Nonlin Exponent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT = EVOLVING_SIR_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT;
+
+	/**
+	 * The feature id for the '<em><b>Immunity Loss Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE = EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Cross Immunity Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE = EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Incubation Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE = EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>SEIR Disease Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVOLVING_SEIR_DISEASE_MODEL_FEATURE_COUNT = EVOLVING_SIR_DISEASE_MODEL_FEATURE_COUNT + 1;
+
+
+	/**
+	 * The meta object id for the '<em>Boolean Array</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getBooleanArray()
+	 * @generated
+	 */
+	int BOOLEAN_ARRAY = 11;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer <em>Disease Transformer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Disease Transformer</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer
+	 * @generated
+	 */
+	EClass getEvolvingDiseaseTransformer();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getBaseDisease <em>Base Disease</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Disease</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getBaseDisease()
+	 * @see #getEvolvingDiseaseTransformer()
+	 * @generated
+	 */
+	EReference getEvolvingDiseaseTransformer_BaseDisease();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolvedDiseases <em>Evolved Diseases</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Evolved Diseases</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolvedDiseases()
+	 * @see #getEvolvingDiseaseTransformer()
+	 * @generated
+	 */
+	EReference getEvolvingDiseaseTransformer_EvolvedDiseases();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCount <em>Evolution Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Evolution Count</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCount()
+	 * @see #getEvolvingDiseaseTransformer()
+	 * @generated
+	 */
+	EAttribute getEvolvingDiseaseTransformer_EvolutionCount();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCountHardLimit <em>Evolution Count Hard Limit</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Evolution Count Hard Limit</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#getEvolutionCountHardLimit()
+	 * @see #getEvolvingDiseaseTransformer()
+	 * @generated
+	 */
+	EAttribute getEvolvingDiseaseTransformer_EvolutionCountHardLimit();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#isStopAllEvolution <em>Stop All Evolution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Stop All Evolution</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer#isStopAllEvolution()
+	 * @see #getEvolvingDiseaseTransformer()
+	 * @generated
+	 */
+	EAttribute getEvolvingDiseaseTransformer_StopAllEvolution();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel <em>Disease Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Disease Model</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel
+	 * @generated
+	 */
+	EClass getEvolvingDiseaseModel();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getParentDisease <em>Parent Disease</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Parent Disease</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getParentDisease()
+	 * @see #getEvolvingDiseaseModel()
+	 * @generated
+	 */
+	EReference getEvolvingDiseaseModel_ParentDisease();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getTransformer <em>Transformer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Transformer</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getTransformer()
+	 * @see #getEvolvingDiseaseModel()
+	 * @generated
+	 */
+	EReference getEvolvingDiseaseModel_Transformer();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolvedAt <em>Evolved At</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Evolved At</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolvedAt()
+	 * @see #getEvolvingDiseaseModel()
+	 * @generated
+	 */
+	EReference getEvolvingDiseaseModel_EvolvedAt();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolutionCount <em>Evolution Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Evolution Count</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getEvolutionCount()
+	 * @see #getEvolvingDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingDiseaseModel_EvolutionCount();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel <em>SI Disease Model Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SI Disease Model Label</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel
+	 * @generated
+	 */
+	EClass getEvolvingSIDiseaseModelLabel();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue <em>SI Disease Model Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SI Disease Model Label Value</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue
+	 * @generated
+	 */
+	EClass getEvolvingSIDiseaseModelLabelValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getGenome <em>Genome</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Genome</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel#getGenome()
+	 * @see #getEvolvingDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingDiseaseModel_Genome();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel <em>SI Disease Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SI Disease Model</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel
+	 * @generated
+	 */
+	EClass getEvolvingSIDiseaseModel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getCaseMutationRate <em>Case Mutation Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Case Mutation Rate</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getCaseMutationRate()
+	 * @see #getEvolvingSIDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingSIDiseaseModel_CaseMutationRate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGenomeLength <em>Genome Length</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Genome Length</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGenomeLength()
+	 * @see #getEvolvingSIDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingSIDiseaseModel_GenomeLength();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGeneticDistNonlinExponent <em>Genetic Dist Nonlin Exponent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Genetic Dist Nonlin Exponent</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGeneticDistNonlinExponent()
+	 * @see #getEvolvingSIDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingSIDiseaseModel_GeneticDistNonlinExponent();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel <em>SIR Disease Model Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SIR Disease Model Label</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel
+	 * @generated
+	 */
+	EClass getEvolvingSIRDiseaseModelLabel();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue <em>SIR Disease Model Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SIR Disease Model Label Value</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue
+	 * @generated
+	 */
+	EClass getEvolvingSIRDiseaseModelLabelValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel <em>SIR Disease Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SIR Disease Model</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel
+	 * @generated
+	 */
+	EClass getEvolvingSIRDiseaseModel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getImmunityLossRate <em>Immunity Loss Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Immunity Loss Rate</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getImmunityLossRate()
+	 * @see #getEvolvingSIRDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingSIRDiseaseModel_ImmunityLossRate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getCrossImmunityRate <em>Cross Immunity Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cross Immunity Rate</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getCrossImmunityRate()
+	 * @see #getEvolvingSIRDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingSIRDiseaseModel_CrossImmunityRate();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel <em>SEIR Disease Model Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SEIR Disease Model Label</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel
+	 * @generated
+	 */
+	EClass getEvolvingSEIRDiseaseModelLabel();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue <em>SEIR Disease Model Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SEIR Disease Model Label Value</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue
+	 * @generated
+	 */
+	EClass getEvolvingSEIRDiseaseModelLabelValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel <em>SEIR Disease Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SEIR Disease Model</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel
+	 * @generated
+	 */
+	EClass getEvolvingSEIRDiseaseModel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel#getIncubationRate <em>Incubation Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Incubation Rate</em>'.
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel#getIncubationRate()
+	 * @see #getEvolvingSEIRDiseaseModel()
+	 * @generated
+	 */
+	EAttribute getEvolvingSEIRDiseaseModel_IncubationRate();
+
+	/**
+	 * Returns the meta object for data type '<em>Boolean Array</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Boolean Array</em>'.
+	 * @model instanceClass="boolean[]"
+	 * @generated
+	 */
+	EDataType getBooleanArray();
+
+	/**
+	 * 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
+	 */
+	EvolvingFactory getEvolvingFactory();
+
+	/**
+	 * <!-- 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 enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl <em>Disease Transformer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingDiseaseTransformer()
+		 * @generated
+		 */
+		EClass EVOLVING_DISEASE_TRANSFORMER = eINSTANCE.getEvolvingDiseaseTransformer();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Disease</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE = eINSTANCE.getEvolvingDiseaseTransformer_BaseDisease();
+
+		/**
+		 * The meta object literal for the '<em><b>Evolved Diseases</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES = eINSTANCE.getEvolvingDiseaseTransformer_EvolvedDiseases();
+
+		/**
+		 * The meta object literal for the '<em><b>Evolution Count</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT = eINSTANCE.getEvolvingDiseaseTransformer_EvolutionCount();
+
+		/**
+		 * The meta object literal for the '<em><b>Evolution Count Hard Limit</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT = eINSTANCE.getEvolvingDiseaseTransformer_EvolutionCountHardLimit();
+
+		/**
+		 * The meta object literal for the '<em><b>Stop All Evolution</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION = eINSTANCE.getEvolvingDiseaseTransformer_StopAllEvolution();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel <em>Disease Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingDiseaseModel()
+		 * @generated
+		 */
+		EClass EVOLVING_DISEASE_MODEL = eINSTANCE.getEvolvingDiseaseModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent Disease</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EVOLVING_DISEASE_MODEL__PARENT_DISEASE = eINSTANCE.getEvolvingDiseaseModel_ParentDisease();
+
+		/**
+		 * The meta object literal for the '<em><b>Transformer</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EVOLVING_DISEASE_MODEL__TRANSFORMER = eINSTANCE.getEvolvingDiseaseModel_Transformer();
+
+		/**
+		 * The meta object literal for the '<em><b>Evolved At</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EVOLVING_DISEASE_MODEL__EVOLVED_AT = eINSTANCE.getEvolvingDiseaseModel_EvolvedAt();
+
+		/**
+		 * The meta object literal for the '<em><b>Evolution Count</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_DISEASE_MODEL__EVOLUTION_COUNT = eINSTANCE.getEvolvingDiseaseModel_EvolutionCount();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelImpl <em>SI Disease Model Label</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIDiseaseModelLabel()
+		 * @generated
+		 */
+		EClass EVOLVING_SI_DISEASE_MODEL_LABEL = eINSTANCE.getEvolvingSIDiseaseModelLabel();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelValueImpl <em>SI Disease Model Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelLabelValueImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIDiseaseModelLabelValue()
+		 * @generated
+		 */
+		EClass EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE = eINSTANCE.getEvolvingSIDiseaseModelLabelValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Genome</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_DISEASE_MODEL__GENOME = eINSTANCE.getEvolvingDiseaseModel_Genome();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl <em>SI Disease Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIDiseaseModel()
+		 * @generated
+		 */
+		EClass EVOLVING_SI_DISEASE_MODEL = eINSTANCE.getEvolvingSIDiseaseModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Case Mutation Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE = eINSTANCE.getEvolvingSIDiseaseModel_CaseMutationRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Genome Length</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH = eINSTANCE.getEvolvingSIDiseaseModel_GenomeLength();
+
+		/**
+		 * The meta object literal for the '<em><b>Genetic Dist Nonlin Exponent</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT = eINSTANCE.getEvolvingSIDiseaseModel_GeneticDistNonlinExponent();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelImpl <em>SIR Disease Model Label</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIRDiseaseModelLabel()
+		 * @generated
+		 */
+		EClass EVOLVING_SIR_DISEASE_MODEL_LABEL = eINSTANCE.getEvolvingSIRDiseaseModelLabel();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelValueImpl <em>SIR Disease Model Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelLabelValueImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIRDiseaseModelLabelValue()
+		 * @generated
+		 */
+		EClass EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE = eINSTANCE.getEvolvingSIRDiseaseModelLabelValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl <em>SIR Disease Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSIRDiseaseModel()
+		 * @generated
+		 */
+		EClass EVOLVING_SIR_DISEASE_MODEL = eINSTANCE.getEvolvingSIRDiseaseModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Immunity Loss Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE = eINSTANCE.getEvolvingSIRDiseaseModel_ImmunityLossRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Cross Immunity Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE = eINSTANCE.getEvolvingSIRDiseaseModel_CrossImmunityRate();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelImpl <em>SEIR Disease Model Label</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSEIRDiseaseModelLabel()
+		 * @generated
+		 */
+		EClass EVOLVING_SEIR_DISEASE_MODEL_LABEL = eINSTANCE.getEvolvingSEIRDiseaseModelLabel();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelValueImpl <em>SEIR Disease Model Label Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelLabelValueImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSEIRDiseaseModelLabelValue()
+		 * @generated
+		 */
+		EClass EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE = eINSTANCE.getEvolvingSEIRDiseaseModelLabelValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelImpl <em>SEIR Disease Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelImpl
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getEvolvingSEIRDiseaseModel()
+		 * @generated
+		 */
+		EClass EVOLVING_SEIR_DISEASE_MODEL = eINSTANCE.getEvolvingSEIRDiseaseModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Incubation Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE = eINSTANCE.getEvolvingSEIRDiseaseModel_IncubationRate();
+
+		/**
+		 * The meta object literal for the '<em>Boolean Array</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.stem.diseasemodels.evolving.impl.EvolvingPackageImpl#getBooleanArray()
+		 * @generated
+		 */
+		EDataType BOOLEAN_ARRAY = eINSTANCE.getBooleanArray();
+
+	}
+
+} //EvolvingPackage
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModel.java
new file mode 100644
index 0000000..3b1f4d9
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModel.java
@@ -0,0 +1,60 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SEIR Disease Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel#getIncubationRate <em>Incubation Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSEIRDiseaseModel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/model/label *='EvolvingSEIRDiseaseModelLabel'"
+ *        annotation="http:///org/eclipse/stem/modelgen/model/labelvalue *='EvolvingSEIRDiseaseModelLabelValue'"
+ *        annotation="http:///org/eclipse/stem/modelgen/model/adapters propertyEditorSuperClass='org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor' stringProviderSuperClass='org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter' labelRelativeValueProviderSuperClass='org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider' labelValueRelativeValueProviderSuperClass='org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider'"
+ *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSEIRDiseaseModel extends EvolvingSIRDiseaseModel {
+	/**
+	 * Returns the value of the '<em><b>Incubation Rate</b></em>' attribute.
+	 * The default value is <code>"0.0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Incubation Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Incubation Rate</em>' attribute.
+	 * @see #setIncubationRate(double)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSEIRDiseaseModel_IncubationRate()
+	 * @model default="0.0"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/constraints minValue='0.0' maxValue='1.0'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Incubation Rate'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getIncubationRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel#getIncubationRate <em>Incubation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Incubation Rate</em>' attribute.
+	 * @see #getIncubationRate()
+	 * @generated
+	 */
+	void setIncubationRate(double value);
+
+
+} // EvolvingSEIRDiseaseModel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModelLabel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModelLabel.java
new file mode 100644
index 0000000..8dfcaff
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModelLabel.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SEIR Disease Model Label</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSEIRDiseaseModelLabel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSEIRDiseaseModelLabel extends StandardDiseaseModelLabel {
+} // EvolvingSEIRDiseaseModelLabel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModelLabelValue.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModelLabelValue.java
new file mode 100644
index 0000000..d0a79ee
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSEIRDiseaseModelLabelValue.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.stem.diseasemodels.standard.SEIRLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SEIR Disease Model Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSEIRDiseaseModelLabelValue()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSEIRDiseaseModelLabelValue extends SEIRLabelValue {
+} // EvolvingSEIRDiseaseModelLabelValue
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModel.java
new file mode 100644
index 0000000..8ba3bba
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModel.java
@@ -0,0 +1,115 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.stem.diseasemodels.standard.SI;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SI Disease Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getCaseMutationRate <em>Case Mutation Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGenomeLength <em>Genome Length</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGeneticDistNonlinExponent <em>Genetic Dist Nonlin Exponent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIDiseaseModel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/model/label *='EvolvingSIDiseaseModelLabel'"
+ *        annotation="http:///org/eclipse/stem/modelgen/model/labelvalue *='EvolvingSIDiseaseModelLabelValue'"
+ *        annotation="http:///org/eclipse/stem/modelgen/model/adapters propertyEditorSuperClass='org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor' stringProviderSuperClass='org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter' labelRelativeValueProviderSuperClass='org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider' labelValueRelativeValueProviderSuperClass='org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider'"
+ *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSIDiseaseModel extends SI, EvolvingDiseaseModel {
+
+	/**
+	 * Returns the value of the '<em><b>Case Mutation Rate</b></em>' attribute.
+	 * The default value is <code>"0.00001"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Case Mutation Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Case Mutation Rate</em>' attribute.
+	 * @see #setCaseMutationRate(double)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIDiseaseModel_CaseMutationRate()
+	 * @model default="0.00001"
+	 * @generated
+	 */
+	double getCaseMutationRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getCaseMutationRate <em>Case Mutation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Case Mutation Rate</em>' attribute.
+	 * @see #getCaseMutationRate()
+	 * @generated
+	 */
+	void setCaseMutationRate(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Genome Length</b></em>' attribute.
+	 * The default value is <code>"5"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Genome Length</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Genome Length</em>' attribute.
+	 * @see #setGenomeLength(int)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIDiseaseModel_GenomeLength()
+	 * @model default="5"
+	 * @generated
+	 */
+	int getGenomeLength();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGenomeLength <em>Genome Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Genome Length</em>' attribute.
+	 * @see #getGenomeLength()
+	 * @generated
+	 */
+	void setGenomeLength(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Genetic Dist Nonlin Exponent</b></em>' attribute.
+	 * The default value is <code>"1.0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Genetic Dist Nonlin Exponent</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Genetic Dist Nonlin Exponent</em>' attribute.
+	 * @see #setGeneticDistNonlinExponent(double)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIDiseaseModel_GeneticDistNonlinExponent()
+	 * @model default="1.0"
+	 * @generated
+	 */
+	double getGeneticDistNonlinExponent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel#getGeneticDistNonlinExponent <em>Genetic Dist Nonlin Exponent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Genetic Dist Nonlin Exponent</em>' attribute.
+	 * @see #getGeneticDistNonlinExponent()
+	 * @generated
+	 */
+	void setGeneticDistNonlinExponent(double value);
+
+} // EvolvingSIDiseaseModel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModelLabel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModelLabel.java
new file mode 100644
index 0000000..88b63da
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModelLabel.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SI Disease Model Label</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIDiseaseModelLabel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSIDiseaseModelLabel extends StandardDiseaseModelLabel {
+} // EvolvingSIDiseaseModelLabel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModelLabelValue.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModelLabelValue.java
new file mode 100644
index 0000000..4323762
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIDiseaseModelLabelValue.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.stem.diseasemodels.standard.SILabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SI Disease Model Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIDiseaseModelLabelValue()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSIDiseaseModelLabelValue extends SILabelValue {
+} // EvolvingSIDiseaseModelLabelValue
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModel.java
new file mode 100644
index 0000000..a90c083
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModel.java
@@ -0,0 +1,88 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SIR Disease Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getImmunityLossRate <em>Immunity Loss Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getCrossImmunityRate <em>Cross Immunity Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIRDiseaseModel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/model/label *='EvolvingSIRDiseaseModelLabel'"
+ *        annotation="http:///org/eclipse/stem/modelgen/model/labelvalue *='EvolvingSIRDiseaseModelLabelValue'"
+ *        annotation="http:///org/eclipse/stem/modelgen/model/adapters propertyEditorSuperClass='org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor' stringProviderSuperClass='org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter' labelRelativeValueProviderSuperClass='org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider' labelValueRelativeValueProviderSuperClass='org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider'"
+ *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSIRDiseaseModel extends EvolvingSIDiseaseModel {
+	/**
+	 * Returns the value of the '<em><b>Immunity Loss Rate</b></em>' attribute.
+	 * The default value is <code>"0.0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Immunity Loss Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Immunity Loss Rate</em>' attribute.
+	 * @see #setImmunityLossRate(double)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIRDiseaseModel_ImmunityLossRate()
+	 * @model default="0.0"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/constraints minValue='0.0' maxValue='1.0'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/modelparam/messages name='Immunity Loss Rate'"
+	 *        annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+	 * @generated
+	 */
+	double getImmunityLossRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getImmunityLossRate <em>Immunity Loss Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Immunity Loss Rate</em>' attribute.
+	 * @see #getImmunityLossRate()
+	 * @generated
+	 */
+	void setImmunityLossRate(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Cross Immunity Rate</b></em>' attribute.
+	 * The default value is <code>"0.75"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cross Immunity Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cross Immunity Rate</em>' attribute.
+	 * @see #setCrossImmunityRate(double)
+	 * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIRDiseaseModel_CrossImmunityRate()
+	 * @model default="0.75"
+	 * @generated
+	 */
+	double getCrossImmunityRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel#getCrossImmunityRate <em>Cross Immunity Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cross Immunity Rate</em>' attribute.
+	 * @see #getCrossImmunityRate()
+	 * @generated
+	 */
+	void setCrossImmunityRate(double value);
+
+
+} // EvolvingSIRDiseaseModel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModelLabel.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModelLabel.java
new file mode 100644
index 0000000..cf81460
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModelLabel.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SIR Disease Model Label</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIRDiseaseModelLabel()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSIRDiseaseModelLabel extends StandardDiseaseModelLabel {
+} // EvolvingSIRDiseaseModelLabel
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModelLabelValue.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModelLabelValue.java
new file mode 100644
index 0000000..460b392
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/EvolvingSIRDiseaseModelLabelValue.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving;
+
+import org.eclipse.stem.diseasemodels.standard.SIRLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SIR Disease Model Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.diseasemodels.evolving.EvolvingPackage#getEvolvingSIRDiseaseModelLabelValue()
+ * @model annotation="http:///org/eclipse/stem/modelgen/generated version='1.0'"
+ * @generated
+ */
+public interface EvolvingSIRDiseaseModelLabelValue extends SIRLabelValue {
+} // EvolvingSIRDiseaseModelLabelValue
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingDiseaseTransformerImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingDiseaseTransformerImpl.java
new file mode 100644
index 0000000..3d3d14f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingDiseaseTransformerImpl.java
@@ -0,0 +1,410 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.BasicInternalEList;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.model.impl.TransformationDecoratorImpl;
+import org.eclipse.stem.core.scenario.ScenarioInitializationException;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Disease Transformer</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl#getBaseDisease <em>Base Disease</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl#getEvolvedDiseases <em>Evolved Diseases</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl#getEvolutionCount <em>Evolution Count</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl#getEvolutionCountHardLimit <em>Evolution Count Hard Limit</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingDiseaseTransformerImpl#isStopAllEvolution <em>Stop All Evolution</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingDiseaseTransformerImpl extends TransformationDecoratorImpl implements EvolvingDiseaseTransformer {
+	/**
+	 * The cached value of the '{@link #getBaseDisease() <em>Base Disease</em>}' reference.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @see #getBaseDisease()
+	 * @generated
+	 * @ordered
+	 */
+	protected DiseaseModel baseDisease;
+	/**
+	 * The cached value of the '{@link #getEvolvedDiseases() <em>Evolved Diseases</em>}' reference list.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @see #getEvolvedDiseases()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DiseaseModel> evolvedDiseases;
+	/**
+	 * The default value of the '{@link #getEvolutionCount() <em>Evolution Count</em>}' attribute.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @see #getEvolutionCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int EVOLUTION_COUNT_EDEFAULT = 0;
+	/**
+	 * The cached value of the '{@link #getEvolutionCount() <em>Evolution Count</em>}' attribute.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @see #getEvolutionCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected int evolutionCount = EVOLUTION_COUNT_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getEvolutionCountHardLimit() <em>Evolution Count Hard Limit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvolutionCountHardLimit()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int EVOLUTION_COUNT_HARD_LIMIT_EDEFAULT = 255;
+	/**
+	 * The cached value of the '{@link #getEvolutionCountHardLimit() <em>Evolution Count Hard Limit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvolutionCountHardLimit()
+	 * @generated
+	 * @ordered
+	 */
+	protected int evolutionCountHardLimit = EVOLUTION_COUNT_HARD_LIMIT_EDEFAULT;
+	/**
+	 * The default value of the '{@link #isStopAllEvolution() <em>Stop All Evolution</em>}' attribute.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @see #isStopAllEvolution()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean STOP_ALL_EVOLUTION_EDEFAULT = false;
+	/**
+	 * The cached value of the '{@link #isStopAllEvolution() <em>Stop All Evolution</em>}' attribute.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @see #isStopAllEvolution()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean stopAllEvolution = STOP_ALL_EVOLUTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public EvolvingDiseaseTransformerImpl() {
+		super();
+		// TODO This probably needs to be inherited from the disease model
+        this.setURI(STEMURI.createURI("/" + STEMURI.generateUniquePart()+"/EvolvingDiseaseTransformerImpl" ) );
+        setTypeURI(URI_TYPE_TRANSFORMER);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_DISEASE_TRANSFORMER;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DiseaseModel getBaseDisease() {
+		if (baseDisease != null && baseDisease.eIsProxy()) {
+			InternalEObject oldBaseDisease = (InternalEObject)baseDisease;
+			baseDisease = (DiseaseModel)eResolveProxy(oldBaseDisease);
+			if (baseDisease != oldBaseDisease) {
+			}
+		}
+		return baseDisease;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DiseaseModel basicGetBaseDisease() {
+		return baseDisease;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBaseDisease(DiseaseModel newBaseDisease) {
+		baseDisease = newBaseDisease;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DiseaseModel> getEvolvedDiseases() {
+		if (evolvedDiseases == null) {
+			evolvedDiseases = new BasicInternalEList<DiseaseModel>(DiseaseModel.class);
+		}
+		return evolvedDiseases;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getEvolutionCount() {
+		return evolutionCount;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvolutionCount(int newEvolutionCount) {
+		evolutionCount = newEvolutionCount;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getEvolutionCountHardLimit() {
+		return evolutionCountHardLimit;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvolutionCountHardLimit(int newEvolutionCountHardLimit) {
+		evolutionCountHardLimit = newEvolutionCountHardLimit;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isStopAllEvolution() {
+		return stopAllEvolution;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStopAllEvolution(boolean newStopAllEvolution) {
+		stopAllEvolution = newStopAllEvolution;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE:
+				if (resolve) return getBaseDisease();
+				return basicGetBaseDisease();
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES:
+				return getEvolvedDiseases();
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT:
+				return getEvolutionCount();
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT:
+				return getEvolutionCountHardLimit();
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION:
+				return isStopAllEvolution();
+		}
+		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 EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE:
+				setBaseDisease((DiseaseModel)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES:
+				getEvolvedDiseases().clear();
+				getEvolvedDiseases().addAll((Collection<? extends DiseaseModel>)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT:
+				setEvolutionCount((Integer)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT:
+				setEvolutionCountHardLimit((Integer)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION:
+				setStopAllEvolution((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE:
+				setBaseDisease((DiseaseModel)null);
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES:
+				getEvolvedDiseases().clear();
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT:
+				setEvolutionCount(EVOLUTION_COUNT_EDEFAULT);
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT:
+				setEvolutionCountHardLimit(EVOLUTION_COUNT_HARD_LIMIT_EDEFAULT);
+				return;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION:
+				setStopAllEvolution(STOP_ALL_EVOLUTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE:
+				return baseDisease != null;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES:
+				return evolvedDiseases != null && !evolvedDiseases.isEmpty();
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT:
+				return evolutionCount != EVOLUTION_COUNT_EDEFAULT;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT:
+				return evolutionCountHardLimit != EVOLUTION_COUNT_HARD_LIMIT_EDEFAULT;
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION:
+				return stopAllEvolution != STOP_ALL_EVOLUTION_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(" (evolutionCount: ");
+		result.append(evolutionCount);
+		result.append(", evolutionCountHardLimit: ");
+		result.append(evolutionCountHardLimit);
+		result.append(", stopAllEvolution: ");
+		result.append(stopAllEvolution);
+		result.append(')');
+		return result.toString();
+	}
+
+	@Override
+	public void updateLabels(STEMTime time, long timerPeriod, int cycle) {
+
+		// if we have hit the hard limit on max mutations (max Diseases)
+		if (this.stopAllEvolution) {
+			return;
+		}
+
+//		int evolvingLabelCount = 0;
+//		int diseaseLabelCount = 0;
+//		int totalLabelCount = 0;
+//		int evolutions = 0;
+
+		Set<URI> exisitingNodeKeys = new HashSet<URI>(getGraph().getNodeLabels().keySet());
+
+		for (URI nodeUri : exisitingNodeKeys) {
+
+			// for (Entry<URI,NodeLabel> nodeLabel :
+			// getGraph().getNodeLabels().entrySet()) {
+
+			NodeLabel nodeLabel = getGraph().getNodeLabels().get(nodeUri);
+
+			//totalLabelCount++;
+			if (nodeLabel instanceof DiseaseModelLabel) {
+				//diseaseLabelCount++;
+				DiseaseModelLabel dmLabel = (DiseaseModelLabel) nodeLabel;
+				if (dmLabel.getDecorator() instanceof EvolvingDiseaseModel) {
+					//evolvingLabelCount++;
+					EvolvingDiseaseModel baseDiseaseModel = (EvolvingDiseaseModel) dmLabel.getDecorator();
+
+					// ********** EVOLVE **********
+					EvolvingDiseaseModel evolvedDiseaseModel = baseDiseaseModel.evolve(dmLabel);
+					if (evolvedDiseaseModel != null) {
+						evolutionCount++;
+						if (evolutionCount >= evolutionCountHardLimit) {
+							System.out.println("Evolution Count Exceeds hard limit");
+							this.stopAllEvolution = true;
+						}
+						try {
+							DiseaseModel evolvedDiseaseAsModel = ((DiseaseModel) evolvedDiseaseModel);
+							getEvolvedDiseases().add(evolvedDiseaseAsModel);
+							getGraph().getDecorators().add(evolvedDiseaseAsModel);
+							evolvedDiseaseAsModel.decorateGraph(time);
+							evolvedDiseaseAsModel.setGraphDecorated(true);
+							evolvedDiseaseModel.calculateEvolvedInitialState();
+
+							System.err.println("*** Mutation ***" + evolutionCount);
+						} catch (ScenarioInitializationException sne) {
+							System.err.println("Error decorating mutated disease model");
+						}
+					}
+				}
+			}
+		}
+
+		 //System.err.println("- Evolution Transform Complete ["+hashCode()+"]" +
+		 //"{"+cycle+","+totalLabelCount+","+diseaseLabelCount+","+evolvingLabelCount+","+getEvolutionCount()+"}");
+	}
+
+	@Override
+	public void decorateGraph(STEMTime time) throws ScenarioInitializationException {
+
+	}
+
+	@Override
+	public void resetLabels() throws ScenarioInitializationException {
+		super.resetLabels();
+		evolutionCount = EVOLUTION_COUNT_EDEFAULT;
+		getEvolvedDiseases().clear();
+	}
+
+} // EvolvingDiseaseTransformerImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingFactoryImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingFactoryImpl.java
new file mode 100644
index 0000000..5e21a9f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingFactoryImpl.java
@@ -0,0 +1,256 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+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;
+import org.eclipse.stem.diseasemodels.evolving.*;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingFactoryImpl extends EFactoryImpl implements EvolvingFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static EvolvingFactory init() {
+		try {
+			EvolvingFactory theEvolvingFactory = (EvolvingFactory)EPackage.Registry.INSTANCE.getEFactory(EvolvingPackage.eNS_URI);
+			if (theEvolvingFactory != null) {
+				return theEvolvingFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new EvolvingFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER: return createEvolvingDiseaseTransformer();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL_LABEL: return createEvolvingSIDiseaseModelLabel();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE: return createEvolvingSIDiseaseModelLabelValue();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL: return createEvolvingSIDiseaseModel();
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_LABEL: return createEvolvingSIRDiseaseModelLabel();
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE: return createEvolvingSIRDiseaseModelLabelValue();
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL: return createEvolvingSIRDiseaseModel();
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL_LABEL: return createEvolvingSEIRDiseaseModelLabel();
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE: return createEvolvingSEIRDiseaseModelLabelValue();
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL: return createEvolvingSEIRDiseaseModel();
+			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 EvolvingPackage.BOOLEAN_ARRAY:
+				return createBooleanArrayFromString(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 EvolvingPackage.BOOLEAN_ARRAY:
+				return convertBooleanArrayToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingDiseaseTransformer createEvolvingDiseaseTransformer() {
+		EvolvingDiseaseTransformerImpl evolvingDiseaseTransformer = new EvolvingDiseaseTransformerImpl();
+		return evolvingDiseaseTransformer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelLabel createEvolvingSIDiseaseModelLabel() {
+		EvolvingSIDiseaseModelLabelImpl evolvingSIDiseaseModelLabel = new EvolvingSIDiseaseModelLabelImpl();
+		return evolvingSIDiseaseModelLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelLabelValue createEvolvingSIDiseaseModelLabelValue() {
+		EvolvingSIDiseaseModelLabelValueImpl evolvingSIDiseaseModelLabelValue = new EvolvingSIDiseaseModelLabelValueImpl();
+		return evolvingSIDiseaseModelLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModel createEvolvingSIDiseaseModel() {
+		EvolvingSIDiseaseModelImpl evolvingSIDiseaseModel = new EvolvingSIDiseaseModelImpl();
+		return evolvingSIDiseaseModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelLabel createEvolvingSIRDiseaseModelLabel() {
+		EvolvingSIRDiseaseModelLabelImpl evolvingSIRDiseaseModelLabel = new EvolvingSIRDiseaseModelLabelImpl();
+		return evolvingSIRDiseaseModelLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelLabelValue createEvolvingSIRDiseaseModelLabelValue() {
+		EvolvingSIRDiseaseModelLabelValueImpl evolvingSIRDiseaseModelLabelValue = new EvolvingSIRDiseaseModelLabelValueImpl();
+		return evolvingSIRDiseaseModelLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModel createEvolvingSIRDiseaseModel() {
+		EvolvingSIRDiseaseModelImpl evolvingSIRDiseaseModel = new EvolvingSIRDiseaseModelImpl();
+		return evolvingSIRDiseaseModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelLabel createEvolvingSEIRDiseaseModelLabel() {
+		EvolvingSEIRDiseaseModelLabelImpl evolvingSEIRDiseaseModelLabel = new EvolvingSEIRDiseaseModelLabelImpl();
+		return evolvingSEIRDiseaseModelLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelLabelValue createEvolvingSEIRDiseaseModelLabelValue() {
+		EvolvingSEIRDiseaseModelLabelValueImpl evolvingSEIRDiseaseModelLabelValue = new EvolvingSEIRDiseaseModelLabelValueImpl();
+		return evolvingSEIRDiseaseModelLabelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModel createEvolvingSEIRDiseaseModel() {
+		EvolvingSEIRDiseaseModelImpl evolvingSEIRDiseaseModel = new EvolvingSEIRDiseaseModelImpl();
+		return evolvingSEIRDiseaseModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean[] createBooleanArrayFromString(EDataType eDataType, String initialValue) {
+		return (boolean[])super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertBooleanArrayToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingPackage getEvolvingPackage() {
+		return (EvolvingPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static EvolvingPackage getPackage() {
+		return EvolvingPackage.eINSTANCE;
+	}
+
+} //EvolvingFactoryImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingPackageImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingPackageImpl.java
new file mode 100644
index 0000000..aa1d0b6
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingPackageImpl.java
@@ -0,0 +1,860 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingPackageImpl extends EPackageImpl implements EvolvingPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingDiseaseTransformerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingDiseaseModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSIDiseaseModelLabelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSIDiseaseModelLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSIDiseaseModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSIRDiseaseModelLabelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSIRDiseaseModelLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSIRDiseaseModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSEIRDiseaseModelLabelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSEIRDiseaseModelLabelValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evolvingSEIRDiseaseModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType booleanArrayEDataType = 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.stem.diseasemodels.evolving.EvolvingPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private EvolvingPackageImpl() {
+		super(eNS_URI, EvolvingFactory.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 EvolvingPackage#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 EvolvingPackage init() {
+		if (isInited) return (EvolvingPackage)EPackage.Registry.INSTANCE.getEPackage(EvolvingPackage.eNS_URI);
+
+		// Obtain or create and register package
+		EvolvingPackageImpl theEvolvingPackage = (EvolvingPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof EvolvingPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new EvolvingPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		StandardPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theEvolvingPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theEvolvingPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theEvolvingPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(EvolvingPackage.eNS_URI, theEvolvingPackage);
+		return theEvolvingPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingDiseaseTransformer() {
+		return evolvingDiseaseTransformerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEvolvingDiseaseTransformer_BaseDisease() {
+		return (EReference)evolvingDiseaseTransformerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEvolvingDiseaseTransformer_EvolvedDiseases() {
+		return (EReference)evolvingDiseaseTransformerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingDiseaseTransformer_EvolutionCount() {
+		return (EAttribute)evolvingDiseaseTransformerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingDiseaseTransformer_EvolutionCountHardLimit() {
+		return (EAttribute)evolvingDiseaseTransformerEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingDiseaseTransformer_StopAllEvolution() {
+		return (EAttribute)evolvingDiseaseTransformerEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingDiseaseModel() {
+		return evolvingDiseaseModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEvolvingDiseaseModel_ParentDisease() {
+		return (EReference)evolvingDiseaseModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEvolvingDiseaseModel_Transformer() {
+		return (EReference)evolvingDiseaseModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEvolvingDiseaseModel_EvolvedAt() {
+		return (EReference)evolvingDiseaseModelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingDiseaseModel_EvolutionCount() {
+		return (EAttribute)evolvingDiseaseModelEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSIDiseaseModelLabel() {
+		return evolvingSIDiseaseModelLabelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSIDiseaseModelLabelValue() {
+		return evolvingSIDiseaseModelLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingDiseaseModel_Genome() {
+		return (EAttribute)evolvingDiseaseModelEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSIDiseaseModel() {
+		return evolvingSIDiseaseModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingSIDiseaseModel_CaseMutationRate() {
+		return (EAttribute)evolvingSIDiseaseModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingSIDiseaseModel_GenomeLength() {
+		return (EAttribute)evolvingSIDiseaseModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingSIDiseaseModel_GeneticDistNonlinExponent() {
+		return (EAttribute)evolvingSIDiseaseModelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSIRDiseaseModelLabel() {
+		return evolvingSIRDiseaseModelLabelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSIRDiseaseModelLabelValue() {
+		return evolvingSIRDiseaseModelLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSIRDiseaseModel() {
+		return evolvingSIRDiseaseModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingSIRDiseaseModel_ImmunityLossRate() {
+		return (EAttribute)evolvingSIRDiseaseModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingSIRDiseaseModel_CrossImmunityRate() {
+		return (EAttribute)evolvingSIRDiseaseModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSEIRDiseaseModelLabel() {
+		return evolvingSEIRDiseaseModelLabelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSEIRDiseaseModelLabelValue() {
+		return evolvingSEIRDiseaseModelLabelValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvolvingSEIRDiseaseModel() {
+		return evolvingSEIRDiseaseModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvolvingSEIRDiseaseModel_IncubationRate() {
+		return (EAttribute)evolvingSEIRDiseaseModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getBooleanArray() {
+		return booleanArrayEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingFactory getEvolvingFactory() {
+		return (EvolvingFactory)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
+		evolvingDiseaseTransformerEClass = createEClass(EVOLVING_DISEASE_TRANSFORMER);
+		createEReference(evolvingDiseaseTransformerEClass, EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE);
+		createEReference(evolvingDiseaseTransformerEClass, EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES);
+		createEAttribute(evolvingDiseaseTransformerEClass, EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT);
+		createEAttribute(evolvingDiseaseTransformerEClass, EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT);
+		createEAttribute(evolvingDiseaseTransformerEClass, EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION);
+
+		evolvingDiseaseModelEClass = createEClass(EVOLVING_DISEASE_MODEL);
+		createEReference(evolvingDiseaseModelEClass, EVOLVING_DISEASE_MODEL__PARENT_DISEASE);
+		createEReference(evolvingDiseaseModelEClass, EVOLVING_DISEASE_MODEL__TRANSFORMER);
+		createEReference(evolvingDiseaseModelEClass, EVOLVING_DISEASE_MODEL__EVOLVED_AT);
+		createEAttribute(evolvingDiseaseModelEClass, EVOLVING_DISEASE_MODEL__GENOME);
+		createEAttribute(evolvingDiseaseModelEClass, EVOLVING_DISEASE_MODEL__EVOLUTION_COUNT);
+
+		evolvingSIDiseaseModelLabelEClass = createEClass(EVOLVING_SI_DISEASE_MODEL_LABEL);
+
+		evolvingSIDiseaseModelLabelValueEClass = createEClass(EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE);
+
+		evolvingSIDiseaseModelEClass = createEClass(EVOLVING_SI_DISEASE_MODEL);
+		createEAttribute(evolvingSIDiseaseModelEClass, EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE);
+		createEAttribute(evolvingSIDiseaseModelEClass, EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH);
+		createEAttribute(evolvingSIDiseaseModelEClass, EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT);
+
+		evolvingSIRDiseaseModelLabelEClass = createEClass(EVOLVING_SIR_DISEASE_MODEL_LABEL);
+
+		evolvingSIRDiseaseModelLabelValueEClass = createEClass(EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE);
+
+		evolvingSIRDiseaseModelEClass = createEClass(EVOLVING_SIR_DISEASE_MODEL);
+		createEAttribute(evolvingSIRDiseaseModelEClass, EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE);
+		createEAttribute(evolvingSIRDiseaseModelEClass, EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE);
+
+		evolvingSEIRDiseaseModelLabelEClass = createEClass(EVOLVING_SEIR_DISEASE_MODEL_LABEL);
+
+		evolvingSEIRDiseaseModelLabelValueEClass = createEClass(EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE);
+
+		evolvingSEIRDiseaseModelEClass = createEClass(EVOLVING_SEIR_DISEASE_MODEL);
+		createEAttribute(evolvingSEIRDiseaseModelEClass, EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE);
+
+		// Create data types
+		booleanArrayEDataType = createEDataType(BOOLEAN_ARRAY);
+	}
+
+	/**
+	 * <!-- 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
+		ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+		StandardPackage theStandardPackage = (StandardPackage)EPackage.Registry.INSTANCE.getEPackage(StandardPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		evolvingDiseaseTransformerEClass.getESuperTypes().add(theModelPackage.getTransformationDecorator());
+		evolvingSIDiseaseModelLabelEClass.getESuperTypes().add(theStandardPackage.getStandardDiseaseModelLabel());
+		evolvingSIDiseaseModelLabelValueEClass.getESuperTypes().add(theStandardPackage.getSILabelValue());
+		evolvingSIDiseaseModelEClass.getESuperTypes().add(theStandardPackage.getSI());
+		evolvingSIDiseaseModelEClass.getESuperTypes().add(this.getEvolvingDiseaseModel());
+		evolvingSIRDiseaseModelLabelEClass.getESuperTypes().add(theStandardPackage.getStandardDiseaseModelLabel());
+		evolvingSIRDiseaseModelLabelValueEClass.getESuperTypes().add(theStandardPackage.getSIRLabelValue());
+		evolvingSIRDiseaseModelEClass.getESuperTypes().add(this.getEvolvingSIDiseaseModel());
+		evolvingSEIRDiseaseModelLabelEClass.getESuperTypes().add(theStandardPackage.getStandardDiseaseModelLabel());
+		evolvingSEIRDiseaseModelLabelValueEClass.getESuperTypes().add(theStandardPackage.getSEIRLabelValue());
+		evolvingSEIRDiseaseModelEClass.getESuperTypes().add(this.getEvolvingSIRDiseaseModel());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(evolvingDiseaseTransformerEClass, EvolvingDiseaseTransformer.class, "EvolvingDiseaseTransformer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getEvolvingDiseaseTransformer_BaseDisease(), theStandardPackage.getDiseaseModel(), null, "baseDisease", null, 1, 1, EvolvingDiseaseTransformer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEvolvingDiseaseTransformer_EvolvedDiseases(), theStandardPackage.getDiseaseModel(), null, "evolvedDiseases", null, 0, -1, EvolvingDiseaseTransformer.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingDiseaseTransformer_EvolutionCount(), ecorePackage.getEInt(), "evolutionCount", "0", 0, 1, EvolvingDiseaseTransformer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingDiseaseTransformer_EvolutionCountHardLimit(), ecorePackage.getEInt(), "evolutionCountHardLimit", "256", 0, 1, EvolvingDiseaseTransformer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingDiseaseTransformer_StopAllEvolution(), ecorePackage.getEBoolean(), "stopAllEvolution", "false", 0, 1, EvolvingDiseaseTransformer.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(evolvingDiseaseModelEClass, EvolvingDiseaseModel.class, "EvolvingDiseaseModel", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getEvolvingDiseaseModel_ParentDisease(), this.getEvolvingDiseaseModel(), null, "parentDisease", null, 0, 1, EvolvingDiseaseModel.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEvolvingDiseaseModel_Transformer(), this.getEvolvingDiseaseTransformer(), null, "transformer", null, 0, 1, EvolvingDiseaseModel.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEvolvingDiseaseModel_EvolvedAt(), theStandardPackage.getDiseaseModelLabel(), null, "evolvedAt", null, 0, 1, EvolvingDiseaseModel.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingDiseaseModel_Genome(), this.getBooleanArray(), "genome", null, 0, 1, EvolvingDiseaseModel.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingDiseaseModel_EvolutionCount(), ecorePackage.getEInt(), "evolutionCount", "0", 0, 1, EvolvingDiseaseModel.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		EOperation op = addEOperation(evolvingDiseaseModelEClass, this.getEvolvingDiseaseModel(), "evolve", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, theStandardPackage.getDiseaseModelLabel(), "label", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(evolvingDiseaseModelEClass, null, "calculateEvolvedInitialState", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = addEOperation(evolvingDiseaseModelEClass, ecorePackage.getEDouble(), "getGeneticDistance", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getEvolvingDiseaseModel(), "otherDiseaseStrain", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(evolvingSIDiseaseModelLabelEClass, EvolvingSIDiseaseModelLabel.class, "EvolvingSIDiseaseModelLabel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(evolvingSIDiseaseModelLabelValueEClass, EvolvingSIDiseaseModelLabelValue.class, "EvolvingSIDiseaseModelLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(evolvingSIDiseaseModelEClass, EvolvingSIDiseaseModel.class, "EvolvingSIDiseaseModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEvolvingSIDiseaseModel_CaseMutationRate(), ecorePackage.getEDouble(), "caseMutationRate", "0.00001", 0, 1, EvolvingSIDiseaseModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingSIDiseaseModel_GenomeLength(), ecorePackage.getEInt(), "genomeLength", "5", 0, 1, EvolvingSIDiseaseModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingSIDiseaseModel_GeneticDistNonlinExponent(), ecorePackage.getEDouble(), "geneticDistNonlinExponent", "1.0", 0, 1, EvolvingSIDiseaseModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(evolvingSIRDiseaseModelLabelEClass, EvolvingSIRDiseaseModelLabel.class, "EvolvingSIRDiseaseModelLabel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(evolvingSIRDiseaseModelLabelValueEClass, EvolvingSIRDiseaseModelLabelValue.class, "EvolvingSIRDiseaseModelLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(evolvingSIRDiseaseModelEClass, EvolvingSIRDiseaseModel.class, "EvolvingSIRDiseaseModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEvolvingSIRDiseaseModel_ImmunityLossRate(), ecorePackage.getEDouble(), "immunityLossRate", "0.0", 0, 1, EvolvingSIRDiseaseModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvolvingSIRDiseaseModel_CrossImmunityRate(), ecorePackage.getEDouble(), "crossImmunityRate", "0.75", 0, 1, EvolvingSIRDiseaseModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(evolvingSEIRDiseaseModelLabelEClass, EvolvingSEIRDiseaseModelLabel.class, "EvolvingSEIRDiseaseModelLabel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(evolvingSEIRDiseaseModelLabelValueEClass, EvolvingSEIRDiseaseModelLabelValue.class, "EvolvingSEIRDiseaseModelLabelValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(evolvingSEIRDiseaseModelEClass, EvolvingSEIRDiseaseModel.class, "EvolvingSEIRDiseaseModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEvolvingSEIRDiseaseModel_IncubationRate(), ecorePackage.getEDouble(), "incubationRate", "0.0", 0, 1, EvolvingSEIRDiseaseModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize data types
+		initEDataType(booleanArrayEDataType, boolean[].class, "BooleanArray", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/stem/modelgen/generated
+		createGeneratedAnnotations();
+		// http:///org/eclipse/stem/modelgen/metamodel
+		createMetamodelAnnotations();
+		// http:///org/eclipse/stem/modelgen/model/label
+		createLabelAnnotations();
+		// http:///org/eclipse/stem/modelgen/model/labelvalue
+		createLabelvalueAnnotations();
+		// http:///org/eclipse/stem/modelgen/model/adapters
+		createAdaptersAnnotations();
+		// http:///org/eclipse/stem/modelgen/modelparam/constraints
+		createConstraintsAnnotations();
+		// http:///org/eclipse/stem/modelgen/modelparam/messages
+		createMessagesAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/generated</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createGeneratedAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/generated";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSIDiseaseModelLabelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSIDiseaseModelLabelValueEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSIDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSIRDiseaseModelLabelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSIRDiseaseModelLabelValueEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingSIRDiseaseModel_ImmunityLossRate(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSEIRDiseaseModelLabelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSEIRDiseaseModelLabelValueEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (evolvingSEIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingSEIRDiseaseModel_IncubationRate(), 
+		   source, 
+		   new String[] {
+			 "version", "1.0"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/metamodel</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createMetamodelAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/metamodel";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "uri", "platform:/resource/org.eclipse.stem.diseasemodels.evolving/model/evolving.metamodel"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/model/label</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createLabelAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/model/label";	
+		addAnnotation
+		  (evolvingSIDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingSIDiseaseModelLabel"
+		   });	
+		addAnnotation
+		  (evolvingSIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingSIRDiseaseModelLabel"
+		   });	
+		addAnnotation
+		  (evolvingSEIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingSEIRDiseaseModelLabel"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/model/labelvalue</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createLabelvalueAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/model/labelvalue";	
+		addAnnotation
+		  (evolvingSIDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingSIDiseaseModelLabelValue"
+		   });	
+		addAnnotation
+		  (evolvingSIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingSIRDiseaseModelLabelValue"
+		   });	
+		addAnnotation
+		  (evolvingSEIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "*", "EvolvingSEIRDiseaseModelLabelValue"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/model/adapters</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createAdaptersAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/model/adapters";	
+		addAnnotation
+		  (evolvingSIDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "propertyEditorSuperClass", "org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor",
+			 "stringProviderSuperClass", "org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter",
+			 "labelRelativeValueProviderSuperClass", "org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider",
+			 "labelValueRelativeValueProviderSuperClass", "org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider"
+		   });	
+		addAnnotation
+		  (evolvingSIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "propertyEditorSuperClass", "org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor",
+			 "stringProviderSuperClass", "org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter",
+			 "labelRelativeValueProviderSuperClass", "org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider",
+			 "labelValueRelativeValueProviderSuperClass", "org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider"
+		   });	
+		addAnnotation
+		  (evolvingSEIRDiseaseModelEClass, 
+		   source, 
+		   new String[] {
+			 "propertyEditorSuperClass", "org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor",
+			 "stringProviderSuperClass", "org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter",
+			 "labelRelativeValueProviderSuperClass", "org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider",
+			 "labelValueRelativeValueProviderSuperClass", "org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/modelparam/constraints</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createConstraintsAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/modelparam/constraints";	
+		addAnnotation
+		  (getEvolvingSIRDiseaseModel_ImmunityLossRate(), 
+		   source, 
+		   new String[] {
+			 "minValue", "0.0",
+			 "maxValue", "1.0"
+		   });	
+		addAnnotation
+		  (getEvolvingSEIRDiseaseModel_IncubationRate(), 
+		   source, 
+		   new String[] {
+			 "minValue", "0.0",
+			 "maxValue", "1.0"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/stem/modelgen/modelparam/messages</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createMessagesAnnotations() {
+		String source = "http:///org/eclipse/stem/modelgen/modelparam/messages";	
+		addAnnotation
+		  (getEvolvingSIRDiseaseModel_ImmunityLossRate(), 
+		   source, 
+		   new String[] {
+			 "name", "Immunity Loss Rate"
+		   });	
+		addAnnotation
+		  (getEvolvingSEIRDiseaseModel_IncubationRate(), 
+		   source, 
+		   new String[] {
+			 "name", "Incubation Rate"
+		   });
+	}
+
+} //EvolvingPackageImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelImpl.java
new file mode 100644
index 0000000..4683ef5
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelImpl.java
@@ -0,0 +1,553 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.ExchangePool;
+import org.eclipse.stem.core.graph.ExchangeType;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SEIRLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+import org.eclipse.stem.diseasemodels.standard.impl.SEIRLabelValueImpl;
+import org.eclipse.stem.interventions.StandardInterventionLabel;
+import org.eclipse.stem.interventions.StandardInterventionLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SEIR Disease Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSEIRDiseaseModelImpl#getIncubationRate <em>Incubation Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingSEIRDiseaseModelImpl extends EvolvingSIRDiseaseModelImpl implements EvolvingSEIRDiseaseModel {
+	/**
+	 * The default value of the '{@link #getIncubationRate() <em>Incubation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncubationRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double INCUBATION_RATE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getIncubationRate() <em>Incubation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncubationRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double incubationRate = INCUBATION_RATE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelImpl() {
+		super();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SEIR_DISEASE_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getIncubationRate() {
+		return incubationRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIncubationRate(double newIncubationRate) {
+		incubationRate = newIncubationRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE:
+				return getIncubationRate();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE:
+				setIncubationRate((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE:
+				setIncubationRate(INCUBATION_RATE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE:
+				return incubationRate != INCUBATION_RATE_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(" (incubationRate: ");
+		result.append(incubationRate);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * @see org.eclipse.stem.diseasemodels.standard.impl.SIImpl#computeDiseaseDeltas(StandardDiseaseModelLabelValue,
+	 *      StandardDiseaseModelLabel, long)
+	 * @generated NOT
+	 */
+	@Override
+	public void calculateDeltas(STEMTime time, double t, long timeDelta, EList<DynamicLabel> labels)  {
+		
+		
+		final double adjustedInfectiousMortalityRate = getAdjustedInfectiousMortalityRate(timeDelta);
+		double transmissionRate = getAdjustedTransmissionRate(timeDelta);
+		final double adjustedRecoveryRate = getAdjustedRecoveryRate(timeDelta);
+		final double adjustedImmunityLossRate = getAdjustedImmunityLossRate(timeDelta);
+		final double adjustedIncubationRate = getAdjustedIncubationRate(timeDelta);
+		
+		for(int _i=0;_i<labels.size();++_i) {
+			final DynamicLabel label =  labels.get(_i);
+			IntegrationLabel ilabel = (IntegrationLabel)label;
+
+			StandardDiseaseModelLabel diseaseLabel = (StandardDiseaseModelLabel)ilabel;
+			StandardDiseaseModelLabelValue currentState = (StandardDiseaseModelLabelValue)ilabel.getProbeValue();
+			StandardDiseaseModelLabelValue deltaValue = (StandardDiseaseModelLabelValue)ilabel.getDeltaValue();
+
+			deltaValue.reset();
+			
+			final SEIRLabelValue currentSEIR = (SEIRLabelValue) currentState;
+
+			// Compute deaths
+			
+			final double diseaseDeaths = adjustedInfectiousMortalityRate
+					* currentSEIR.getI();
+
+			
+
+			if(!this.isFrequencyDependent()) transmissionRate = transmissionRate * getTransmissionRateScaleFactor(diseaseLabel);
+
+
+			// The effective Infectious population  is a dimensionles number normalize by total
+			// population used in teh computation of bets*S*i where i = Ieffective/Pop.
+			// This includes a correction to the current
+			// infectious population (Ieffective) based on the conserved exchange of people (circulation)
+			// between regions. Note that this is no the "arrivals" and "departures" which are
+			// a different process.
+			final double effectiveInfectious = getNormalizedEffectiveInfectious(diseaseLabel.getNode(), diseaseLabel, currentSEIR.getI(), StandardPackage.Literals.SI_LABEL_VALUE__I, StandardPackage.Literals.STANDARD_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE, StandardPackage.Literals.STANDARD_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION);
+
+			/*
+			 * Compute state transitions
+			 * 
+			 * Regarding computing the number of transitions from Susceptible to Exposed:
+			 * In a linear model the "effective" number of infectious people is just
+			 * the number of infectious people In a nonlinear model we have a
+			 * nonLinearity exponent that is > 1 this models the effect of immune
+			 * system saturation when Susceptible people are exposed to large
+			 * numbers of infectious people. then the "effective" number of
+			 * infectious people is I^nonLinearity exponent to allow for either
+			 * linear or nonlinear models we always calculate I^nonLinearity
+			 * exponent and allow nonLinearity exponent >= 1.0
+			 */
+			double numberOfInfectedToRecovered = adjustedRecoveryRate
+					* currentSEIR.getI();
+			double numberOfRecoveredToSusceptible = adjustedImmunityLossRate
+					* currentSEIR.getR();
+			// Need to checked what do do here. If non linear coefficient is not 1 and
+			// the effective infectious is negative (which is possible), what do do? 
+			// Let's fall back on the linear method for now.
+			
+			////////////////////////////////////////////////////
+			// ******* EVOLVING DISEASE MODEL *************** //
+			//
+			//  Si* = Si   ∏_(j≠i) 〖[1-χji (Rj/N〗)] 
+			//
+			double effectiveSusceptible = currentSEIR.getS();
+			double popCount = currentSEIR.getS()+currentSEIR.getE()+currentSEIR.getI()+currentSEIR.getR(); 
+			double crossProduct = 1.0;
+			if((crossImmunityRate>0.0)&&(effectiveSusceptible>1)) {
+				// NEED TO CORRECT SUSCEPTIBLES BASED ON CROSS STRAIN IMMUNITY //
+				Node thisNode = diseaseLabel.getNode();
+				EList<NodeLabel> allLabels = thisNode.getLabels();
+				for(NodeLabel nl:allLabels) {
+					if(nl instanceof EvolvingSEIRDiseaseModelLabel) {
+						EvolvingSEIRDiseaseModelLabel seirLabel = (EvolvingSEIRDiseaseModelLabel) nl;
+						Decorator otherDisease = seirLabel.getDecorator();
+						if(otherDisease instanceof EvolvingSEIRDiseaseModel) {
+							// should always be true
+							EvolvingSEIRDiseaseModel otherSEIRDiease = (EvolvingSEIRDiseaseModel)otherDisease;
+							if(!otherSEIRDiease.getDiseaseName().equals(this.getDiseaseName())) {
+								// ie NOT this DISEASE
+								EvolvingSEIRDiseaseModelLabelValue otherValue = (EvolvingSEIRDiseaseModelLabelValue)seirLabel.getCurrentValue();
+								
+								
+									double immuneTerm = otherValue.getR()/popCount;
+									
+									// the genetic distance is based on comparing the 2 genomes. Each letter gives a difference of 1
+									// the crossImmunityRate is the crossImmunity with 1 nt different
+									double geneticDistance = getGeneticDistance(otherSEIRDiease);
+									
+									// for a center of mass distance model uncomment the following....
+									// double geneticDistance *= getCMdistance(otherSEIR);
+									
+									if(geneticDistance >= 1 ) {
+										immuneTerm *= (crossImmunityRate/ geneticDistance);
+									}
+									
+									
+									crossProduct *= (1.0-immuneTerm);
+									// prevent round off error
+									if(crossProduct < 0) {
+										crossProduct = 0.0; // round off error
+									}
+								
+								
+							}
+						}
+					}
+				}
+			} 
+			effectiveSusceptible *= crossProduct;
+		    //System.out.println("S = "+currentSEIR.getS()+" crossProduct = "+crossProduct+"  Seffective = "+effectiveSusceptible);
+			
+			
+			
+			
+			double numberOfSusceptibleToExposed = 0.0;
+			if(getNonLinearityCoefficient() != 1.0 && effectiveInfectious >=0.0)
+				numberOfSusceptibleToExposed = transmissionRate
+				* effectiveSusceptible* Math.pow(effectiveInfectious, getNonLinearityCoefficient());
+			else 
+				numberOfSusceptibleToExposed = transmissionRate
+				* effectiveSusceptible* effectiveInfectious;
+			
+			
+			
+			
+			// ******* EVOLVING DISEASE MODEL *************** //
+			////////////////////////////////////////////////////
+			
+			
+			
+			double numberOfExposedToInfectious =adjustedIncubationRate
+					* currentSEIR.getE();
+
+
+			// Determine delta S
+			double deltaS = numberOfRecoveredToSusceptible - numberOfSusceptibleToExposed;
+			// Determine delta E
+			double deltaE = numberOfSusceptibleToExposed - numberOfExposedToInfectious;		
+			// Determine delta I
+			double deltaI = numberOfExposedToInfectious - numberOfInfectedToRecovered - diseaseDeaths;
+			// Determine delta R
+			double deltaR = numberOfInfectedToRecovered - numberOfRecoveredToSusceptible;
+
+			StandardInterventionLabel scl = findInterventionLabel((Node)diseaseLabel.getIdentifiable());
+			if(scl != null) {
+				double vaccinations = ((StandardInterventionLabelValue)scl.getCurrentValue()).getVaccinations();
+				double isolations = ((StandardInterventionLabelValue)scl.getCurrentValue()).getIsolations();
+				vaccinations *= ((double) timeDelta / (double) getTimePeriod());
+				isolations *= ((double) timeDelta / (double) getTimePeriod());
+				if(currentSEIR.getS() < vaccinations) vaccinations = currentSEIR.getS();
+				if(currentSEIR.getI() < isolations) isolations = currentSEIR.getI();
+
+				deltaS -= vaccinations;
+				deltaR += vaccinations;
+				deltaI -= isolations;
+				deltaR += isolations;
+			}
+			
+		
+			
+			/////////////////////////////////////////////////////////////////////////////
+			// added to express the transitions. Necessary to support stochastic modeling
+			// S->E
+			Exchange seExchange = (Exchange)ExchangePool.POOL.get(); 
+			seExchange.setSource(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+			seExchange.setTarget(StandardPackage.eINSTANCE.getSEIRLabelValue_E());
+			seExchange.setCount(numberOfSusceptibleToExposed);
+			seExchange.getForIncidence().add(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_Incidence());
+			seExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			deltaValue.getDepartures().add(seExchange);
+
+			// E->I
+			Exchange eiExchange = (Exchange)ExchangePool.POOL.get(); 
+			eiExchange.setSource(StandardPackage.eINSTANCE.getSEIRLabelValue_E());
+			eiExchange.setTarget(StandardPackage.eINSTANCE.getSILabelValue_I());
+			eiExchange.setCount(numberOfExposedToInfectious);
+			eiExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			deltaValue.getDepartures().add(eiExchange);
+
+			// I->R
+			Exchange irExchange = (Exchange)ExchangePool.POOL.get(); 
+			irExchange.setSource(StandardPackage.eINSTANCE.getSILabelValue_I());
+			irExchange.setTarget(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+			irExchange.setCount(numberOfInfectedToRecovered);
+			irExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			deltaValue.getDepartures().add(irExchange);
+
+			// R->S
+			Exchange rsExchange = (Exchange)ExchangePool.POOL.get(); 
+			rsExchange.setSource(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+			rsExchange.setTarget(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+			rsExchange.setCount(numberOfRecoveredToSusceptible);
+			rsExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			deltaValue.getDepartures().add(rsExchange);
+			// added to express the transitions. Necessary to support stochastic modeling
+			/////////////////////////////////////////////////////////////////////////////
+
+			
+			SEIRLabelValueImpl ret = (SEIRLabelValueImpl)deltaValue;
+			ret.setS(deltaS);
+			ret.setE(deltaE);
+			ret.setI(deltaI);
+			ret.setIncidence(numberOfSusceptibleToExposed);
+			ret.setR(deltaR);
+			ret.setDiseaseDeaths(diseaseDeaths);
+
+			computeAdditionalDeltasAndExchanges(ilabel, time, t, timeDelta);
+		}
+
+	} // computeDiseaseDeltas
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void calculateEvolvedInitialState() {
+		
+		EvolvingSEIRDiseaseModel parentDiseaseModel = (EvolvingSEIRDiseaseModel)getParentDisease();
+		DiseaseModelLabel parentEvolutionSource = getEvolvedAt();
+		if (parentDiseaseModel == null && parentEvolutionSource == null) {
+			// The evolution wasn't initialized correctly.  
+			// This should be unreachable but who knows.
+			System.err.println("Trying to calculate label state from an improperly initialized evolved model.  Do something.");
+			return;	
+		} 
+		
+		Node currentNode = parentEvolutionSource.getNode();
+		URI evolutionLocation = currentNode.getURI();
+
+//		// Matt, we have not decorated the graph at this point right??
+		for (DynamicLabel dl : this.getLabelsToUpdate()) {
+			if (dl instanceof EvolvingSEIRDiseaseModelLabel) {
+				double s = 0.0;
+				double e = 0.0;
+				double i = 0.0;
+				double r = 0.0;
+				double diseaseDeaths = 0.0;
+				
+				// this is the new label we need to set
+				EvolvingSEIRDiseaseModelLabel childLabel = (EvolvingSEIRDiseaseModelLabel)dl;
+				EvolvingSEIRDiseaseModelLabelValue childLabelValues = (EvolvingSEIRDiseaseModelLabelValue)childLabel.getCurrentValue();
+				// this is the new label we need to set
+				EvolvingSEIRDiseaseModelLabel parentSEIRlabel = (EvolvingSEIRDiseaseModelLabel) parentEvolutionSource;
+				// same parent population
+				childLabel.setPopulationLabel(parentSEIRlabel.getPopulationLabel());
+				childLabel.setPopulationModelLabel(parentSEIRlabel.getPopulationModelLabel());
+				// get the parent label value - we need this to know the current population
+				EvolvingSEIRDiseaseModelLabelValue lv = (EvolvingSEIRDiseaseModelLabelValue)parentSEIRlabel.getCurrentValue();
+				double popCount = lv.getPopulationCount();
+				s = popCount;
+				
+				
+				// Do something interesting here to initialize disease state
+				// TODO performance question
+				// TODO we are looking through the entire graphs to find THIS label. 
+				if (childLabel.getNode().getURI().equals(evolutionLocation)) {
+					// This is where the evolution happened, so you probably need to set your
+					// infectious state differently
+					//System.out.println("initializing child disease at evolution location "+evolutionLocation.lastSegment());
+					if(parentEvolutionSource instanceof EvolvingSEIRDiseaseModelLabel) {
+						// should be true
+						if(popCount > 1.0) {
+							// init the child diseases values
+							e = 1.0;
+							s = s - 1.0;
+							//System.err.println("!!! Evolving SEIR Mutation !!! at "+evolutionLocation.lastSegment());
+						} else {
+							System.err.println("Likely ERROR: Zero population detected on node "+currentNode.getURI().lastSegment()+" ...  Do something.");
+						}
+					}
+					
+				} else {
+					// This is everywhere else
+					// for now we are already set
+				} // if else
+				
+				childLabelValues.setS(s);
+				childLabelValues.setE(e);
+				childLabelValues.setI(i);
+				childLabelValues.setR(r);
+				childLabelValues.setDiseaseDeaths(diseaseDeaths);
+			}
+		}
+	}
+	
+	/**
+	 * This method is called when a disease model mutates back into itself
+	 * @generated NOT
+	 */
+	protected void updateDuplicateEvolvedInitialState(Node currentNode) {
+		URI evolutionLocation = currentNode.getURI();
+
+//		// Matt, we have not decorated the graph at this point right??
+		for (DynamicLabel dl : this.getLabelsToUpdate()) {
+			if (dl instanceof EvolvingSEIRDiseaseModelLabel) {
+
+				// this is the new label we need to set
+				EvolvingSEIRDiseaseModelLabel diseaseLabel = (EvolvingSEIRDiseaseModelLabel)dl;
+				EvolvingSEIRDiseaseModelLabelValue childLabelValues = (EvolvingSEIRDiseaseModelLabelValue)diseaseLabel.getCurrentValue();
+				double s = childLabelValues.getS();
+				double e = childLabelValues.getE();
+				double i = childLabelValues.getI();
+				double r = childLabelValues.getR();
+				double diseaseDeaths = childLabelValues.getDiseaseDeaths();
+
+				// Do something interesting here to initialize disease state
+				// TODO performance question
+				// TODO we are looking through the entire graphs to find THIS label. 
+				if (diseaseLabel.getNode().getURI().equals(evolutionLocation)) {
+					// This is where the evolution happened, so you probably need to set your
+					// infectious state differently
+					//System.out.println("initializing child disease a 
+					  
+					if(s > 2.0) {
+						// init the child diseases values
+						e = 1.0;
+						s = s - 1.0;
+						//System.err.println("!!! Evolving SEIR Mutation !!! at "+evolutionLocation.lastSegment());
+					} else {
+						//System.err.println("Likely ERROR: Zero population detected on node "+currentNode.getURI().lastSegment()+" ...  Do something.");
+					}
+				} else {
+					// This is everywhere else
+					// for now we are already set
+				} // if else
+				
+				childLabelValues.setS(s);
+				childLabelValues.setE(e);
+				childLabelValues.setI(i);
+				childLabelValues.setR(r);
+				childLabelValues.setDiseaseDeaths(diseaseDeaths);
+			}
+		}
+	}
+	
+
+	protected double getAdjustedIncubationRate(long timeDelta) {
+		return getIncubationRate()
+				* ((double) timeDelta / (double) getTimePeriod());
+	} // getAdjustedIncubationRate
+			
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public DiseaseModelLabel createDiseaseModelLabel(String populationIdentifier) {	
+		DiseaseModelLabel label = EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabel(); 
+		label.setTypeURI(DiseaseModelLabel.URI_TYPE_DYNAMIC_DISEASE_LABEL);
+
+		return label;
+	} // createDiseaseModelLabel
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public DiseaseModelLabelValue createDiseaseModelLabelValue(String populationIdentifier) {	
+		return EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabelValue(); 
+	}
+
+
+} //EvolvingSEIRDiseaseModelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelLabelImpl.java
new file mode 100644
index 0000000..773c76f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelLabelImpl.java
@@ -0,0 +1,52 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelLabelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SEIR Disease Model Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated NOT
+ */
+public class EvolvingSEIRDiseaseModelLabelImpl extends StandardDiseaseModelLabelImpl implements EvolvingSEIRDiseaseModelLabel {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelLabelImpl() {
+		super();
+		setCurrentValue(EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabelValue());
+		setNextValue(EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabelValue());
+		setTempValue(EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabelValue());
+		setProbeValue(EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabelValue());
+		setErrorScale(EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabelValue());
+		setDeltaValue(EvolvingFactory.eINSTANCE.createEvolvingSEIRDiseaseModelLabelValue());		
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SEIR_DISEASE_MODEL_LABEL;
+	}
+
+
+							
+
+} //EvolvingSEIRDiseaseModelLabelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelLabelValueImpl.java
new file mode 100644
index 0000000..f21d434
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSEIRDiseaseModelLabelValueImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.impl.SEIRLabelValueImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SEIR Disease Model Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingSEIRDiseaseModelLabelValueImpl extends SEIRLabelValueImpl implements EvolvingSEIRDiseaseModelLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelLabelValueImpl() {
+		super();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE;
+	}
+							
+
+} //EvolvingSEIRDiseaseModelLabelValueImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelImpl.java
new file mode 100644
index 0000000..3954122
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelImpl.java
@@ -0,0 +1,981 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import java.util.Arrays;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.ExchangePool;
+import org.eclipse.stem.core.graph.ExchangeType;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SILabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+import org.eclipse.stem.diseasemodels.standard.impl.SIImpl;
+import org.eclipse.stem.diseasemodels.standard.impl.SILabelValueImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SI Disease Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getParentDisease <em>Parent Disease</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getTransformer <em>Transformer</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getEvolvedAt <em>Evolved At</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getGenome <em>Genome</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getEvolutionCount <em>Evolution Count</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getCaseMutationRate <em>Case Mutation Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getGenomeLength <em>Genome Length</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIDiseaseModelImpl#getGeneticDistNonlinExponent <em>Genetic Dist Nonlin Exponent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingSIDiseaseModelImpl extends SIImpl implements EvolvingSIDiseaseModel {
+	/**
+	 * The cached value of the '{@link #getParentDisease() <em>Parent Disease</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParentDisease()
+	 * @generated
+	 * @ordered
+	 */
+	protected EvolvingDiseaseModel parentDisease;
+	/**
+	 * The cached value of the '{@link #getTransformer() <em>Transformer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTransformer()
+	 * @generated
+	 * @ordered
+	 */
+	protected EvolvingDiseaseTransformer transformer;
+	/**
+	 * The cached value of the '{@link #getEvolvedAt() <em>Evolved At</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvolvedAt()
+	 * @generated
+	 * @ordered
+	 */
+	protected DiseaseModelLabel evolvedAt;
+	/**
+	 * The default value of the '{@link #getGenome() <em>Genome</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGenome()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean[] GENOME_EDEFAULT = null;
+	/**
+	 * The cached value of the '{@link #getGenome() <em>Genome</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGenome()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean[] genome = GENOME_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getEvolutionCount() <em>Evolution Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvolutionCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int EVOLUTION_COUNT_EDEFAULT = 0;
+	/**
+	 * The cached value of the '{@link #getEvolutionCount() <em>Evolution Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvolutionCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected int evolutionCount = EVOLUTION_COUNT_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getCaseMutationRate() <em>Case Mutation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCaseMutationRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double CASE_MUTATION_RATE_EDEFAULT = 1.0E-5;
+	/**
+	 * The cached value of the '{@link #getCaseMutationRate() <em>Case Mutation Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCaseMutationRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double caseMutationRate = CASE_MUTATION_RATE_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getGenomeLength() <em>Genome Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGenomeLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int GENOME_LENGTH_EDEFAULT = 5;
+	/**
+	 * The cached value of the '{@link #getGenomeLength() <em>Genome Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGenomeLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected int genomeLength = GENOME_LENGTH_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getGeneticDistNonlinExponent() <em>Genetic Dist Nonlin Exponent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGeneticDistNonlinExponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double GENETIC_DIST_NONLIN_EXPONENT_EDEFAULT = 1.0;
+	/**
+	 * The cached value of the '{@link #getGeneticDistNonlinExponent() <em>Genetic Dist Nonlin Exponent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGeneticDistNonlinExponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected double geneticDistNonlinExponent = GENETIC_DIST_NONLIN_EXPONENT_EDEFAULT;
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public EvolvingSIDiseaseModelImpl() {
+		super();
+		setTransformer(new EvolvingDiseaseTransformerImpl());
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SI_DISEASE_MODEL;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingDiseaseModel getParentDisease() {
+		if (parentDisease != null && parentDisease.eIsProxy()) {
+			InternalEObject oldParentDisease = (InternalEObject)parentDisease;
+			parentDisease = (EvolvingDiseaseModel)eResolveProxy(oldParentDisease);
+			if (parentDisease != oldParentDisease) {
+			}
+		}
+		return parentDisease;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingDiseaseModel basicGetParentDisease() {
+		return parentDisease;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentDisease(EvolvingDiseaseModel newParentDisease) {
+		parentDisease = newParentDisease;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingDiseaseTransformer getTransformer() {
+		if (transformer != null && transformer.eIsProxy()) {
+			InternalEObject oldTransformer = (InternalEObject)transformer;
+			transformer = (EvolvingDiseaseTransformer)eResolveProxy(oldTransformer);
+			if (transformer != oldTransformer) {
+			}
+		}
+		return transformer;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingDiseaseTransformer basicGetTransformer() {
+		return transformer;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransformer(EvolvingDiseaseTransformer newTransformer) {
+		transformer = newTransformer;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DiseaseModelLabel getEvolvedAt() {
+		if (evolvedAt != null && evolvedAt.eIsProxy()) {
+			InternalEObject oldEvolvedAt = (InternalEObject)evolvedAt;
+			evolvedAt = (DiseaseModelLabel)eResolveProxy(oldEvolvedAt);
+			if (evolvedAt != oldEvolvedAt) {
+			}
+		}
+		return evolvedAt;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DiseaseModelLabel basicGetEvolvedAt() {
+		return evolvedAt;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvolvedAt(DiseaseModelLabel newEvolvedAt) {
+		evolvedAt = newEvolvedAt;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getEvolutionCount() {
+		return evolutionCount;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvolutionCount(int newEvolutionCount) {
+		evolutionCount = newEvolutionCount;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getCaseMutationRate() {
+		return caseMutationRate;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCaseMutationRate(double newCaseMutationRate) {
+		caseMutationRate = newCaseMutationRate;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getGenomeLength() {
+		return genomeLength;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGenomeLength(int newGenomeLength) {
+		genomeLength = newGenomeLength;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getGeneticDistNonlinExponent() {
+		return geneticDistNonlinExponent;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGeneticDistNonlinExponent(double newGeneticDistNonlinExponent) {
+		geneticDistNonlinExponent = newGeneticDistNonlinExponent;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public boolean[] getGenome() {
+		if (genome == null) {
+			genome = new boolean[genomeLength];
+			for(int i = 0; i < genome.length; i ++) {
+				genome[i] = true;
+			}
+		}
+		return genome;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGenome(boolean[] newGenome) {
+		genome = newGenome;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE:
+				if (resolve) return getParentDisease();
+				return basicGetParentDisease();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__TRANSFORMER:
+				if (resolve) return getTransformer();
+				return basicGetTransformer();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT:
+				if (resolve) return getEvolvedAt();
+				return basicGetEvolvedAt();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME:
+				return getGenome();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT:
+				return getEvolutionCount();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE:
+				return getCaseMutationRate();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH:
+				return getGenomeLength();
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT:
+				return getGeneticDistNonlinExponent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE:
+				setParentDisease((EvolvingDiseaseModel)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__TRANSFORMER:
+				setTransformer((EvolvingDiseaseTransformer)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT:
+				setEvolvedAt((DiseaseModelLabel)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME:
+				setGenome((boolean[])newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT:
+				setEvolutionCount((Integer)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE:
+				setCaseMutationRate((Double)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH:
+				setGenomeLength((Integer)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT:
+				setGeneticDistNonlinExponent((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE:
+				setParentDisease((EvolvingDiseaseModel)null);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__TRANSFORMER:
+				setTransformer((EvolvingDiseaseTransformer)null);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT:
+				setEvolvedAt((DiseaseModelLabel)null);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME:
+				setGenome(GENOME_EDEFAULT);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT:
+				setEvolutionCount(EVOLUTION_COUNT_EDEFAULT);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE:
+				setCaseMutationRate(CASE_MUTATION_RATE_EDEFAULT);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH:
+				setGenomeLength(GENOME_LENGTH_EDEFAULT);
+				return;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT:
+				setGeneticDistNonlinExponent(GENETIC_DIST_NONLIN_EXPONENT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE:
+				return parentDisease != null;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__TRANSFORMER:
+				return transformer != null;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT:
+				return evolvedAt != null;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME:
+				return GENOME_EDEFAULT == null ? genome != null : !GENOME_EDEFAULT.equals(genome);
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT:
+				return evolutionCount != EVOLUTION_COUNT_EDEFAULT;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE:
+				return caseMutationRate != CASE_MUTATION_RATE_EDEFAULT;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH:
+				return genomeLength != GENOME_LENGTH_EDEFAULT;
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT:
+				return geneticDistNonlinExponent != GENETIC_DIST_NONLIN_EXPONENT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == EvolvingDiseaseModel.class) {
+			switch (derivedFeatureID) {
+				case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE: return EvolvingPackage.EVOLVING_DISEASE_MODEL__PARENT_DISEASE;
+				case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__TRANSFORMER: return EvolvingPackage.EVOLVING_DISEASE_MODEL__TRANSFORMER;
+				case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT: return EvolvingPackage.EVOLVING_DISEASE_MODEL__EVOLVED_AT;
+				case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME: return EvolvingPackage.EVOLVING_DISEASE_MODEL__GENOME;
+				case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT: return EvolvingPackage.EVOLVING_DISEASE_MODEL__EVOLUTION_COUNT;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == EvolvingDiseaseModel.class) {
+			switch (baseFeatureID) {
+				case EvolvingPackage.EVOLVING_DISEASE_MODEL__PARENT_DISEASE: return EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__PARENT_DISEASE;
+				case EvolvingPackage.EVOLVING_DISEASE_MODEL__TRANSFORMER: return EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__TRANSFORMER;
+				case EvolvingPackage.EVOLVING_DISEASE_MODEL__EVOLVED_AT: return EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLVED_AT;
+				case EvolvingPackage.EVOLVING_DISEASE_MODEL__GENOME: return EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME;
+				case EvolvingPackage.EVOLVING_DISEASE_MODEL__EVOLUTION_COUNT: return EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (genome: ");
+		result.append(genome);
+		result.append(", evolutionCount: ");
+		result.append(evolutionCount);
+		result.append(", caseMutationRate: ");
+		result.append(caseMutationRate);
+		result.append(", genomeLength: ");
+		result.append(genomeLength);
+		result.append(", geneticDistNonlinExponent: ");
+		result.append(geneticDistNonlinExponent);
+		result.append(')');
+		return result.toString();
+	}
+
+
+	/**
+	 * @see org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelImpl#computeTransitions(org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue,
+	 *      long, double, long)
+	 * @generated NOT
+	 */
+	@Override
+	public void calculateDeltas(STEMTime time, double t, long timeDelta, EList<DynamicLabel> labels)  {
+		
+		
+		final double adjustedInfectiousMortalityRate = getAdjustedInfectiousMortalityRate(timeDelta);
+		double transmissionRate = getAdjustedTransmissionRate(timeDelta);
+		final double adjustedRecoveryRate =  getAdjustedRecoveryRate(timeDelta);
+		
+		for(int _i=0;_i<labels.size();++_i) {
+			final DynamicLabel label =  labels.get(_i);
+			IntegrationLabel ilabel = (IntegrationLabel)label;
+
+			StandardDiseaseModelLabel diseaseLabel = (StandardDiseaseModelLabel)ilabel;
+			StandardDiseaseModelLabelValue currentState = (StandardDiseaseModelLabelValue)ilabel.getProbeValue();
+			StandardDiseaseModelLabelValue deltaValue = (StandardDiseaseModelLabelValue)ilabel.getDeltaValue();
+
+			deltaValue.reset();
+			
+			final SILabelValue currentSI = (SILabelValue) currentState;
+
+			// Compute deaths
+			
+			final double diseaseDeaths = adjustedInfectiousMortalityRate
+					* currentSI.getI();
+
+			// This is beta*
+			
+
+			if(!this.isFrequencyDependent()) transmissionRate *= getTransmissionRateScaleFactor(diseaseLabel);
+
+			// The effective Infectious population  is a dimensionles number normalize by total
+			// population used in teh computation of bets*S*i where i = Ieffective/Pop.
+			// This includes a correction to the current
+			// infectious population (Ieffective) based on the conserved exchange of people (circulation)
+			// between regions. Note that this is no the "arrivals" and "departures" which are
+			// a different process.
+			final double effectiveInfectious = getNormalizedEffectiveInfectious(diseaseLabel.getNode(), diseaseLabel, currentSI.getI(), StandardPackage.Literals.SI_LABEL_VALUE__I, StandardPackage.Literals.STANDARD_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE, StandardPackage.Literals.STANDARD_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION);
+
+			/*
+			 * Compute state transitions
+			 * 
+			 * Regarding computing the number of transitions from Susceptible to Exposed:
+			 * In a linear model the "effective" number of infectious people is just
+			 * the number of infectious people In a nonlinear model we have a
+			 * nonLinearity exponent that is > 1 this models the effect of immune
+			 * system saturation when Susceptible people are exposed to large
+			 * numbers of infectious people. then the "effective" number of
+			 * infectious people is I^nonLinearity exponent to allow for either
+			 * linear or nonlinear models we always calculate I^nonLinearity
+			 * exponent and allow nonLinearity exponent >= 1.0
+			 */
+
+			// Need to checked what do do here. If non linear coefficient is not 1 and
+			// the effective infectious is negative (which is possible), what do do? 
+			// Let's fall back on the linear method for now.
+			double numberOfSusceptibleToInfected = 0.0;
+			
+			
+			
+			
+			
+			if(getNonLinearityCoefficient() != 1.0 && effectiveInfectious >= 0.0)
+				numberOfSusceptibleToInfected = transmissionRate
+				* currentSI.getS()* Math.pow(effectiveInfectious, getNonLinearityCoefficient());
+			else
+				numberOfSusceptibleToInfected = transmissionRate
+				* currentSI.getS()* effectiveInfectious;
+
+			double numberOfInfectedToSusceptible = adjustedRecoveryRate
+					* currentSI.getI();
+
+
+			// Determine delta S
+			final double deltaS = - numberOfSusceptibleToInfected + numberOfInfectedToSusceptible;
+			// Determine delta I
+			final double deltaI = numberOfSusceptibleToInfected - numberOfInfectedToSusceptible - diseaseDeaths;	
+
+			SILabelValueImpl ret = (SILabelValueImpl)deltaValue;
+			
+			// Store transitions (for stochastic models)
+			
+			/////////////////////////////////////////////////////////////////////////////
+			// added to express the transitions. Necessary to support stochastic modeling
+			// S->I
+			Exchange siExchange = (Exchange)ExchangePool.POOL.get(); 
+			siExchange.setSource(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+			siExchange.setTarget(StandardPackage.eINSTANCE.getSILabelValue_I());
+			siExchange.setCount(numberOfSusceptibleToInfected);
+			siExchange.getForIncidence().add(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_Incidence());
+			siExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			ret.getDepartures().add(siExchange);
+			
+			// I->S
+			Exchange isExchange = (Exchange)ExchangePool.POOL.get(); 
+			isExchange.setSource(StandardPackage.eINSTANCE.getSILabelValue_I());
+			isExchange.setTarget(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+			isExchange.setCount(numberOfInfectedToSusceptible);
+			isExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			ret.getDepartures().add(isExchange);
+			// added to express the transitions. Necessary to support stochastic modeling
+			/////////////////////////////////////////////////////////////////////////////
+			
+			ret.setS(deltaS);
+			ret.setI(deltaI);
+			ret.setIncidence(numberOfSusceptibleToInfected);
+			ret.setDiseaseDeaths(diseaseDeaths);
+
+			computeAdditionalDeltasAndExchanges(ilabel, time, t, timeDelta);
+		}
+	} // 
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public EvolvingDiseaseModel evolve(DiseaseModelLabel label) {
+		
+		
+		// test
+		SILabelValue siValues = (SILabelValue)label.getCurrentValue();
+		double incidence = siValues.getIncidence();
+		 
+		if(incidence > 1) {
+			
+			double pic = Math.random();
+			double threshold = (incidence*caseMutationRate);
+			 
+			if(pic < threshold) {
+				
+				final boolean[] newGenome = mutateGenome(getGenome());
+				
+				// check that the genome does not already exist!!
+				// if we have mutated back to an existing genome we just
+				// return null (because that disease is already defined everywhere
+				String evolutionKey = String.valueOf(Arrays.hashCode(newGenome));
+				
+				for (DiseaseModel dm : getTransformer().getEvolvedDiseases()) {
+					
+					// If the disease model's URI query string contains the evolved genome's hash key,
+					// then the disease already exists in the simulation
+					
+					// platform://resource/MyProject/decorators/MyEvolvingDiseaseModel.standard?genomehash
+					
+					if (evolutionKey.equals(dm.getURI().query())) {
+						return null;
+					}
+				}
+				
+				int evolutions = getEvolutionCount();
+				setEvolutionCount(++evolutions);
+				
+				String genomeSTR = getGenomeSTR(newGenome);
+				String phyloDieaseName = getPhyloDiseaseName(getDiseaseName());
+				String uniqueIdentifier = phyloDieaseName + ":"+ evolutions+"_["+genomeSTR+"]";
+				
+				
+				EvolvingSIDiseaseModel dm = EcoreUtil.copy(this);
+				dm.setGenome(newGenome);
+				getTransformer().getEvolvedDiseases().add(dm);
+				dm.setGraphDecorated(false);
+				dm.setDiseaseName(uniqueIdentifier);
+				dm.setTransformer(getTransformer());
+				dm.setParentDisease(this);
+				dm.setURI(getURI().appendQuery(evolutionKey));
+				dm.setEvolvedAt(label);
+				
+//				totalEvolved++;
+//				System.out.println(" ********** Evolutions = "+totalEvolved );
+				
+				return dm;
+			}
+		}
+		
+		return null;
+	}// evolve
+	
+	/**
+	 * mutate a parent genome
+	 * @param parentGenome
+	 * @return
+	 */
+	public boolean[] mutateGenome(boolean[] parentGenome) {
+		// Update the genome
+		genomeLength = parentGenome.length;
+		boolean[] genome = new boolean[genomeLength];
+		
+		double dMute = Math.random()*genome.length;
+		int iMute = (int)Math.round(dMute);
+		        
+		for(int i = 0; i < genome.length; i ++) {
+			genome[i] = parentGenome[i];
+			if(i==iMute) genome[i] = (!parentGenome[i]);
+		}
+		return genome;
+	}
+	/**
+	 * 
+	 * @param genome
+	 * @return
+	 */
+	public static String getGenomeSTR(boolean[] genome) {
+		String retval = "";
+		for(int i = 0; i < genome.length; i ++) {
+			if(genome[i]) {
+				retval += "1";
+			} else {
+				retval += "0";
+			}
+		}
+		return retval;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void calculateEvolvedInitialState() {
+		
+
+		EvolvingSIDiseaseModelImpl parentDiseaseModel = (EvolvingSIDiseaseModelImpl)getParentDisease();
+		DiseaseModelLabel parentEvolutionSource = getEvolvedAt();
+		if (parentDiseaseModel == null && parentEvolutionSource == null) {
+			// The evolution wasn't initialized correctly.  
+			// This should be unreachable but who knows.
+			System.err.println("Trying to calculate label state from an improperly initialized evolved model.  Do something.");
+			return;	
+		} 
+		
+		Node currentNode = parentEvolutionSource.getNode();
+		URI evolutionLocation = currentNode.getURI();
+		
+
+		boolean[] genome = getGenome();
+		boolean[] parentGenome = parentDiseaseModel.getGenome();
+		
+		// Update the genome
+		if(genome != null && genome.length > 1) {
+			double dMute = Math.random()*genome.length;
+			int iMute = (int)Math.round(dMute);
+			for(int i = 0; i < genome.length; i ++) {
+				genome[i] = parentGenome[i];
+				if (i == iMute) {
+					genome[i] = !genome[i];
+				}
+			}
+		}
+		setGenome(genome);
+		
+//		// Matt, we have not decorated the graph at this point right??
+		for (DynamicLabel dl : this.getLabelsToUpdate()) {
+			if (dl instanceof EvolvingSIDiseaseModelLabel) {
+				double s = 0.0;
+				double i = 0.0;
+				double diseaseDeaths = 0.0;
+				
+				// this is the new label we need to set
+				EvolvingSIDiseaseModelLabel childLabel = (EvolvingSIDiseaseModelLabel)dl;
+				EvolvingSIDiseaseModelLabelValue childLabelValues = (EvolvingSIDiseaseModelLabelValue)childLabel.getCurrentValue();
+				// this is the new label we need to set
+				EvolvingSIDiseaseModelLabel parentSIlabel = (EvolvingSIDiseaseModelLabel) parentEvolutionSource;
+				// same parent population
+				childLabel.setPopulationLabel(parentSIlabel.getPopulationLabel());
+				childLabel.setPopulationModelLabel(parentSIlabel.getPopulationModelLabel());
+				
+				// get the parent label value - we need this to know the current population
+				EvolvingSIDiseaseModelLabelValue lv = (EvolvingSIDiseaseModelLabelValue)parentSIlabel.getCurrentValue();
+				double popCount = lv.getPopulationCount();
+				s = popCount;
+				
+				// Do something interesting here to initialize disease state
+				// TODO performance question
+				// TODO we are looking through the entire graphs to find THIS label. 
+				if (childLabel.getNode().getURI().equals(evolutionLocation)) {
+					// This is where the evolution happened, so you probably need to set your
+					// infectious state differently
+					System.out.println("initializing child disease at evolution location");
+					if(parentEvolutionSource instanceof EvolvingSIDiseaseModelLabel) {
+						// should be true
+						if(popCount > 1.0) {
+							// init the child diseases values
+							i = 1.0;
+							s = s - 1.0;
+						} else {
+							System.err.println("Likely ERROR: Zero population detected on node "+currentNode.getURI().lastSegment()+" ...  Do something.");
+						}
+					}
+					
+				} else {
+					// This is everywhere else
+					// for now we are already set
+				} // if else
+				
+				childLabelValues.setS(s);
+				childLabelValues.setI(i);
+				childLabelValues.setDiseaseDeaths(diseaseDeaths);
+			}
+		}
+		
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public double getGeneticDistance(EvolvingDiseaseModel otherDieaseStrain) {
+		boolean[] genome = getGenome();
+		if(genome==null || genome.length <= 1) {
+			// In this version we just return 1.0 since we do not implement a genome yet
+			return 1.0;
+		} else {
+			boolean[] otherGenome = otherDieaseStrain.getGenome();
+			double ntDistance = 0;
+			for(int i = 0; i < genome.length; i ++) {
+			   if(genome[i] != otherGenome[i]) {
+				   ntDistance ++;
+			   }
+			}
+			double cmDistance = getCMdistance(otherDieaseStrain);
+			return Math.pow(ntDistance,geneticDistNonlinExponent);
+		}
+	}
+
+	/**
+	 * 
+	 * @param genome1
+	 * @param genome2
+	 * @return
+	 */
+	protected double getCMdistance(EvolvingDiseaseModel otherStrain) {
+		double cm1 = getGeneticCenterOfMass(this);
+		double cm2 = getGeneticCenterOfMass(otherStrain);
+		double diff = Math.abs(cm1-cm1);
+		if(diff >= 1.0) {
+			return diff;
+		} else {
+			return 1.0;
+		}
+	}
+
+
+	/**
+	 *  NOT USED
+	 * @return
+	 */
+	protected double getGeneticCenterOfMass(EvolvingDiseaseModel otherStrain) {
+		double cm = 0;
+		
+		boolean[] genome = getGenome();
+		boolean[] otherGenome = otherStrain.getGenome();
+		
+		for(int i = 0; i < genome.length; i ++) {
+			if(otherGenome[i]) cm += i;	  	   
+		}
+		cm /= genome.length;
+		return cm;
+	}
+
+
+	/**
+	 * 
+	 * @param rootName
+	 * @return
+	 */
+	protected String getPhyloDiseaseName(String rootName) {
+		String retVal = rootName;
+		int idx1 = retVal.indexOf("_[");
+		if(idx1>=0) {
+			retVal=rootName.substring(0, idx1);
+		}
+		return retVal;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelImpl#prepare(org.eclipse.stem.core.model.Model, org.eclipse.stem.core.model.STEMTime)
+	 */
+	@Override
+	public void prepare(Model model, STEMTime time) {
+		super.prepare(model, time);
+		
+		// Get and set the disease model's transformer as a node decorator
+		EvolvingDiseaseTransformer transformer = getTransformer();
+		if (transformer != null) {
+			model.getNodeDecorators().add(transformer);
+		}
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public DiseaseModelLabel createDiseaseModelLabel(String populationIdentifier) {	
+		DiseaseModelLabel label = EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabel(); 
+		label.setTypeURI(DiseaseModelLabel.URI_TYPE_DYNAMIC_DISEASE_LABEL);
+
+		return label;
+	} // createDiseaseModelLabel
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public DiseaseModelLabelValue createDiseaseModelLabelValue(String populationIdentifier) {
+		return EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabelValue(); 
+	}
+
+	
+} //EvolvingSIDiseaseModelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelLabelImpl.java
new file mode 100644
index 0000000..8131841
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelLabelImpl.java
@@ -0,0 +1,52 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelLabelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SI Disease Model Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated NOT
+ */
+public class EvolvingSIDiseaseModelLabelImpl extends StandardDiseaseModelLabelImpl implements EvolvingSIDiseaseModelLabel {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelLabelImpl() {
+		super();
+		setCurrentValue(EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabelValue());
+		setNextValue(EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabelValue());
+		setTempValue(EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabelValue());
+		setProbeValue(EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabelValue());
+		setErrorScale(EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabelValue());
+		setDeltaValue(EvolvingFactory.eINSTANCE.createEvolvingSIDiseaseModelLabelValue());		
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SI_DISEASE_MODEL_LABEL;
+	}
+
+
+							
+
+} //EvolvingSIDiseaseModelLabelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelLabelValueImpl.java
new file mode 100644
index 0000000..8fe9adf
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIDiseaseModelLabelValueImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.impl.SILabelValueImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SI Disease Model Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingSIDiseaseModelLabelValueImpl extends SILabelValueImpl implements EvolvingSIDiseaseModelLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelLabelValueImpl() {
+		super();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE;
+	}
+							
+
+} //EvolvingSIDiseaseModelLabelValueImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelImpl.java
new file mode 100644
index 0000000..b027007
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelImpl.java
@@ -0,0 +1,559 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.ExchangePool;
+import org.eclipse.stem.core.graph.ExchangeType;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardPackage;
+import org.eclipse.stem.diseasemodels.standard.impl.SIRLabelValueImpl;
+import org.eclipse.stem.interventions.StandardInterventionLabel;
+import org.eclipse.stem.interventions.StandardInterventionLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SIR Disease Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl#getImmunityLossRate <em>Immunity Loss Rate</em>}</li>
+ *   <li>{@link org.eclipse.stem.diseasemodels.evolving.impl.EvolvingSIRDiseaseModelImpl#getCrossImmunityRate <em>Cross Immunity Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelImpl extends EvolvingSIDiseaseModelImpl implements EvolvingSIRDiseaseModel {
+	/**
+	 * The default value of the '{@link #getImmunityLossRate() <em>Immunity Loss Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImmunityLossRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double IMMUNITY_LOSS_RATE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getImmunityLossRate() <em>Immunity Loss Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImmunityLossRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double immunityLossRate = IMMUNITY_LOSS_RATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCrossImmunityRate() <em>Cross Immunity Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCrossImmunityRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double CROSS_IMMUNITY_RATE_EDEFAULT = 0.75;
+
+	/**
+	 * The cached value of the '{@link #getCrossImmunityRate() <em>Cross Immunity Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCrossImmunityRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double crossImmunityRate = CROSS_IMMUNITY_RATE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelImpl() {
+		super();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SIR_DISEASE_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getImmunityLossRate() {
+		return immunityLossRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImmunityLossRate(double newImmunityLossRate) {
+		immunityLossRate = newImmunityLossRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getCrossImmunityRate() {
+		return crossImmunityRate;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCrossImmunityRate(double newCrossImmunityRate) {
+		crossImmunityRate = newCrossImmunityRate;
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE:
+				return getImmunityLossRate();
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE:
+				return getCrossImmunityRate();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE:
+				setImmunityLossRate((Double)newValue);
+				return;
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE:
+				setCrossImmunityRate((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE:
+				setImmunityLossRate(IMMUNITY_LOSS_RATE_EDEFAULT);
+				return;
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE:
+				setCrossImmunityRate(CROSS_IMMUNITY_RATE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE:
+				return immunityLossRate != IMMUNITY_LOSS_RATE_EDEFAULT;
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE:
+				return crossImmunityRate != CROSS_IMMUNITY_RATE_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(" (immunityLossRate: ");
+		result.append(immunityLossRate);
+		result.append(", crossImmunityRate: ");
+		result.append(crossImmunityRate);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void calculateEvolvedInitialState() {
+		EvolvingSIRDiseaseModelImpl parentDiseaseModel = (EvolvingSIRDiseaseModelImpl)getParentDisease();
+		DiseaseModelLabel parentEvolutionSource = getEvolvedAt();
+		if (parentDiseaseModel == null && parentEvolutionSource == null) {
+			// The evolution wasn't initialized correctly.  
+			// This should be unreachable but who knows.
+			System.err.println("Trying to calculate label state from an improperly initialized evolved model.  Do something.");
+			return;	
+		} 
+		
+		Node currentNode = parentEvolutionSource.getNode();
+		URI evolutionLocation = currentNode.getURI();
+		
+		boolean[] genome = getGenome();
+		boolean[] parentGenome = parentDiseaseModel.getGenome();
+
+		// Update the genome
+		if(genome != null && genome.length > 1) {
+			double dMute = Math.random()*genome.length;
+			int iMute = (int)Math.round(dMute);
+			for(int i = 0; i < genome.length; i ++) {
+				genome[i] = parentGenome[i];
+				if(i==iMute) {
+					genome[i] = !genome[i];
+				}
+			}
+		}
+		
+		setGenome(genome);
+		
+//		// Matt, we have not decorated the graph at this point right??
+		for (DynamicLabel dl : this.getLabelsToUpdate()) {
+			if (dl instanceof EvolvingSIRDiseaseModelLabel) {
+				double s = 0.0;
+				double i = 0.0;
+				double r = 0.0;
+				double diseaseDeaths = 0.0;
+				
+				// this is the new label we need to set
+				EvolvingSIRDiseaseModelLabel childLabel = (EvolvingSIRDiseaseModelLabel)dl;
+				EvolvingSIRDiseaseModelLabelValue childLabelValues = (EvolvingSIRDiseaseModelLabelValue)childLabel.getCurrentValue();
+				// this is the new label we need to set
+				EvolvingSIRDiseaseModelLabel parentSIRlabel = (EvolvingSIRDiseaseModelLabel) parentEvolutionSource;
+				// same parent population
+				childLabel.setPopulationLabel(parentSIRlabel.getPopulationLabel());
+				childLabel.setPopulationModelLabel(parentSIRlabel.getPopulationModelLabel());
+				
+				// get the parent label value - we need this to know the current population
+				EvolvingSIRDiseaseModelLabelValue lv = (EvolvingSIRDiseaseModelLabelValue)parentSIRlabel.getCurrentValue();
+				double popCount = lv.getPopulationCount();
+				s = popCount;
+				
+				
+				// Do something interesting here to initialize disease state
+				// TODO performance question
+				// TODO we are looking through the entire graphs to find THIS label. 
+				if (childLabel.getNode().getURI().equals(evolutionLocation)) {
+					// This is where the evolution happened, so you probably need to set your
+					// infectious state differently
+					System.out.println("initializing child disease at evolution location");
+					if(parentEvolutionSource instanceof EvolvingSIRDiseaseModelLabel) {
+						// should be true
+						if(popCount > 1.0) {
+							// init the child diseases values
+							i = 1.0;
+							s = s - 1.0;
+						} else {
+							System.err.println("Likely ERROR: Zero population detected on node "+currentNode.getURI().lastSegment()+" ...  Do something.");
+						}
+					}
+					
+				} else {
+					// This is everywhere else
+					// for now we are already set
+				} // if else
+				
+				childLabelValues.setS(s);
+				childLabelValues.setI(i);
+				childLabelValues.setR(r);
+				childLabelValues.setDiseaseDeaths(diseaseDeaths);
+			}
+		}
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * 
+	 * @param timeDelta
+	 * @return
+	 * 
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	protected double getAdjustedImmunityLossRate(long timeDelta) {
+		return getImmunityLossRate()
+				* ((double) timeDelta / (double) getTimePeriod());
+	} // getAdjustedImmunityRate
+	
+	/**
+	 * @see org.eclipse.stem.diseasemodels.standard.impl.SIImpl#computeTransitions(StandardDiseaseModelLabelValue,
+	 *      StandardDiseaseModelLabel, long)
+	 * @generated NOT
+	 */
+	@Override
+	public void calculateDeltas(STEMTime time, double t, long timeDelta, EList<DynamicLabel> labels)  {
+		
+		
+		final double adjustedInfectiousMortalityRate = getAdjustedInfectiousMortalityRate(timeDelta);
+		// This is beta*
+		double transmissionRate = getAdjustedTransmissionRate(timeDelta);
+		final double adjustedRecoveryRate = getAdjustedRecoveryRate(timeDelta);
+		final double adjustedImmunityLossRate = getAdjustedImmunityLossRate(timeDelta);
+		
+		for(int _i=0;_i<labels.size();++_i) {
+			final DynamicLabel label =  labels.get(_i);
+			IntegrationLabel ilabel = (IntegrationLabel)label;
+
+			StandardDiseaseModelLabel diseaseLabel = (StandardDiseaseModelLabel)ilabel;
+			StandardDiseaseModelLabelValue currentState = (StandardDiseaseModelLabelValue)ilabel.getProbeValue();
+			StandardDiseaseModelLabelValue deltaValue = (StandardDiseaseModelLabelValue)ilabel.getDeltaValue();
+
+			deltaValue.reset();
+			
+			final EvolvingSIRDiseaseModelLabelValue currentSIR = (EvolvingSIRDiseaseModelLabelValue) currentState;
+
+			// Compute deaths
+			
+			final double diseaseDeaths = adjustedInfectiousMortalityRate
+					* currentSIR.getI();
+
+			
+
+			if(!this.isFrequencyDependent()) transmissionRate *= getTransmissionRateScaleFactor(diseaseLabel);
+
+			// The effective Infectious population  is a dimensionles number normalize by total
+			// population used in teh computation of bets*S*i where i = Ieffective/Pop.
+			// This includes a correction to the current
+			// infectious population (Ieffective) based on the conserved exchange of people (circulation)
+			// between regions. Note that this is no the "arrivals" and "departures" which are
+			// a different process.
+			final double effectiveInfectious = getNormalizedEffectiveInfectious(diseaseLabel.getNode(), diseaseLabel, currentSIR.getI(), StandardPackage.Literals.SI_LABEL_VALUE__I, StandardPackage.Literals.STANDARD_DISEASE_MODEL__CHARACTERISTIC_MIXING_DISTANCE, StandardPackage.Literals.STANDARD_DISEASE_MODEL__ROAD_NETWORK_INFECTIOUS_PROPORTION);
+
+			/*
+			 * Compute state transitions
+			 * 
+			 * Regarding computing the number of transitions from Susceptible to Exposed:
+			 * In a linear model the "effective" number of infectious people is just
+			 * the number of infectious people In a nonlinear model we have a
+			 * nonLinearity exponent that is > 1 this models the effect of immune
+			 * system saturation when Susceptible people are exposed to large
+			 * numbers of infectious people. then the "effective" number of
+			 * infectious people is I^nonLinearity exponent to allow for either
+			 * linear or nonlinear models we always calculate I^nonLinearity
+			 * exponent and allow nonLinearity exponent >= 1.0
+			 */
+			double numberOfInfectedToRecovered = adjustedRecoveryRate
+					* currentSIR.getI();
+			double numberOfRecoveredToSusceptible = adjustedImmunityLossRate
+					* currentSIR.getR();
+			
+			
+			
+			
+			
+			////////////////////////////////////////////////////
+			// ******* EVOLVING DISEASE MODEL *************** //
+			//
+			//  Si* = Si   ∏_(j≠i) 〖[1-χji (Rj/N〗)] 
+			//
+			double effectiveSusceptible = currentSIR.getS();
+			double popCount = currentSIR.getS()+currentSIR.getI()+currentSIR.getR(); 
+			double crossProduct = 1.0;
+			if((crossImmunityRate>0.0)&&(effectiveSusceptible>1)) {
+				// NEED TO CORRECT SUSCEPTIBLES BASED ON CROSS STRAIN IMMUNITY //
+				Node thisNode = diseaseLabel.getNode();
+				EList<NodeLabel> allLabels = thisNode.getLabels();
+				for(NodeLabel nl:allLabels) {
+					if(nl instanceof EvolvingSIRDiseaseModelLabel) {
+						EvolvingSIRDiseaseModelLabel sirLabel = (EvolvingSIRDiseaseModelLabel) nl;
+						Decorator otherDisease = sirLabel.getDecorator();
+						if(otherDisease instanceof EvolvingSIRDiseaseModel) {
+							// should always be true
+							EvolvingSIRDiseaseModel otherSIRDiease = (EvolvingSIRDiseaseModel)otherDisease;
+							if(!otherSIRDiease.getDiseaseName().equals(this.getDiseaseName())) {
+								// ie NOT this DISEASE
+								EvolvingSIRDiseaseModelLabelValue otherValue = (EvolvingSIRDiseaseModelLabelValue)sirLabel.getCurrentValue();
+								
+								
+									double immuneTerm = otherValue.getR()/popCount;
+									
+									// the genetic distance is based on comparing the 2 genomes. Each letter gives a difference of 1
+									// the crossImmunityRate is the crossImmunity with 1 nt different
+									double geneticDistance = getGeneticDistance(otherSIRDiease);
+									
+									// for a center of mass distance model uncomment the following....
+									// double geneticDistance *= getCMdistance(otherSIR);
+									
+									if(geneticDistance >= 1 ) {
+										immuneTerm *= (crossImmunityRate/ geneticDistance);
+									}
+									
+									
+									crossProduct *= (1.0-immuneTerm);
+									// prevent round off error
+									if(crossProduct < 0) {
+										crossProduct = 0.0; // round off error
+									}
+								
+								
+							}
+						}
+					}
+				}
+			} 
+			effectiveSusceptible *= crossProduct;
+		    //System.out.println("S = "+currentSIR.getS()+" crossProduct = "+crossProduct+"  Seffective = "+effectiveSusceptible);
+			
+			
+			// Need to checked what do do here. If non linear coefficient is not 1 and
+			// the effective infectious is negative (which is possible), what do do? 
+			// Let's fall back on the linear method for now.
+			
+			double numberOfSusceptibleToInfected = 0.0;
+			if(getNonLinearityCoefficient() != 1.0 && effectiveInfectious >=0.0)
+				numberOfSusceptibleToInfected = transmissionRate
+				* effectiveSusceptible* Math.pow(effectiveInfectious, getNonLinearityCoefficient());
+			else 
+				numberOfSusceptibleToInfected = transmissionRate
+				* effectiveSusceptible* effectiveInfectious;
+			
+			
+			
+			
+			// ******* EVOLVING DISEASE MODEL *************** //
+			////////////////////////////////////////////////////
+			
+			
+
+			// Determine delta S
+			double deltaS = numberOfRecoveredToSusceptible - numberOfSusceptibleToInfected;
+			// Determine delta I
+			double deltaI = numberOfSusceptibleToInfected- numberOfInfectedToRecovered - diseaseDeaths;
+			// Determine delta R
+			double deltaR = numberOfInfectedToRecovered - numberOfRecoveredToSusceptible;
+
+			/////////////////////////////////////////////////////////////////////////////
+			// added to express the transitions. Necessary to support stochastic modeling
+			// S->I
+			Exchange siExchange = (Exchange)ExchangePool.POOL.get(); 
+			siExchange.setSource(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+			siExchange.setTarget(StandardPackage.eINSTANCE.getSILabelValue_I());
+			siExchange.setCount(numberOfSusceptibleToInfected);
+			siExchange.getForIncidence().add(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_Incidence());
+			siExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			deltaValue.getDepartures().add(siExchange);
+
+			// I->R
+			Exchange irExchange = (Exchange)ExchangePool.POOL.get(); 
+			irExchange.setSource(StandardPackage.eINSTANCE.getSILabelValue_I());
+			irExchange.setTarget(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+			irExchange.setCount(numberOfInfectedToRecovered);
+			irExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			deltaValue.getDepartures().add(irExchange);
+
+			// R->S
+			Exchange rsExchange = (Exchange)ExchangePool.POOL.get(); 
+			rsExchange.setSource(StandardPackage.eINSTANCE.getSIRLabelValue_R());
+			rsExchange.setTarget(StandardPackage.eINSTANCE.getStandardDiseaseModelLabelValue_S());
+			rsExchange.setCount(numberOfRecoveredToSusceptible);
+			rsExchange.setType(ExchangeType.COMPARTMENT_TRANSITION);
+			deltaValue.getDepartures().add(rsExchange);
+			// added to express the transitions. Necessary to support stochastic modeling
+			/////////////////////////////////////////////////////////////////////////////
+			
+			// If there is a control label attached to the region, we need to adjust for any interventions in effect.
+
+			StandardInterventionLabel scl = findInterventionLabel((Node)diseaseLabel.getIdentifiable());
+			if(scl != null) {
+				double vaccinations = ((StandardInterventionLabelValue)scl.getCurrentValue()).getVaccinations();
+				double isolations = ((StandardInterventionLabelValue)scl.getCurrentValue()).getIsolations();
+				vaccinations *= ((double) timeDelta / (double) getTimePeriod());
+				isolations *= ((double) timeDelta / (double) getTimePeriod());
+
+				if(currentSIR.getS() < vaccinations) vaccinations = currentSIR.getS();
+				if(currentSIR.getI() < isolations) isolations = currentSIR.getI();
+
+				deltaS -= vaccinations;
+				deltaR += vaccinations;
+				deltaI -= isolations;
+				deltaR += isolations;
+			}
+
+			SIRLabelValueImpl ret = (SIRLabelValueImpl)deltaValue;
+			ret.setS(deltaS);
+			ret.setI(deltaI);
+			ret.setIncidence(numberOfInfectedToRecovered);
+			ret.setR(deltaR);
+			ret.setDiseaseDeaths(diseaseDeaths);
+
+			computeAdditionalDeltasAndExchanges(ilabel, time, t, timeDelta);
+		}
+
+	} // computeTransitions
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public DiseaseModelLabel createDiseaseModelLabel(String populationIdentifier) {	
+		DiseaseModelLabel label = EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabel(); 
+		label.setTypeURI(DiseaseModelLabel.URI_TYPE_DYNAMIC_DISEASE_LABEL);
+
+		return label;
+	} // createDiseaseModelLabel
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public DiseaseModelLabelValue createDiseaseModelLabelValue(String populationIdentifier) {
+		return EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabelValue(); 
+	}
+
+} //EvolvingSIRDiseaseModelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelLabelImpl.java
new file mode 100644
index 0000000..ed35791
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelLabelImpl.java
@@ -0,0 +1,52 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelLabelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SIR Disease Model Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelLabelImpl extends StandardDiseaseModelLabelImpl implements EvolvingSIRDiseaseModelLabel {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public EvolvingSIRDiseaseModelLabelImpl() {
+		super();
+		setCurrentValue(EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabelValue());
+		setNextValue(EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabelValue());
+		setTempValue(EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabelValue());
+		setProbeValue(EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabelValue());
+		setErrorScale(EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabelValue());
+		setDeltaValue(EvolvingFactory.eINSTANCE.createEvolvingSIRDiseaseModelLabelValue());		
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SIR_DISEASE_MODEL_LABEL;
+	}
+
+
+							
+
+} //EvolvingSIRDiseaseModelLabelImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelLabelValueImpl.java
new file mode 100644
index 0000000..afa5ab0
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/impl/EvolvingSIRDiseaseModelLabelValueImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.impl.SIRLabelValueImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SIR Disease Model Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelLabelValueImpl extends SIRLabelValueImpl implements EvolvingSIRDiseaseModelLabelValue {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelLabelValueImpl() {
+		super();
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EvolvingPackage.Literals.EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE;
+	}
+							
+
+} //EvolvingSIRDiseaseModelLabelValueImpl
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingActionBarContributor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingActionBarContributor.java
new file mode 100644
index 0000000..68a64ff
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingActionBarContributor.java
@@ -0,0 +1,423 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingEditPlugin;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Evolving model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(EvolvingEditPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					EvolvingEditPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(EvolvingEditPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("evolving-settings"));
+		toolBarManager.add(new Separator("evolving-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingEditor_menu"), "org.eclipse.stem.diseasemodels.evolvingMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(EvolvingEditPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(EvolvingEditPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(EvolvingEditPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(EvolvingEditPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingEditor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingEditor.java
new file mode 100644
index 0000000..48b27c9
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingEditor.java
@@ -0,0 +1,1807 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.stem.core.common.provider.CommonItemProviderAdapterFactory;
+import org.eclipse.stem.core.graph.provider.GraphItemProviderAdapterFactory;
+import org.eclipse.stem.core.logger.provider.LoggerItemProviderAdapterFactory;
+import org.eclipse.stem.core.model.provider.ModelItemProviderAdapterFactory;
+import org.eclipse.stem.core.modifier.provider.ModifierItemProviderAdapterFactory;
+import org.eclipse.stem.core.scenario.provider.ScenarioItemProviderAdapterFactory;
+import org.eclipse.stem.core.sequencer.provider.SequencerItemProviderAdapterFactory;
+import org.eclipse.stem.core.solver.provider.SolverItemProviderAdapterFactory;
+import org.eclipse.stem.definitions.labels.provider.LabelsItemProviderAdapterFactory;
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingEditPlugin;
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingItemProviderAdapterFactory;
+import org.eclipse.stem.diseasemodels.standard.provider.StandardItemProviderAdapterFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+
+/**
+ * This is an example of a Evolving model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(EvolvingEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(EvolvingEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == EvolvingEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(EvolvingEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == EvolvingEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					EvolvingEditPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(EvolvingEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "org.eclipse.stem.diseasemodels.evolving",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					EvolvingEditPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						EvolvingEditPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EvolvingItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CommonItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new GraphItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ModelItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ModifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ScenarioItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SequencerItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new StandardItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new LoggerItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SolverItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new org.eclipse.stem.populationmodels.standard.provider.StandardItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new LabelsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "org.eclipse.stem.diseasemodels.evolving",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "org.eclipse.stem.diseasemodels.evolving",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), EvolvingEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					EvolvingEditor.this.setSelectionToViewer(selection);
+					EvolvingEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			EvolvingEditPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return EvolvingEditPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return EvolvingEditPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingModelWizard.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingModelWizard.java
new file mode 100644
index 0000000..1816b61
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingModelWizard.java
@@ -0,0 +1,606 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.core.resources.IContainer;
+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.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+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;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingFactory;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingEditPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+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.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingPackage evolvingPackage = EvolvingPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingFactory evolvingFactory = evolvingPackage.getEvolvingFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(EvolvingEditPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(EvolvingEditPlugin.INSTANCE.getImage("full/wizban/NewEvolving")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : evolvingPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)evolvingPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = evolvingFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							EvolvingEditPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), EvolvingEditPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			EvolvingEditPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class EvolvingModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public EvolvingModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(EvolvingEditPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class EvolvingModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public EvolvingModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(EvolvingEditPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(EvolvingEditPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return EvolvingEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				EvolvingEditPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(EvolvingEditPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new EvolvingModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingModelWizard_label"));
+		newFileCreationPage.setDescription(EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingModelWizard_description"));
+		newFileCreationPage.setFileName(EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new EvolvingModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(EvolvingEditPlugin.INSTANCE.getString("_UI_EvolvingModelWizard_label"));
+		initialObjectCreationPage.setDescription(EvolvingEditPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingPropertyEditorAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingPropertyEditorAdapterFactory.java
new file mode 100644
index 0000000..06e308b
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingPropertyEditorAdapterFactory.java
@@ -0,0 +1,69 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.stem.diseasemodels.evolving.util.EvolvingAdapterFactory;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapter;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapterFactory;
+import org.eclipse.ui.IStartup;
+
+/**
+ * @generated
+ */
+public class EvolvingPropertyEditorAdapterFactory extends
+		EvolvingAdapterFactory implements IStartup, DiseaseModelPropertyEditorAdapterFactory {
+
+	/**
+	 * @generated
+	 */
+	public EvolvingPropertyEditorAdapterFactory() {
+		super();
+		DiseaseModelPropertyEditorAdapterFactory.INSTANCE.addAdapterFactory(this);
+	}
+
+	/**
+	 * @generated
+	 */
+	public void earlyStartup() {
+		new EvolvingPropertyStringProviderAdapterFactory();
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIDiseaseModelAdapter() {
+		return new EvolvingSIDiseaseModelPropertyEditorAdapter();
+	}
+	
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIRDiseaseModelAdapter() {
+		return new EvolvingSIRDiseaseModelPropertyEditorAdapter();
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSEIRDiseaseModelAdapter() {
+		return new EvolvingSEIRDiseaseModelPropertyEditorAdapter();
+	}
+
+	/**
+	 * @generated
+	 */
+	public boolean isFactoryForType(Object type) {
+		boolean isType = super.isFactoryForType(type);
+		isType = isType || type == DiseaseModelPropertyEditorAdapter.class;
+		return isType;
+	}
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingPropertyStringProviderAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingPropertyStringProviderAdapterFactory.java
new file mode 100644
index 0000000..d8b30b8
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingPropertyStringProviderAdapterFactory.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.stem.diseasemodels.evolving.util.EvolvingAdapterFactory;
+import org.eclipse.stem.ui.adapters.propertystrings.PropertyStringProvider;
+import org.eclipse.stem.ui.adapters.propertystrings.PropertyStringProviderAdapterFactory;
+
+/**
+ * @generated
+ */
+public class EvolvingPropertyStringProviderAdapterFactory extends
+		EvolvingAdapterFactory implements
+		PropertyStringProviderAdapterFactory {
+	/**
+	 * @generated
+	 */
+	public EvolvingPropertyStringProviderAdapterFactory() {
+		super();
+		PropertyStringProviderAdapterFactory.INSTANCE.addAdapterFactory(this);
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return super.isFactoryForType(type)
+				|| type == PropertyStringProvider.class;
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIDiseaseModelAdapter() {
+		return new EvolvingSIDiseaseModelPropertyEditor.EvolvingSIDiseaseModelPropertyStringProviderAdapter();
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIRDiseaseModelAdapter() {
+		return new EvolvingSIRDiseaseModelPropertyEditor.EvolvingSIRDiseaseModelPropertyStringProviderAdapter();
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSEIRDiseaseModelAdapter() {
+		return new EvolvingSEIRDiseaseModelPropertyEditor.EvolvingSEIRDiseaseModelPropertyStringProviderAdapter();
+	}
+	
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingRelativeValueProviderAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingRelativeValueProviderAdapterFactory.java
new file mode 100644
index 0000000..d673879
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingRelativeValueProviderAdapterFactory.java
@@ -0,0 +1,505 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.ui.provider.PropertySource;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+
+import org.eclipse.stem.definitions.adapters.relativevalue.RelativeValueProvider;
+import org.eclipse.stem.definitions.adapters.relativevalue.RelativeValueProviderAdapterFactory;
+
+import org.eclipse.stem.diseasemodels.evolving.provider.EvolvingItemProviderAdapterFactory;
+
+import org.eclipse.stem.diseasemodels.evolving.util.EvolvingAdapterFactory;
+
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+
+import org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelRelativeValueProvider;
+import org.eclipse.stem.diseasemodels.standard.provider.StandardRelativeValueProviderAdapterFactory.DiseaseModelLabelValueRelativeValueProvider;
+
+import org.eclipse.ui.IStartup;
+
+/**
+ * @generated
+ */
+public class EvolvingRelativeValueProviderAdapterFactory extends
+		EvolvingAdapterFactory 
+		implements IStartup, RelativeValueProviderAdapterFactory {
+	
+	/**
+	 * This keeps track of the root adapter factory that delegates to this
+	 * adapter factory.
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement
+	 * {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This factory is used to create item providers for the adapted classes.
+	 * The item providers are used as property sources to get the properties
+	 * that can have relative values.
+	 */
+	private static EvolvingItemProviderAdapterFactory itemProviderFactory;	
+	
+	
+	/**
+	 * @generated
+	 */
+	public EvolvingRelativeValueProviderAdapterFactory() {
+		super();
+		RelativeValueProviderAdapterFactory.INSTANCE.addAdapterFactory(this);
+	}
+
+	/**
+	 * @generated
+	 */
+	public void earlyStartup() {
+		new EvolvingRelativeValueProviderAdapterFactory();
+	}
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.IChangeNotifier#addListener(org.eclipse.emf.edit.provider.INotifyChangedListener)
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	} // addListener
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.IChangeNotifier#fireNotifyChanged(org.eclipse.emf.common.notify.Notification)
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	} // fireNotifyChanged
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.IChangeNotifier#removeListener(org.eclipse.emf.edit.provider.INotifyChangedListener)
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	} // removeListener
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.ComposeableAdapterFactory#getRootAdapterFactory()
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory
+				.getRootAdapterFactory();
+	} // getRootAdapterFactory
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.ComposeableAdapterFactory#setParentAdapterFactory(org.eclipse.emf.edit.provider.ComposedAdapterFactory)
+	 * @generated
+	 */
+	public void setParentAdapterFactory(
+			ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	} // setParentAdapterFactory
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * 
+	 * @see org.eclipse.emf.edit.provider.IDisposable#dispose()
+	 * @generated
+	 */
+	public void dispose() {
+		// Nothing
+	} // dispose
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return super.isFactoryForType(type)
+				|| type == RelativeValueProvider.class;
+	}
+
+	/**
+	 * @return the instance of the Relative Value Provider Adapter Factory
+	 * @generated
+	 */
+	private static RelativeValueProviderAdapterFactory getRelativeValueProviderAdapterFactory() {
+		return RelativeValueProviderAdapterFactory.INSTANCE;
+	}
+
+	/**
+	 * @return the instance of the Standard Item Provider factory.
+	 * @generated
+	 */
+	private static EvolvingItemProviderAdapterFactory getItemProviderFactory() {
+		if (itemProviderFactory == null) {
+			itemProviderFactory = new EvolvingItemProviderAdapterFactory();
+		}
+		return itemProviderFactory;
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIDiseaseModelLabelAdapter() {
+		return new EvolvingSIDiseaseModelLabelRelativeValueProviderAdapter();
+	}
+	
+ 
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIRDiseaseModelLabelAdapter() {
+		return new EvolvingSIRDiseaseModelLabelRelativeValueProviderAdapter();
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSEIRDiseaseModelLabelAdapter() {
+		return new EvolvingSEIRDiseaseModelLabelRelativeValueProviderAdapter();
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIDiseaseModelLabelValueAdapter() {
+		return new EvolvingSIDiseaseModelLabelValueRelativeValueProviderAdapter();
+	}
+	
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIRDiseaseModelLabelValueAdapter() {
+		return new EvolvingSIRDiseaseModelLabelValueRelativeValueProviderAdapter();
+	}
+
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSEIRDiseaseModelLabelValueAdapter() {
+		return new EvolvingSEIRDiseaseModelLabelValueRelativeValueProviderAdapter();
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSIDiseaseModelLabelRelativeValueProviderAdapter 
+		extends DiseaseModelLabelRelativeValueProvider {
+	
+		/**
+		 * @generated
+		 */
+		private IntegrationLabelValue getCurrentLabelValue() {
+			return (IntegrationLabelValue)((IntegrationLabel)getTarget()).getCurrentValue();
+		}
+
+		/**
+		 * @generated
+		 */
+		private RelativeValueProvider getCurrentLabelValueRelativeValueProvider() {
+			return (RelativeValueProvider)getRelativeValueProviderAdapterFactory()
+				.adapt(getCurrentLabelValue(), RelativeValueProvider.class);
+		} 
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			return getCurrentLabelValueRelativeValueProvider().getProperties();
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			return getCurrentLabelValueRelativeValueProvider().getRelativeValue(feature);
+		}
+  
+  		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getCurrentLabelValue()).getPopulationCount();
+		}  
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSIRDiseaseModelLabelRelativeValueProviderAdapter 
+		extends DiseaseModelLabelRelativeValueProvider {
+	
+		/**
+		 * @generated
+		 */
+		private IntegrationLabelValue getCurrentLabelValue() {
+			return (IntegrationLabelValue)((IntegrationLabel)getTarget()).getCurrentValue();
+		}
+
+		/**
+		 * @generated
+		 */
+		private RelativeValueProvider getCurrentLabelValueRelativeValueProvider() {
+			return (RelativeValueProvider)getRelativeValueProviderAdapterFactory()
+				.adapt(getCurrentLabelValue(), RelativeValueProvider.class);
+		} 
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			return getCurrentLabelValueRelativeValueProvider().getProperties();
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			return getCurrentLabelValueRelativeValueProvider().getRelativeValue(feature);
+		}
+  
+  		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getCurrentLabelValue()).getPopulationCount();
+		}  
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSEIRDiseaseModelLabelRelativeValueProviderAdapter 
+		extends DiseaseModelLabelRelativeValueProvider {
+	
+		/**
+		 * @generated
+		 */
+		private IntegrationLabelValue getCurrentLabelValue() {
+			return (IntegrationLabelValue)((IntegrationLabel)getTarget()).getCurrentValue();
+		}
+
+		/**
+		 * @generated
+		 */
+		private RelativeValueProvider getCurrentLabelValueRelativeValueProvider() {
+			return (RelativeValueProvider)getRelativeValueProviderAdapterFactory()
+				.adapt(getCurrentLabelValue(), RelativeValueProvider.class);
+		} 
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			return getCurrentLabelValueRelativeValueProvider().getProperties();
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			return getCurrentLabelValueRelativeValueProvider().getRelativeValue(feature);
+		}
+  
+  		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getCurrentLabelValue()).getPopulationCount();
+		}  
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSIDiseaseModelLabelValueRelativeValueProviderAdapter 
+		extends DiseaseModelLabelValueRelativeValueProvider {
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			final IItemPropertySource propertySource = (IItemPropertySource)getItemProviderFactory()
+					.adapt(getTarget(), PropertySource.class);
+
+			final List<IItemPropertyDescriptor> properties = new ArrayList<IItemPropertyDescriptor>();
+			for (IItemPropertyDescriptor descriptor : propertySource.getPropertyDescriptors(null)) {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				if (!(feature instanceof EReference)) {
+					properties.add(descriptor);
+				}
+			}
+			return properties;
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			final IntegrationLabelValue labelValue = (IntegrationLabelValue)getTarget();
+			final double stateCount = labelValue.eGetDouble(feature.getFeatureID());
+			final double denominator = getDenominator(feature);
+			if (denominator <= 0.0) {
+				return 0.0;
+			}
+			return stateCount / denominator;
+		}
+		
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getTarget()).getPopulationCount();
+		}
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSIRDiseaseModelLabelValueRelativeValueProviderAdapter 
+		extends DiseaseModelLabelValueRelativeValueProvider {
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			final IItemPropertySource propertySource = (IItemPropertySource)getItemProviderFactory()
+					.adapt(getTarget(), PropertySource.class);
+
+			final List<IItemPropertyDescriptor> properties = new ArrayList<IItemPropertyDescriptor>();
+			for (IItemPropertyDescriptor descriptor : propertySource.getPropertyDescriptors(null)) {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				if (!(feature instanceof EReference)) {
+					properties.add(descriptor);
+				}
+			}
+			return properties;
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			final IntegrationLabelValue labelValue = (IntegrationLabelValue)getTarget();
+			final double stateCount = labelValue.eGetDouble(feature.getFeatureID());
+			final double denominator = getDenominator(feature);
+			if (denominator <= 0.0) {
+				return 0.0;
+			}
+			return stateCount / denominator;
+		}
+		
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getTarget()).getPopulationCount();
+		}
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSEIRDiseaseModelLabelValueRelativeValueProviderAdapter 
+		extends DiseaseModelLabelValueRelativeValueProvider {
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public List<IItemPropertyDescriptor> getProperties() {
+			final IItemPropertySource propertySource = (IItemPropertySource)getItemProviderFactory()
+					.adapt(getTarget(), PropertySource.class);
+
+			final List<IItemPropertyDescriptor> properties = new ArrayList<IItemPropertyDescriptor>();
+			for (IItemPropertyDescriptor descriptor : propertySource.getPropertyDescriptors(null)) {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				if (!(feature instanceof EReference)) {
+					properties.add(descriptor);
+				}
+			}
+			return properties;
+		}
+
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getRelativeValue(final EStructuralFeature feature) {
+			final IntegrationLabelValue labelValue = (IntegrationLabelValue)getTarget();
+			final double stateCount = labelValue.eGetDouble(feature.getFeatureID());
+			final double denominator = getDenominator(feature);
+			if (denominator <= 0.0) {
+				return 0.0;
+			}
+			return stateCount / denominator;
+		}
+		
+		/**
+		 * @generated
+		 */
+		@Override
+		public double getDenominator(final EStructuralFeature feature) {
+			return ((DiseaseModelLabelValue)getTarget()).getPopulationCount();
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSEIRDiseaseModelPropertyEditor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSEIRDiseaseModelPropertyEditor.java
new file mode 100644
index 0000000..bf8df53
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSEIRDiseaseModelPropertyEditor.java
@@ -0,0 +1,161 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import java.util.MissingResourceException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @generated
+ */
+public class EvolvingSEIRDiseaseModelPropertyEditor extends
+		EvolvingSIRDiseaseModelPropertyEditor {
+	/**
+	 * @param parent
+	 * @param style
+	 * @param model
+	 * @param projectValidator
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelPropertyEditor(Composite parent, int style,
+			DiseaseModel model, ModifyListener projectValidator,
+			IProject project) {
+		super(parent, style, model, projectValidator, project);
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public void populate(DiseaseModel object) {
+		super.populate(object);
+
+		EvolvingSEIRDiseaseModel model = (EvolvingSEIRDiseaseModel)object;
+
+ 		// Set value for Incubation Rate (Double)
+		try {
+			Double incubationRateValue = Double.parseDouble(
+				map.get(EvolvingPackage.Literals.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE).getText());
+			model.setIncubationRate(incubationRateValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean validate() {
+		boolean valid = super.validate();
+
+		valid = valid && validateFeatureConstraint(EvolvingPackage.Literals.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE);
+
+		return valid;
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSEIRDiseaseModelPropertyStringProviderAdapter
+		extends StandardPropertyStringProviderAdapter {
+		/**
+		 * @param descriptor
+		 * @return the NLS'd name of the property to display to the user
+		 * @generated
+		 */
+		public String getPropertyName(IItemPropertyDescriptor descriptor) {
+			try {
+				return EvolvingWizardMessages
+						.getString(((EStructuralFeature) descriptor
+								.getFeature(null)).getName(), "EvolvingSEIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyName(descriptor);
+			}
+		} // getPropertyName
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd tool tip text that describes the property
+		 * @generated
+		 */
+		public String getPropertyToolTip(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + TT_SUFFIX, "EvolvingSEIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyToolTip(descriptor);
+			}
+		} // getPropertyToolTip
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text that represents the units of the
+		 *         property
+		 * @generated
+		 */
+		public String getPropertyUnits(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + UNIT_SUFFIX, "EvolvingSEIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyUnits(descriptor);
+			}
+		} // getPropertyUnits
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyMissing(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + MISSING_SUFFIX, "EvolvingSEIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyMissing(descriptor);
+			}
+		} // getPropertyMissing
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyInvalid(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + INVALID_SUFFIX, "EvolvingSEIRDiseaseModel");
+			} catch (MissingResourceException e) {	
+				return super.getPropertyInvalid(descriptor);
+			}
+		} // getPropertyInvalid		
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSEIRDiseaseModelPropertyEditorAdapter.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSEIRDiseaseModelPropertyEditorAdapter.java
new file mode 100644
index 0000000..11ad070
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSEIRDiseaseModelPropertyEditorAdapter.java
@@ -0,0 +1,34 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditor;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapter;
+import org.eclipse.stem.ui.wizards.DiseaseModelPropertyComposite;
+import org.eclipse.swt.events.ModifyListener;
+
+/**
+ * @generated
+ */
+public class EvolvingSEIRDiseaseModelPropertyEditorAdapter extends
+		DiseaseModelPropertyEditorAdapter {
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public DiseaseModelPropertyEditor createDiseaseModelPropertyEditor(
+			DiseaseModelPropertyComposite composite,
+			int style, ModifyListener projectValidator, IProject project) {
+		return new EvolvingSEIRDiseaseModelPropertyEditor(
+				composite, style,
+				(DiseaseModel)getTarget(), projectValidator, project);
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIDiseaseModelPropertyEditor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIDiseaseModelPropertyEditor.java
new file mode 100644
index 0000000..7d515dd
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIDiseaseModelPropertyEditor.java
@@ -0,0 +1,152 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import java.util.MissingResourceException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditor;
+import org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @generated
+ */
+public class EvolvingSIDiseaseModelPropertyEditor extends
+		StandardDiseaseModelPropertyEditor {
+	/**
+	 * @param parent
+	 * @param style
+	 * @param model
+	 * @param projectValidator
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelPropertyEditor(Composite parent, int style,
+			DiseaseModel model, ModifyListener projectValidator,
+			IProject project) {
+		super(parent, style, model, projectValidator, project);
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public void populate(DiseaseModel object) {
+		super.populate(object);
+
+		// Remove Comment If Adding Custom Code
+		//EvolvingSIDiseaseModel model = (EvolvingSIDiseaseModel)object;
+
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean validate() {
+		boolean valid = super.validate();
+
+
+		return valid;
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSIDiseaseModelPropertyStringProviderAdapter
+		extends StandardPropertyStringProviderAdapter {
+		/**
+		 * @param descriptor
+		 * @return the NLS'd name of the property to display to the user
+		 * @generated
+		 */
+		public String getPropertyName(IItemPropertyDescriptor descriptor) {
+			try {
+				return EvolvingWizardMessages
+						.getString(((EStructuralFeature) descriptor
+								.getFeature(null)).getName(), "EvolvingSIDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyName(descriptor);
+			}
+		} // getPropertyName
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd tool tip text that describes the property
+		 * @generated
+		 */
+		public String getPropertyToolTip(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + TT_SUFFIX, "EvolvingSIDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyToolTip(descriptor);
+			}
+		} // getPropertyToolTip
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text that represents the units of the
+		 *         property
+		 * @generated
+		 */
+		public String getPropertyUnits(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + UNIT_SUFFIX, "EvolvingSIDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyUnits(descriptor);
+			}
+		} // getPropertyUnits
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyMissing(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + MISSING_SUFFIX, "EvolvingSIDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyMissing(descriptor);
+			}
+		} // getPropertyMissing
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyInvalid(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + INVALID_SUFFIX, "EvolvingSIDiseaseModel");
+			} catch (MissingResourceException e) {	
+				return super.getPropertyInvalid(descriptor);
+			}
+		} // getPropertyInvalid		
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIDiseaseModelPropertyEditorAdapter.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIDiseaseModelPropertyEditorAdapter.java
new file mode 100644
index 0000000..304d1ed
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIDiseaseModelPropertyEditorAdapter.java
@@ -0,0 +1,34 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditor;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapter;
+import org.eclipse.stem.ui.wizards.DiseaseModelPropertyComposite;
+import org.eclipse.swt.events.ModifyListener;
+
+/**
+ * @generated
+ */
+public class EvolvingSIDiseaseModelPropertyEditorAdapter extends
+		DiseaseModelPropertyEditorAdapter {
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public DiseaseModelPropertyEditor createDiseaseModelPropertyEditor(
+			DiseaseModelPropertyComposite composite,
+			int style, ModifyListener projectValidator, IProject project) {
+		return new EvolvingSIDiseaseModelPropertyEditor(
+				composite, style,
+				(DiseaseModel)getTarget(), projectValidator, project);
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIRDiseaseModelPropertyEditor.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIRDiseaseModelPropertyEditor.java
new file mode 100644
index 0000000..68065e1
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIRDiseaseModelPropertyEditor.java
@@ -0,0 +1,161 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import java.util.MissingResourceException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory.StandardPropertyStringProviderAdapter;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelPropertyEditor extends
+		EvolvingSIDiseaseModelPropertyEditor {
+	/**
+	 * @param parent
+	 * @param style
+	 * @param model
+	 * @param projectValidator
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelPropertyEditor(Composite parent, int style,
+			DiseaseModel model, ModifyListener projectValidator,
+			IProject project) {
+		super(parent, style, model, projectValidator, project);
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public void populate(DiseaseModel object) {
+		super.populate(object);
+
+		EvolvingSIRDiseaseModel model = (EvolvingSIRDiseaseModel)object;
+
+ 		// Set value for Immunity Loss Rate (Double)
+		try {
+			Double immunityLossRateValue = Double.parseDouble(
+				map.get(EvolvingPackage.Literals.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE).getText());
+			model.setImmunityLossRate(immunityLossRateValue);
+		} catch (NumberFormatException nfe) {
+			// empty
+		}
+	}
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public boolean validate() {
+		boolean valid = super.validate();
+
+		valid = valid && validateFeatureConstraint(EvolvingPackage.Literals.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE);
+
+		return valid;
+	}
+
+
+	/**
+	 * @generated
+	 */
+	public static class EvolvingSIRDiseaseModelPropertyStringProviderAdapter
+		extends StandardPropertyStringProviderAdapter {
+		/**
+		 * @param descriptor
+		 * @return the NLS'd name of the property to display to the user
+		 * @generated
+		 */
+		public String getPropertyName(IItemPropertyDescriptor descriptor) {
+			try {
+				return EvolvingWizardMessages
+						.getString(((EStructuralFeature) descriptor
+								.getFeature(null)).getName(), "EvolvingSIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyName(descriptor);
+			}
+		} // getPropertyName
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd tool tip text that describes the property
+		 * @generated
+		 */
+		public String getPropertyToolTip(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + TT_SUFFIX, "EvolvingSIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyToolTip(descriptor);
+			}
+		} // getPropertyToolTip
+
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text that represents the units of the
+		 *         property
+		 * @generated
+		 */
+		public String getPropertyUnits(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + UNIT_SUFFIX, "EvolvingSIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyUnits(descriptor);
+			}
+		} // getPropertyUnits
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyMissing(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + MISSING_SUFFIX, "EvolvingSIRDiseaseModel");
+			} catch (MissingResourceException e) {
+				return super.getPropertyMissing(descriptor);
+			}
+		} // getPropertyMissing
+		
+		/**
+		 * @param descriptor
+		 * @return the NLS'd text for a missing property error message
+		 * @generated
+		 */
+		public String getPropertyInvalid(
+				IItemPropertyDescriptor descriptor) {
+			try {
+				final EStructuralFeature feature = (EStructuralFeature) descriptor
+						.getFeature(null);
+				return EvolvingWizardMessages.getString(feature
+						.getName() + INVALID_SUFFIX, "EvolvingSIRDiseaseModel");
+			} catch (MissingResourceException e) {	
+				return super.getPropertyInvalid(descriptor);
+			}
+		} // getPropertyInvalid		
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIRDiseaseModelPropertyEditorAdapter.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIRDiseaseModelPropertyEditorAdapter.java
new file mode 100644
index 0000000..0fede85
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingSIRDiseaseModelPropertyEditorAdapter.java
@@ -0,0 +1,34 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditor;
+import org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor.DiseaseModelPropertyEditorAdapter;
+import org.eclipse.stem.ui.wizards.DiseaseModelPropertyComposite;
+import org.eclipse.swt.events.ModifyListener;
+
+/**
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelPropertyEditorAdapter extends
+		DiseaseModelPropertyEditorAdapter {
+
+	/**
+	 * @generated
+	 */
+	@Override
+	public DiseaseModelPropertyEditor createDiseaseModelPropertyEditor(
+			DiseaseModelPropertyComposite composite,
+			int style, ModifyListener projectValidator, IProject project) {
+		return new EvolvingSIRDiseaseModelPropertyEditor(
+				composite, style,
+				(DiseaseModel)getTarget(), projectValidator, project);
+	}
+
+}
\ No newline at end of file
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingWizardMessages.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingWizardMessages.java
new file mode 100644
index 0000000..6cdafd3
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/EvolvingWizardMessages.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.presentation;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * @generated
+ */
+public class EvolvingWizardMessages {
+	/**
+	 * @generated
+	 */
+	private static final String BUNDLE_NAME = "org.eclipse.stem.diseasemodels.evolving.presentation.messages"; //$NON-NLS-1$
+
+	/**
+	 * @generated
+	 */
+	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+
+	/**
+	 * @generated
+	 */
+	public EvolvingWizardMessages() {
+		// empty
+	}
+
+	/**
+	 * @param key the key for the message
+	 * @return the string that matches the key
+	 * @throws MissingResourceException if the key cannot be found
+	 * @generated
+	 */
+	public static String getString(String key) throws MissingResourceException {
+		return RESOURCE_BUNDLE.getString(key);
+	}
+	
+	/**
+	 * @param key the key for the message
+	 * @param context the class name for which this key resides
+	 * @return the string that matches the key
+	 * @throws MissingResourceException if the key cannot be found
+	 * @generated
+	 */
+	public static String getString(String key, String context) throws MissingResourceException {
+		return RESOURCE_BUNDLE.getString(context +"."+ key);
+	}	
+	
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/messages.properties b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/messages.properties
new file mode 100644
index 0000000..b9c1bb4
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/presentation/messages.properties
@@ -0,0 +1,41 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+# Messages for EvolvingSIDiseaseModel
+ 
+EvolvingSIRDiseaseModel.immunityLossRate = Immunity Loss Rate
+EvolvingSIRDiseaseModel.immunityLossRateTT = Immunity Loss Rate
+EvolvingSIRDiseaseModel.immunityLossRateUNIT = [1/time] 
+EvolvingSIRDiseaseModel.immunityLossRateMISSING = A value for Immunity Loss Rate is required
+EvolvingSIRDiseaseModel.immunityLossRateINVALID = The value for Immunity Loss Rate is invalid
+EvolvingSEIRDiseaseModel.incubationRate = Incubation Rate
+EvolvingSEIRDiseaseModel.incubationRateTT = Incubation Rate
+EvolvingSEIRDiseaseModel.incubationRateUNIT = [1/time] 
+EvolvingSEIRDiseaseModel.incubationRateMISSING = A value for Incubation Rate is required
+EvolvingSEIRDiseaseModel.incubationRateINVALID = The value for Incubation Rate is invalid
+
+EvolvingSEIRDiseaseModel.caseMutationRate = Case Mutation Rate
+EvolvingSEIRDiseaseModel.caseMutationRateTT = Case Mutation Rate
+EvolvingSEIRDiseaseModel.caseMutationRateUNIT = [1/time] 
+EvolvingSEIRDiseaseModel.caseMutationRateMISSING = A value for Case Mutation Rate is required
+EvolvingSEIRDiseaseModel.caseMutationRateINVALID = The value for Case Mutation Rate is invalid
+
+EvolvingSEIRDiseaseModel.crossImmunityRate = Cross Immunity Rate
+EvolvingSEIRDiseaseModel.crossImmunityRateTT = Cross Immunity Rate
+EvolvingSEIRDiseaseModel.crossImmunityRateUNIT = [1/time] 
+EvolvingSEIRDiseaseModel.crossImmunityRateMISSING = A value for Cross Immunity Rate is required
+EvolvingSEIRDiseaseModel.crossImmunityRateINVALID = The value for Cross Immunity Rate is invalid
+
+EvolvingSEIRDiseaseModel.genomeLength = Genome Length
+EvolvingSEIRDiseaseModel.genomeLengthTT = Genome Length
+EvolvingSEIRDiseaseModel.genomeLengthUNIT = [eg., nt] 
+EvolvingSEIRDiseaseModel.genomeLengthMISSING = A value for Genome Length is required
+EvolvingSEIRDiseaseModel.genomeLengthINVALID = The value for Genome Length is invalid
+
+EvolvingSEIRDiseaseModel.geneticDistNonlinExponent = GeneticDistance NonlinExponent
+EvolvingSEIRDiseaseModel.geneticDistNonlinExponentTT = GeneticDistance NonlinExponent
+EvolvingSEIRDiseaseModel.geneticDistNonlinExponentUNIT = [none] 
+EvolvingSEIRDiseaseModel.geneticDistNonlinExponentMISSING = A value for GeneticDistance NonlinExponent is required
+EvolvingSEIRDiseaseModel.geneticDistNonlinExponentINVALID = The value for GeneticDistance NonlinExponent is invalid
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingDiseaseTransformerItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingDiseaseTransformerItemProvider.java
new file mode 100644
index 0000000..f693071
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingDiseaseTransformerItemProvider.java
@@ -0,0 +1,239 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.model.provider.TransformationDecoratorItemProvider;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingDiseaseTransformerItemProvider extends TransformationDecoratorItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingDiseaseTransformerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addBaseDiseasePropertyDescriptor(object);
+			addEvolvedDiseasesPropertyDescriptor(object);
+			addEvolutionCountPropertyDescriptor(object);
+			addEvolutionCountHardLimitPropertyDescriptor(object);
+			addStopAllEvolutionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Base Disease feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBaseDiseasePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingDiseaseTransformer_baseDisease_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingDiseaseTransformer_baseDisease_feature", "_UI_EvolvingDiseaseTransformer_type"),
+				 EvolvingPackage.Literals.EVOLVING_DISEASE_TRANSFORMER__BASE_DISEASE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Evolved Diseases feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEvolvedDiseasesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingDiseaseTransformer_evolvedDiseases_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingDiseaseTransformer_evolvedDiseases_feature", "_UI_EvolvingDiseaseTransformer_type"),
+				 EvolvingPackage.Literals.EVOLVING_DISEASE_TRANSFORMER__EVOLVED_DISEASES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Evolution Count feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEvolutionCountPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingDiseaseTransformer_evolutionCount_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingDiseaseTransformer_evolutionCount_feature", "_UI_EvolvingDiseaseTransformer_type"),
+				 EvolvingPackage.Literals.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Evolution Count Hard Limit feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEvolutionCountHardLimitPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingDiseaseTransformer_evolutionCountHardLimit_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingDiseaseTransformer_evolutionCountHardLimit_feature", "_UI_EvolvingDiseaseTransformer_type"),
+				 EvolvingPackage.Literals.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Stop All Evolution feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addStopAllEvolutionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingDiseaseTransformer_stopAllEvolution_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingDiseaseTransformer_stopAllEvolution_feature", "_UI_EvolvingDiseaseTransformer_type"),
+				 EvolvingPackage.Literals.EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns EvolvingDiseaseTransformer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EvolvingDiseaseTransformer"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		URI labelValue = ((EvolvingDiseaseTransformer)object).getURI();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingDiseaseTransformer_type") :
+			getString("_UI_EvolvingDiseaseTransformer_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EvolvingDiseaseTransformer.class)) {
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT:
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__EVOLUTION_COUNT_HARD_LIMIT:
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER__STOP_ALL_EVOLUTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingEditPlugin.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingEditPlugin.java
new file mode 100644
index 0000000..59b4bf7
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingEditPlugin.java
@@ -0,0 +1,103 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.definitions.edges.provider.DefinitionsEditPlugin;
+import org.eclipse.stem.diseasemodels.standard.provider.DiseasemodelsEditPlugin;
+import org.eclipse.stem.populationmodels.standard.provider.StandardEditPlugin;
+
+/**
+ * This is the central singleton for the Evolving editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class EvolvingEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final EvolvingEditPlugin INSTANCE = new EvolvingEditPlugin();
+	
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingEditPlugin() {
+		super
+			(new ResourceLocator [] {
+				CoreEditPlugin.INSTANCE,
+				DiseasemodelsEditPlugin.INSTANCE,
+				EcoreEditPlugin.INSTANCE,
+				StandardEditPlugin.INSTANCE,
+				DefinitionsEditPlugin.INSTANCE,
+			});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+	
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+	
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+	
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingItemProviderAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingItemProviderAdapterFactory.java
new file mode 100644
index 0000000..99a0b18
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingItemProviderAdapterFactory.java
@@ -0,0 +1,417 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.diseasemodels.evolving.util.EvolvingAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingItemProviderAdapterFactory extends EvolvingAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingDiseaseTransformerItemProvider evolvingDiseaseTransformerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingDiseaseTransformerAdapter() {
+		if (evolvingDiseaseTransformerItemProvider == null) {
+			evolvingDiseaseTransformerItemProvider = new EvolvingDiseaseTransformerItemProvider(this);
+		}
+
+		return evolvingDiseaseTransformerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSIDiseaseModelLabelItemProvider evolvingSIDiseaseModelLabelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIDiseaseModelLabelAdapter() {
+		if (evolvingSIDiseaseModelLabelItemProvider == null) {
+			evolvingSIDiseaseModelLabelItemProvider = new EvolvingSIDiseaseModelLabelItemProvider(this);
+		}
+
+		return evolvingSIDiseaseModelLabelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSIDiseaseModelLabelValueItemProvider evolvingSIDiseaseModelLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIDiseaseModelLabelValueAdapter() {
+		if (evolvingSIDiseaseModelLabelValueItemProvider == null) {
+			evolvingSIDiseaseModelLabelValueItemProvider = new EvolvingSIDiseaseModelLabelValueItemProvider(this);
+		}
+
+		return evolvingSIDiseaseModelLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSIDiseaseModelItemProvider evolvingSIDiseaseModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIDiseaseModelAdapter() {
+		if (evolvingSIDiseaseModelItemProvider == null) {
+			evolvingSIDiseaseModelItemProvider = new EvolvingSIDiseaseModelItemProvider(this);
+		}
+
+		return evolvingSIDiseaseModelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSIRDiseaseModelLabelItemProvider evolvingSIRDiseaseModelLabelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIRDiseaseModelLabelAdapter() {
+		if (evolvingSIRDiseaseModelLabelItemProvider == null) {
+			evolvingSIRDiseaseModelLabelItemProvider = new EvolvingSIRDiseaseModelLabelItemProvider(this);
+		}
+
+		return evolvingSIRDiseaseModelLabelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSIRDiseaseModelLabelValueItemProvider evolvingSIRDiseaseModelLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIRDiseaseModelLabelValueAdapter() {
+		if (evolvingSIRDiseaseModelLabelValueItemProvider == null) {
+			evolvingSIRDiseaseModelLabelValueItemProvider = new EvolvingSIRDiseaseModelLabelValueItemProvider(this);
+		}
+
+		return evolvingSIRDiseaseModelLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSIRDiseaseModelItemProvider evolvingSIRDiseaseModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSIRDiseaseModelAdapter() {
+		if (evolvingSIRDiseaseModelItemProvider == null) {
+			evolvingSIRDiseaseModelItemProvider = new EvolvingSIRDiseaseModelItemProvider(this);
+		}
+
+		return evolvingSIRDiseaseModelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSEIRDiseaseModelLabelItemProvider evolvingSEIRDiseaseModelLabelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSEIRDiseaseModelLabelAdapter() {
+		if (evolvingSEIRDiseaseModelLabelItemProvider == null) {
+			evolvingSEIRDiseaseModelLabelItemProvider = new EvolvingSEIRDiseaseModelLabelItemProvider(this);
+		}
+
+		return evolvingSEIRDiseaseModelLabelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSEIRDiseaseModelLabelValueItemProvider evolvingSEIRDiseaseModelLabelValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSEIRDiseaseModelLabelValueAdapter() {
+		if (evolvingSEIRDiseaseModelLabelValueItemProvider == null) {
+			evolvingSEIRDiseaseModelLabelValueItemProvider = new EvolvingSEIRDiseaseModelLabelValueItemProvider(this);
+		}
+
+		return evolvingSEIRDiseaseModelLabelValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvolvingSEIRDiseaseModelItemProvider evolvingSEIRDiseaseModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEvolvingSEIRDiseaseModelAdapter() {
+		if (evolvingSEIRDiseaseModelItemProvider == null) {
+			evolvingSEIRDiseaseModelItemProvider = new EvolvingSEIRDiseaseModelItemProvider(this);
+		}
+
+		return evolvingSEIRDiseaseModelItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (evolvingDiseaseTransformerItemProvider != null) evolvingDiseaseTransformerItemProvider.dispose();
+		if (evolvingSIDiseaseModelLabelItemProvider != null) evolvingSIDiseaseModelLabelItemProvider.dispose();
+		if (evolvingSIDiseaseModelLabelValueItemProvider != null) evolvingSIDiseaseModelLabelValueItemProvider.dispose();
+		if (evolvingSIDiseaseModelItemProvider != null) evolvingSIDiseaseModelItemProvider.dispose();
+		if (evolvingSIRDiseaseModelLabelItemProvider != null) evolvingSIRDiseaseModelLabelItemProvider.dispose();
+		if (evolvingSIRDiseaseModelLabelValueItemProvider != null) evolvingSIRDiseaseModelLabelValueItemProvider.dispose();
+		if (evolvingSIRDiseaseModelItemProvider != null) evolvingSIRDiseaseModelItemProvider.dispose();
+		if (evolvingSEIRDiseaseModelLabelItemProvider != null) evolvingSEIRDiseaseModelLabelItemProvider.dispose();
+		if (evolvingSEIRDiseaseModelLabelValueItemProvider != null) evolvingSEIRDiseaseModelLabelValueItemProvider.dispose();
+		if (evolvingSEIRDiseaseModelItemProvider != null) evolvingSEIRDiseaseModelItemProvider.dispose();
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelItemProvider.java
new file mode 100644
index 0000000..b4c70eb
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelItemProvider.java
@@ -0,0 +1,123 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSEIRDiseaseModelItemProvider
+	extends EvolvingSIRDiseaseModelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIncubationRatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Incubation Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIncubationRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingSEIRDiseaseModel_incubationRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingSEIRDiseaseModel_incubationRate_feature", "_UI_EvolvingSEIRDiseaseModel_type"),
+				 EvolvingPackage.Literals.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((EvolvingSEIRDiseaseModel)object).getDiseaseName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingSEIRDiseaseModel_type") :
+			getString("_UI_EvolvingSEIRDiseaseModel_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EvolvingSEIRDiseaseModel.class)) {
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL__INCUBATION_RATE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelLabelItemProvider.java
new file mode 100644
index 0000000..28e656d
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelLabelItemProvider.java
@@ -0,0 +1,116 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel;
+
+import org.eclipse.stem.diseasemodels.standard.provider.StandardDiseaseModelLabelItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSEIRDiseaseModelLabelItemProvider extends StandardDiseaseModelLabelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelLabelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns EvolvingSEIRDiseaseModelLabel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EvolvingSEIRDiseaseModelLabel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		URI labelValue = ((EvolvingSEIRDiseaseModelLabel)object).getURI();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingSEIRDiseaseModelLabel_type") :
+			getString("_UI_EvolvingSEIRDiseaseModelLabel_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelLabelValueItemProvider.java
new file mode 100644
index 0000000..18c3e2a
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSEIRDiseaseModelLabelValueItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue;
+
+import org.eclipse.stem.diseasemodels.standard.provider.SEIRLabelValueItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSEIRDiseaseModelLabelValueItemProvider extends SEIRLabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSEIRDiseaseModelLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns EvolvingSEIRDiseaseModelLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EvolvingSEIRDiseaseModelLabelValue"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		EvolvingSEIRDiseaseModelLabelValue evolvingSEIRDiseaseModelLabelValue = (EvolvingSEIRDiseaseModelLabelValue)object;
+		return getString("_UI_EvolvingSEIRDiseaseModelLabelValue_type") + " " + evolvingSEIRDiseaseModelLabelValue.getPopulationCount();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelItemProvider.java
new file mode 100644
index 0000000..036183d
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelItemProvider.java
@@ -0,0 +1,186 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.provider.SIItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSIDiseaseModelItemProvider
+	extends SIItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCaseMutationRatePropertyDescriptor(object);
+			addGenomeLengthPropertyDescriptor(object);
+			addGeneticDistNonlinExponentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Case Mutation Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCaseMutationRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingSIDiseaseModel_caseMutationRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingSIDiseaseModel_caseMutationRate_feature", "_UI_EvolvingSIDiseaseModel_type"),
+				 EvolvingPackage.Literals.EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Genome Length feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGenomeLengthPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingSIDiseaseModel_genomeLength_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingSIDiseaseModel_genomeLength_feature", "_UI_EvolvingSIDiseaseModel_type"),
+				 EvolvingPackage.Literals.EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Genetic Dist Nonlin Exponent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGeneticDistNonlinExponentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingSIDiseaseModel_geneticDistNonlinExponent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingSIDiseaseModel_geneticDistNonlinExponent_feature", "_UI_EvolvingSIDiseaseModel_type"),
+				 EvolvingPackage.Literals.EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((EvolvingSIDiseaseModel)object).getDiseaseName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingSIDiseaseModel_type") :
+			getString("_UI_EvolvingSIDiseaseModel_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EvolvingSIDiseaseModel.class)) {
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME:
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__EVOLUTION_COUNT:
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__CASE_MUTATION_RATE:
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENOME_LENGTH:
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL__GENETIC_DIST_NONLIN_EXPONENT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelLabelItemProvider.java
new file mode 100644
index 0000000..cd16fb1
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelLabelItemProvider.java
@@ -0,0 +1,116 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel;
+
+import org.eclipse.stem.diseasemodels.standard.provider.StandardDiseaseModelLabelItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSIDiseaseModelLabelItemProvider extends StandardDiseaseModelLabelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelLabelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns EvolvingSIDiseaseModelLabel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EvolvingSIDiseaseModelLabel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		URI labelValue = ((EvolvingSIDiseaseModelLabel)object).getURI();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingSIDiseaseModelLabel_type") :
+			getString("_UI_EvolvingSIDiseaseModelLabel_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelLabelValueItemProvider.java
new file mode 100644
index 0000000..66c6c3e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIDiseaseModelLabelValueItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue;
+
+import org.eclipse.stem.diseasemodels.standard.provider.SILabelValueItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSIDiseaseModelLabelValueItemProvider extends SILabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIDiseaseModelLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns EvolvingSIDiseaseModelLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EvolvingSIDiseaseModelLabelValue"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		EvolvingSIDiseaseModelLabelValue evolvingSIDiseaseModelLabelValue = (EvolvingSIDiseaseModelLabelValue)object;
+		return getString("_UI_EvolvingSIDiseaseModelLabelValue_type") + " " + evolvingSIDiseaseModelLabelValue.getPopulationCount();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelItemProvider.java
new file mode 100644
index 0000000..6b69109
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelItemProvider.java
@@ -0,0 +1,147 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelItemProvider
+	extends EvolvingSIDiseaseModelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addImmunityLossRatePropertyDescriptor(object);
+			addCrossImmunityRatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Immunity Loss Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addImmunityLossRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingSIRDiseaseModel_immunityLossRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingSIRDiseaseModel_immunityLossRate_feature", "_UI_EvolvingSIRDiseaseModel_type"),
+				 EvolvingPackage.Literals.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cross Immunity Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCrossImmunityRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EvolvingSIRDiseaseModel_crossImmunityRate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EvolvingSIRDiseaseModel_crossImmunityRate_feature", "_UI_EvolvingSIRDiseaseModel_type"),
+				 EvolvingPackage.Literals.EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((EvolvingSIRDiseaseModel)object).getDiseaseName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingSIRDiseaseModel_type") :
+			getString("_UI_EvolvingSIRDiseaseModel_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EvolvingSIRDiseaseModel.class)) {
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__IMMUNITY_LOSS_RATE:
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL__CROSS_IMMUNITY_RATE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelLabelItemProvider.java
new file mode 100644
index 0000000..2dda37f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelLabelItemProvider.java
@@ -0,0 +1,116 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel;
+
+import org.eclipse.stem.diseasemodels.standard.provider.StandardDiseaseModelLabelItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelLabelItemProvider extends StandardDiseaseModelLabelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelLabelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns EvolvingSIRDiseaseModelLabel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EvolvingSIRDiseaseModelLabel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		URI labelValue = ((EvolvingSIRDiseaseModelLabel)object).getURI();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EvolvingSIRDiseaseModelLabel_type") :
+			getString("_UI_EvolvingSIRDiseaseModelLabel_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelLabelValueItemProvider.java
new file mode 100644
index 0000000..625231d
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/provider/EvolvingSIRDiseaseModelLabelValueItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ */
+package org.eclipse.stem.diseasemodels.evolving.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue;
+
+import org.eclipse.stem.diseasemodels.standard.provider.SIRLabelValueItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EvolvingSIRDiseaseModelLabelValueItemProvider extends SIRLabelValueItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSIRDiseaseModelLabelValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns EvolvingSIRDiseaseModelLabelValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EvolvingSIRDiseaseModelLabelValue"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		EvolvingSIRDiseaseModelLabelValue evolvingSIRDiseaseModelLabelValue = (EvolvingSIRDiseaseModelLabelValue)object;
+		return getString("_UI_EvolvingSIRDiseaseModelLabelValue_type") + " " + evolvingSIRDiseaseModelLabelValue.getPopulationCount();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EvolvingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/util/EvolvingAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/util/EvolvingAdapterFactory.java
new file mode 100644
index 0000000..c9561cb
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/util/EvolvingAdapterFactory.java
@@ -0,0 +1,800 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.util;
+
+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;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.PrimitiveTypeOperations;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.NodeDecorator;
+import org.eclipse.stem.core.model.TransformationDecorator;
+import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.diseasemodels.evolving.*;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SEIRLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SI;
+import org.eclipse.stem.diseasemodels.standard.SILabelValue;
+import org.eclipse.stem.diseasemodels.standard.SIRLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
+
+/**
+ * <!-- 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.stem.diseasemodels.evolving.EvolvingPackage
+ * @generated
+ */
+public class EvolvingAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static EvolvingPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = EvolvingPackage.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 EvolvingSwitch<Adapter> modelSwitch =
+		new EvolvingSwitch<Adapter>() {
+			@Override
+			public Adapter caseEvolvingDiseaseTransformer(EvolvingDiseaseTransformer object) {
+				return createEvolvingDiseaseTransformerAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingDiseaseModel(EvolvingDiseaseModel object) {
+				return createEvolvingDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIDiseaseModelLabel(EvolvingSIDiseaseModelLabel object) {
+				return createEvolvingSIDiseaseModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIDiseaseModelLabelValue(EvolvingSIDiseaseModelLabelValue object) {
+				return createEvolvingSIDiseaseModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIDiseaseModel(EvolvingSIDiseaseModel object) {
+				return createEvolvingSIDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIRDiseaseModelLabel(EvolvingSIRDiseaseModelLabel object) {
+				return createEvolvingSIRDiseaseModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIRDiseaseModelLabelValue(EvolvingSIRDiseaseModelLabelValue object) {
+				return createEvolvingSIRDiseaseModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSIRDiseaseModel(EvolvingSIRDiseaseModel object) {
+				return createEvolvingSIRDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSEIRDiseaseModelLabel(EvolvingSEIRDiseaseModelLabel object) {
+				return createEvolvingSEIRDiseaseModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSEIRDiseaseModelLabelValue(EvolvingSEIRDiseaseModelLabelValue object) {
+				return createEvolvingSEIRDiseaseModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseEvolvingSEIRDiseaseModel(EvolvingSEIRDiseaseModel object) {
+				return createEvolvingSEIRDiseaseModelAdapter();
+			}
+			@Override
+			public <T> Adapter caseComparable(Comparable<T> object) {
+				return createComparableAdapter();
+			}
+			@Override
+			public Adapter caseSanityChecker(SanityChecker object) {
+				return createSanityCheckerAdapter();
+			}
+			@Override
+			public Adapter caseIdentifiable(Identifiable object) {
+				return createIdentifiableAdapter();
+			}
+			@Override
+			public Adapter caseDecorator(Decorator object) {
+				return createDecoratorAdapter();
+			}
+			@Override
+			public Adapter caseNodeDecorator(NodeDecorator object) {
+				return createNodeDecoratorAdapter();
+			}
+			@Override
+			public Adapter caseTransformationDecorator(TransformationDecorator object) {
+				return createTransformationDecoratorAdapter();
+			}
+			@Override
+			public Adapter caseLabel(Label object) {
+				return createLabelAdapter();
+			}
+			@Override
+			public Adapter caseDynamicLabel(DynamicLabel object) {
+				return createDynamicLabelAdapter();
+			}
+			@Override
+			public Adapter caseNodeLabel(NodeLabel object) {
+				return createNodeLabelAdapter();
+			}
+			@Override
+			public Adapter caseDynamicNodeLabel(DynamicNodeLabel object) {
+				return createDynamicNodeLabelAdapter();
+			}
+			@Override
+			public Adapter caseIntegrationLabel(IntegrationLabel object) {
+				return createIntegrationLabelAdapter();
+			}
+			@Override
+			public Adapter caseDiseaseModelLabel(DiseaseModelLabel object) {
+				return createDiseaseModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseStandardDiseaseModelLabel(StandardDiseaseModelLabel object) {
+				return createStandardDiseaseModelLabelAdapter();
+			}
+			@Override
+			public Adapter caseLabelValue(LabelValue object) {
+				return createLabelValueAdapter();
+			}
+			@Override
+			public Adapter casePrimitiveTypeOperations(PrimitiveTypeOperations object) {
+				return createPrimitiveTypeOperationsAdapter();
+			}
+			@Override
+			public Adapter caseIntegrationLabelValue(IntegrationLabelValue object) {
+				return createIntegrationLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseDiseaseModelLabelValue(DiseaseModelLabelValue object) {
+				return createDiseaseModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseStandardDiseaseModelLabelValue(StandardDiseaseModelLabelValue object) {
+				return createStandardDiseaseModelLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseSILabelValue(SILabelValue object) {
+				return createSILabelValueAdapter();
+			}
+			@Override
+			public Adapter caseIntegrationDecorator(IntegrationDecorator object) {
+				return createIntegrationDecoratorAdapter();
+			}
+			@Override
+			public Adapter caseModifiable(Modifiable object) {
+				return createModifiableAdapter();
+			}
+			@Override
+			public Adapter caseDiseaseModel(DiseaseModel object) {
+				return createDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseStandardDiseaseModel(StandardDiseaseModel object) {
+				return createStandardDiseaseModelAdapter();
+			}
+			@Override
+			public Adapter caseSI(SI object) {
+				return createSIAdapter();
+			}
+			@Override
+			public Adapter caseSIRLabelValue(SIRLabelValue object) {
+				return createSIRLabelValueAdapter();
+			}
+			@Override
+			public Adapter caseSEIRLabelValue(SEIRLabelValue object) {
+				return createSEIRLabelValueAdapter();
+			}
+			@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.stem.diseasemodels.evolving.EvolvingDiseaseTransformer <em>Disease Transformer</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.stem.diseasemodels.evolving.EvolvingDiseaseTransformer
+	 * @generated
+	 */
+	public Adapter createEvolvingDiseaseTransformerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel <em>Disease Model</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.stem.diseasemodels.evolving.EvolvingDiseaseModel
+	 * @generated
+	 */
+	public Adapter createEvolvingDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel <em>SI Disease Model Label</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.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabel
+	 * @generated
+	 */
+	public Adapter createEvolvingSIDiseaseModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue <em>SI Disease Model Label Value</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.stem.diseasemodels.evolving.EvolvingSIDiseaseModelLabelValue
+	 * @generated
+	 */
+	public Adapter createEvolvingSIDiseaseModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel <em>SI Disease Model</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.stem.diseasemodels.evolving.EvolvingSIDiseaseModel
+	 * @generated
+	 */
+	public Adapter createEvolvingSIDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel <em>SIR Disease Model Label</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.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabel
+	 * @generated
+	 */
+	public Adapter createEvolvingSIRDiseaseModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue <em>SIR Disease Model Label Value</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.stem.diseasemodels.evolving.EvolvingSIRDiseaseModelLabelValue
+	 * @generated
+	 */
+	public Adapter createEvolvingSIRDiseaseModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel <em>SIR Disease Model</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.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel
+	 * @generated
+	 */
+	public Adapter createEvolvingSIRDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel <em>SEIR Disease Model Label</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.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabel
+	 * @generated
+	 */
+	public Adapter createEvolvingSEIRDiseaseModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue <em>SEIR Disease Model Label Value</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.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModelLabelValue
+	 * @generated
+	 */
+	public Adapter createEvolvingSEIRDiseaseModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel <em>SEIR Disease Model</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.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel
+	 * @generated
+	 */
+	public Adapter createEvolvingSEIRDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</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 java.lang.Comparable
+	 * @generated
+	 */
+	public Adapter createComparableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</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.stem.core.common.SanityChecker
+	 * @generated
+	 */
+	public Adapter createSanityCheckerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</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.stem.core.common.Identifiable
+	 * @generated
+	 */
+	public Adapter createIdentifiableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.Decorator <em>Decorator</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.stem.core.model.Decorator
+	 * @generated
+	 */
+	public Adapter createDecoratorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.NodeDecorator <em>Node Decorator</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.stem.core.model.NodeDecorator
+	 * @generated
+	 */
+	public Adapter createNodeDecoratorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.TransformationDecorator <em>Transformation Decorator</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.stem.core.model.TransformationDecorator
+	 * @generated
+	 */
+	public Adapter createTransformationDecoratorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.Label <em>Label</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.stem.core.graph.Label
+	 * @generated
+	 */
+	public Adapter createLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.DynamicLabel <em>Dynamic Label</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.stem.core.graph.DynamicLabel
+	 * @generated
+	 */
+	public Adapter createDynamicLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.NodeLabel <em>Node Label</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.stem.core.graph.NodeLabel
+	 * @generated
+	 */
+	public Adapter createNodeLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.DynamicNodeLabel <em>Dynamic Node Label</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.stem.core.graph.DynamicNodeLabel
+	 * @generated
+	 */
+	public Adapter createDynamicNodeLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.IntegrationLabel <em>Integration Label</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.stem.core.graph.IntegrationLabel
+	 * @generated
+	 */
+	public Adapter createIntegrationLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel <em>Disease Model Label</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.stem.diseasemodels.standard.DiseaseModelLabel
+	 * @generated
+	 */
+	public Adapter createDiseaseModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel <em>Disease Model Label</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.stem.diseasemodels.standard.StandardDiseaseModelLabel
+	 * @generated
+	 */
+	public Adapter createStandardDiseaseModelLabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.LabelValue <em>Label Value</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.stem.core.graph.LabelValue
+	 * @generated
+	 */
+	public Adapter createLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.PrimitiveTypeOperations <em>Primitive Type Operations</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.stem.core.common.PrimitiveTypeOperations
+	 * @generated
+	 */
+	public Adapter createPrimitiveTypeOperationsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.IntegrationLabelValue <em>Integration Label Value</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.stem.core.graph.IntegrationLabelValue
+	 * @generated
+	 */
+	public Adapter createIntegrationLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue <em>Disease Model Label Value</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.stem.diseasemodels.standard.DiseaseModelLabelValue
+	 * @generated
+	 */
+	public Adapter createDiseaseModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue <em>Disease Model Label Value</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.stem.diseasemodels.standard.StandardDiseaseModelLabelValue
+	 * @generated
+	 */
+	public Adapter createStandardDiseaseModelLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.SILabelValue <em>SI Label Value</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.stem.diseasemodels.standard.SILabelValue
+	 * @generated
+	 */
+	public Adapter createSILabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.IntegrationDecorator <em>Integration Decorator</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.stem.core.model.IntegrationDecorator
+	 * @generated
+	 */
+	public Adapter createIntegrationDecoratorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</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.stem.core.modifier.Modifiable
+	 * @generated
+	 */
+	public Adapter createModifiableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.DiseaseModel <em>Disease Model</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.stem.diseasemodels.standard.DiseaseModel
+	 * @generated
+	 */
+	public Adapter createDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseModel <em>Disease Model</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.stem.diseasemodels.standard.StandardDiseaseModel
+	 * @generated
+	 */
+	public Adapter createStandardDiseaseModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.SI <em>SI</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.stem.diseasemodels.standard.SI
+	 * @generated
+	 */
+	public Adapter createSIAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.SIRLabelValue <em>SIR Label Value</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.stem.diseasemodels.standard.SIRLabelValue
+	 * @generated
+	 */
+	public Adapter createSIRLabelValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.stem.diseasemodels.standard.SEIRLabelValue <em>SEIR Label Value</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.stem.diseasemodels.standard.SEIRLabelValue
+	 * @generated
+	 */
+	public Adapter createSEIRLabelValueAdapter() {
+		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;
+	}
+
+} //EvolvingAdapterFactory
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/util/EvolvingSwitch.java b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/util/EvolvingSwitch.java
new file mode 100644
index 0000000..385f975
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels.evolving/src/org/eclipse/stem/diseasemodels/evolving/util/EvolvingSwitch.java
@@ -0,0 +1,839 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.diseasemodels.evolving.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.PrimitiveTypeOperations;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.NodeDecorator;
+import org.eclipse.stem.core.model.TransformationDecorator;
+import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.diseasemodels.evolving.*;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingDiseaseTransformer;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingPackage;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSEIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIDiseaseModel;
+import org.eclipse.stem.diseasemodels.evolving.EvolvingSIRDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SEIRLabelValue;
+import org.eclipse.stem.diseasemodels.standard.SI;
+import org.eclipse.stem.diseasemodels.standard.SILabelValue;
+import org.eclipse.stem.diseasemodels.standard.SIRLabelValue;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
+import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
+
+/**
+ * <!-- 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.stem.diseasemodels.evolving.EvolvingPackage
+ * @generated
+ */
+public class EvolvingSwitch<T1> extends Switch<T1> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static EvolvingPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvolvingSwitch() {
+		if (modelPackage == null) {
+			modelPackage = EvolvingPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter 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 T1 doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case EvolvingPackage.EVOLVING_DISEASE_TRANSFORMER: {
+				EvolvingDiseaseTransformer evolvingDiseaseTransformer = (EvolvingDiseaseTransformer)theEObject;
+				T1 result = caseEvolvingDiseaseTransformer(evolvingDiseaseTransformer);
+				if (result == null) result = caseTransformationDecorator(evolvingDiseaseTransformer);
+				if (result == null) result = caseNodeDecorator(evolvingDiseaseTransformer);
+				if (result == null) result = caseDecorator(evolvingDiseaseTransformer);
+				if (result == null) result = caseIdentifiable(evolvingDiseaseTransformer);
+				if (result == null) result = caseComparable(evolvingDiseaseTransformer);
+				if (result == null) result = caseSanityChecker(evolvingDiseaseTransformer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_DISEASE_MODEL: {
+				EvolvingDiseaseModel evolvingDiseaseModel = (EvolvingDiseaseModel)theEObject;
+				T1 result = caseEvolvingDiseaseModel(evolvingDiseaseModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL_LABEL: {
+				EvolvingSIDiseaseModelLabel evolvingSIDiseaseModelLabel = (EvolvingSIDiseaseModelLabel)theEObject;
+				T1 result = caseEvolvingSIDiseaseModelLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseStandardDiseaseModelLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseDiseaseModelLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseIntegrationLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseDynamicNodeLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseDynamicLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseNodeLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseLabel(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseIdentifiable(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseComparable(evolvingSIDiseaseModelLabel);
+				if (result == null) result = caseSanityChecker(evolvingSIDiseaseModelLabel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL_LABEL_VALUE: {
+				EvolvingSIDiseaseModelLabelValue evolvingSIDiseaseModelLabelValue = (EvolvingSIDiseaseModelLabelValue)theEObject;
+				T1 result = caseEvolvingSIDiseaseModelLabelValue(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = caseSILabelValue(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = caseStandardDiseaseModelLabelValue(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = caseDiseaseModelLabelValue(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = caseIntegrationLabelValue(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = caseLabelValue(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = casePrimitiveTypeOperations(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = caseSanityChecker(evolvingSIDiseaseModelLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SI_DISEASE_MODEL: {
+				EvolvingSIDiseaseModel evolvingSIDiseaseModel = (EvolvingSIDiseaseModel)theEObject;
+				T1 result = caseEvolvingSIDiseaseModel(evolvingSIDiseaseModel);
+				if (result == null) result = caseSI(evolvingSIDiseaseModel);
+				if (result == null) result = caseEvolvingDiseaseModel(evolvingSIDiseaseModel);
+				if (result == null) result = caseStandardDiseaseModel(evolvingSIDiseaseModel);
+				if (result == null) result = caseDiseaseModel(evolvingSIDiseaseModel);
+				if (result == null) result = caseIntegrationDecorator(evolvingSIDiseaseModel);
+				if (result == null) result = caseModifiable(evolvingSIDiseaseModel);
+				if (result == null) result = caseNodeDecorator(evolvingSIDiseaseModel);
+				if (result == null) result = caseDecorator(evolvingSIDiseaseModel);
+				if (result == null) result = caseIdentifiable(evolvingSIDiseaseModel);
+				if (result == null) result = caseComparable(evolvingSIDiseaseModel);
+				if (result == null) result = caseSanityChecker(evolvingSIDiseaseModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_LABEL: {
+				EvolvingSIRDiseaseModelLabel evolvingSIRDiseaseModelLabel = (EvolvingSIRDiseaseModelLabel)theEObject;
+				T1 result = caseEvolvingSIRDiseaseModelLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseStandardDiseaseModelLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseDiseaseModelLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseIntegrationLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseDynamicNodeLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseDynamicLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseNodeLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseLabel(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseIdentifiable(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseComparable(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = caseSanityChecker(evolvingSIRDiseaseModelLabel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL_LABEL_VALUE: {
+				EvolvingSIRDiseaseModelLabelValue evolvingSIRDiseaseModelLabelValue = (EvolvingSIRDiseaseModelLabelValue)theEObject;
+				T1 result = caseEvolvingSIRDiseaseModelLabelValue(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = caseSIRLabelValue(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = caseSILabelValue(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = caseStandardDiseaseModelLabelValue(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = caseDiseaseModelLabelValue(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = caseIntegrationLabelValue(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = caseLabelValue(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = casePrimitiveTypeOperations(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = caseSanityChecker(evolvingSIRDiseaseModelLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SIR_DISEASE_MODEL: {
+				EvolvingSIRDiseaseModel evolvingSIRDiseaseModel = (EvolvingSIRDiseaseModel)theEObject;
+				T1 result = caseEvolvingSIRDiseaseModel(evolvingSIRDiseaseModel);
+				if (result == null) result = caseEvolvingSIDiseaseModel(evolvingSIRDiseaseModel);
+				if (result == null) result = caseSI(evolvingSIRDiseaseModel);
+				if (result == null) result = caseEvolvingDiseaseModel(evolvingSIRDiseaseModel);
+				if (result == null) result = caseStandardDiseaseModel(evolvingSIRDiseaseModel);
+				if (result == null) result = caseDiseaseModel(evolvingSIRDiseaseModel);
+				if (result == null) result = caseIntegrationDecorator(evolvingSIRDiseaseModel);
+				if (result == null) result = caseModifiable(evolvingSIRDiseaseModel);
+				if (result == null) result = caseNodeDecorator(evolvingSIRDiseaseModel);
+				if (result == null) result = caseDecorator(evolvingSIRDiseaseModel);
+				if (result == null) result = caseIdentifiable(evolvingSIRDiseaseModel);
+				if (result == null) result = caseComparable(evolvingSIRDiseaseModel);
+				if (result == null) result = caseSanityChecker(evolvingSIRDiseaseModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL_LABEL: {
+				EvolvingSEIRDiseaseModelLabel evolvingSEIRDiseaseModelLabel = (EvolvingSEIRDiseaseModelLabel)theEObject;
+				T1 result = caseEvolvingSEIRDiseaseModelLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseStandardDiseaseModelLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseDiseaseModelLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseIntegrationLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseDynamicNodeLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseDynamicLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseNodeLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseLabel(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseIdentifiable(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseComparable(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = caseSanityChecker(evolvingSEIRDiseaseModelLabel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL_LABEL_VALUE: {
+				EvolvingSEIRDiseaseModelLabelValue evolvingSEIRDiseaseModelLabelValue = (EvolvingSEIRDiseaseModelLabelValue)theEObject;
+				T1 result = caseEvolvingSEIRDiseaseModelLabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseSEIRLabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseSIRLabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseSILabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseStandardDiseaseModelLabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseDiseaseModelLabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseIntegrationLabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseLabelValue(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = casePrimitiveTypeOperations(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = caseSanityChecker(evolvingSEIRDiseaseModelLabelValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case EvolvingPackage.EVOLVING_SEIR_DISEASE_MODEL: {
+				EvolvingSEIRDiseaseModel evolvingSEIRDiseaseModel = (EvolvingSEIRDiseaseModel)theEObject;
+				T1 result = caseEvolvingSEIRDiseaseModel(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseEvolvingSIRDiseaseModel(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseEvolvingSIDiseaseModel(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseSI(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseEvolvingDiseaseModel(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseStandardDiseaseModel(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseDiseaseModel(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseIntegrationDecorator(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseModifiable(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseNodeDecorator(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseDecorator(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseIdentifiable(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseComparable(evolvingSEIRDiseaseModel);
+				if (result == null) result = caseSanityChecker(evolvingSEIRDiseaseModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Transformer</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>Disease Transformer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingDiseaseTransformer(EvolvingDiseaseTransformer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model</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>Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingDiseaseModel(EvolvingDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI Disease Model Label</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>SI Disease Model Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIDiseaseModelLabel(EvolvingSIDiseaseModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI Disease Model Label Value</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>SI Disease Model Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIDiseaseModelLabelValue(EvolvingSIDiseaseModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI Disease Model</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>SI Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIDiseaseModel(EvolvingSIDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SIR Disease Model Label</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>SIR Disease Model Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIRDiseaseModelLabel(EvolvingSIRDiseaseModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SIR Disease Model Label Value</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>SIR Disease Model Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIRDiseaseModelLabelValue(EvolvingSIRDiseaseModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SIR Disease Model</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>SIR Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSIRDiseaseModel(EvolvingSIRDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SEIR Disease Model Label</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>SEIR Disease Model Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSEIRDiseaseModelLabel(EvolvingSEIRDiseaseModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SEIR Disease Model Label Value</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>SEIR Disease Model Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSEIRDiseaseModelLabelValue(EvolvingSEIRDiseaseModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SEIR Disease Model</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>SEIR Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEvolvingSEIRDiseaseModel(EvolvingSEIRDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Comparable</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>Comparable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public <T> T1 caseComparable(Comparable<T> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</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>Sanity Checker</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSanityChecker(SanityChecker object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Identifiable</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>Identifiable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIdentifiable(Identifiable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Decorator</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>Decorator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDecorator(Decorator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Node Decorator</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>Node Decorator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseNodeDecorator(NodeDecorator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformation Decorator</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>Transformation Decorator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseTransformationDecorator(TransformationDecorator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label</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</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLabel(Label object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dynamic Label</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>Dynamic Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDynamicLabel(DynamicLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Node Label</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>Node Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseNodeLabel(NodeLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dynamic Node Label</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>Dynamic Node Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDynamicNodeLabel(DynamicNodeLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integration Label</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>Integration Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegrationLabel(IntegrationLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label</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>Disease Model Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDiseaseModelLabel(DiseaseModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label</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>Disease Model Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStandardDiseaseModelLabel(StandardDiseaseModelLabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label Value</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 Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLabelValue(LabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Primitive Type Operations</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>Primitive Type Operations</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 casePrimitiveTypeOperations(PrimitiveTypeOperations object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integration Label Value</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>Integration Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegrationLabelValue(IntegrationLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label Value</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>Disease Model Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDiseaseModelLabelValue(DiseaseModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model Label Value</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>Disease Model Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStandardDiseaseModelLabelValue(StandardDiseaseModelLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI Label Value</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>SI Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSILabelValue(SILabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Integration Decorator</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>Integration Decorator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegrationDecorator(IntegrationDecorator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Modifiable</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>Modifiable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseModifiable(Modifiable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model</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>Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDiseaseModel(DiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disease Model</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>Disease Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStandardDiseaseModel(StandardDiseaseModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SI</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>SI</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSI(SI object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SIR Label Value</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>SIR Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSIRLabelValue(SIRLabelValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SEIR Label Value</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>SEIR Label Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSEIRLabelValue(SEIRLabelValue 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 T1 defaultCase(EObject object) {
+		return null;
+	}
+
+} //EvolvingSwitch
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/META-INF/MANIFEST.MF b/models/epidemiology/org.eclipse.stem.diseasemodels/META-INF/MANIFEST.MF
index ed98f1f..b990827 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/META-INF/MANIFEST.MF
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.stem.diseasemodels; singleton:=true
+Bundle-SymbolicName: org.eclipse.stem.diseasemodels;singleton:=true
 Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.stem.diseasemodels.Activator
@@ -18,11 +18,15 @@
  org.eclipse.stem.diseasemodels.standard.provider,
  org.eclipse.stem.diseasemodels.standard.util
 Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.stem.core;visibility:=reexport,
  org.eclipse.stem.definitions;visibility:=reexport,
  org.eclipse.stem.transport,
  org.eclipse.stem.geography,
  org.eclipse.stem.populationmodels;visibility:=reexport,
- org.eclipse.emf.ecore.edit;bundle-version="2.6.0",
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="2.6.0";visibility:=reexport,
  org.eclipse.stem.interventions
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Package: org.eclipse.stem.jobs.simulation
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/DiseaseMutationTranformation.gif b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/DiseaseMutationTranformation.gif
new file mode 100644
index 0000000..14af8aa
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/DiseaseMutationTranformation.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingDiseaseTransformer.gif b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingDiseaseTransformer.gif
new file mode 100644
index 0000000..c4fb30e
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingDiseaseTransformer.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSEIRDiseaseModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSEIRDiseaseModel.gif
new file mode 100644
index 0000000..c8d381f
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSEIRDiseaseModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSIDiseaseModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSIDiseaseModel.gif
new file mode 100644
index 0000000..badaab0
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSIDiseaseModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSIRDiseaseModel.gif b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSIRDiseaseModel.gif
new file mode 100644
index 0000000..ef56c14
--- /dev/null
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/icons/full/obj16/EvolvingSIRDiseaseModel.gif
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/model/diseasemodels.genmodel b/models/epidemiology/org.eclipse.stem.diseasemodels/model/diseasemodels.genmodel
index 36d5813..dde8d2f 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/model/diseasemodels.genmodel
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/model/diseasemodels.genmodel
@@ -4,8 +4,8 @@
     editorDirectory="/org.eclipse.stem.ui.diseasemodels/src" modelPluginID="org.eclipse.stem.diseasemodels"
     modelName="Diseasemodels" nonNLSMarkers="true" testsDirectory="/org.eclipse.stem.tests.diseasemodels/src"
     importerID="org.eclipse.emf.importer.ecore" suppressNotification="true" complianceLevel="5.0"
-    copyrightFields="false" editorPluginID="org.eclipse.stem.ui.diseasemodels" runtimeVersion="2.6"
-    usedGenPackages="../../org.eclipse.stem.core/model/core.genmodel#//common ../../org.eclipse.stem.core/model/core.genmodel#//graph ../../org.eclipse.stem.core/model/core.genmodel#//model ../../org.eclipse.stem.core/model/core.genmodel#//modifier ../../org.eclipse.stem.core/model/core.genmodel#//predicate ../../org.eclipse.stem.core/model/core.genmodel#//scenario ../../org.eclipse.stem.core/model/core.genmodel#//sequencer ../../org.eclipse.stem.core/model/core.genmodel#//solver ../../org.eclipse.stem.core/model/core.genmodel#//logger ../../org.eclipse.stem.definitions/model/definitions.genmodel#//labels platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.stem.populationmodels/model/standard.genmodel#//standard"
+    copyrightFields="false" publicConstructors="true" editorPluginID="org.eclipse.stem.ui.diseasemodels"
+    runtimeVersion="2.6" usedGenPackages="../../org.eclipse.stem.core/model/core.genmodel#//common ../../org.eclipse.stem.core/model/core.genmodel#//graph ../../org.eclipse.stem.core/model/core.genmodel#//model ../../org.eclipse.stem.core/model/core.genmodel#//modifier ../../org.eclipse.stem.core/model/core.genmodel#//predicate ../../org.eclipse.stem.core/model/core.genmodel#//scenario ../../org.eclipse.stem.core/model/core.genmodel#//sequencer ../../org.eclipse.stem.core/model/core.genmodel#//solver ../../org.eclipse.stem.core/model/core.genmodel#//logger ../../org.eclipse.stem.definitions/model/definitions.genmodel#//labels platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.stem.populationmodels/model/standard.genmodel#//standard"
     runtimePlatform="RCP">
   <foreignModel>standard.ecore</foreignModel>
   <foreignModel>diseasepredicates.ecore</foreignModel>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.properties b/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.properties
index b732fa8..2da762a 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.properties
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.properties
Binary files differ
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.xml b/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.xml
index d0854e4..502cae6 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.xml
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/plugin.xml
@@ -54,6 +54,19 @@
        class = "org.eclipse.stem.diseasemodels.predicates.diseasepredicates.DiseasepredicatesPackage"
        genModel = "model/diseasemodels.genmodel" /> 
   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated diseasemodels -->
+      <factory
+            uri="http:///org/eclipse/stem/diseasemodels/standard.ecore"
+            class="org.eclipse.stem.diseasemodels.standard.provider.StandardItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
   <extension
         point="org.eclipse.stem.diseasemodels.diseasemodel">
      <classdef class="org.eclipse.stem.diseasemodels.standard.impl.SIImpl"/>
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/LabelValueTest.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/LabelValueTest.java
index 7a8938f..c2b6f58 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/LabelValueTest.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/LabelValueTest.java
@@ -21,6 +21,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.LabelValueTest#getModelName <em>Model Name</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.LabelValueTest#getTargetURI <em>Target URI</em>}</li>
@@ -29,7 +30,6 @@
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.LabelValueTest#getPredicate <em>Predicate</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.LabelValueTest#getPopulationIdentifier <em>Population Identifier</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.diseasemodels.predicates.diseasepredicates.DiseasepredicatesPackage#getLabelValueTest()
  * @model
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesFactoryImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesFactoryImpl.java
index 609535a..81f8391 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesFactoryImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesFactoryImpl.java
@@ -35,7 +35,7 @@
 	 */
 	public static DiseasepredicatesFactory init() {
 		try {
-			DiseasepredicatesFactory theDiseasepredicatesFactory = (DiseasepredicatesFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/diseasemodels/diseasepredicates.ecore"); //$NON-NLS-1$ 
+			DiseasepredicatesFactory theDiseasepredicatesFactory = (DiseasepredicatesFactory)EPackage.Registry.INSTANCE.getEFactory(DiseasepredicatesPackage.eNS_URI);
 			if (theDiseasepredicatesFactory != null) {
 				return theDiseasepredicatesFactory;
 			}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesPackageImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesPackageImpl.java
index 5536d87..7236ebb 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesPackageImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/DiseasepredicatesPackageImpl.java
@@ -85,8 +85,8 @@
 		isInited = true;
 
 		// Initialize simple dependencies
-		StandardPackage.eINSTANCE.eClass();
 		PredicatePackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
 		StandardPackageImpl theStandardPackage_1 = (StandardPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.stem.diseasemodels.standard.StandardPackage.eNS_URI) instanceof StandardPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.stem.diseasemodels.standard.StandardPackage.eNS_URI) : org.eclipse.stem.diseasemodels.standard.StandardPackage.eINSTANCE);
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/LabelValueTestImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/LabelValueTestImpl.java
index a6639ba..8844617 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/LabelValueTestImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/impl/LabelValueTestImpl.java
@@ -40,6 +40,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.impl.LabelValueTestImpl#getModelName <em>Model Name</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.impl.LabelValueTestImpl#getTargetURI <em>Target URI</em>}</li>
@@ -48,7 +49,6 @@
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.impl.LabelValueTestImpl#getPredicate <em>Predicate</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.predicates.diseasepredicates.impl.LabelValueTestImpl#getPopulationIdentifier <em>Population Identifier</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -178,7 +178,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected LabelValueTestImpl() {
+	public LabelValueTestImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/DiseasepredicatesItemProviderAdapterFactory.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/DiseasepredicatesItemProviderAdapterFactory.java
index 23e6d59..b2b8141 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/DiseasepredicatesItemProviderAdapterFactory.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/DiseasepredicatesItemProviderAdapterFactory.java
@@ -13,20 +13,14 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.common.util.ResourceLocator;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.edit.command.CommandParameter;
-import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.ChangeNotifier;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
 import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.IChildCreationExtender;
 import org.eclipse.emf.edit.provider.IDisposable;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -34,14 +28,7 @@
 import org.eclipse.emf.edit.provider.INotifyChangedListener;
 import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.stem.core.predicate.NaryBooleanOperator;
-import org.eclipse.stem.core.predicate.PredicateExpression;
-import org.eclipse.stem.core.predicate.PredicatePackage;
-import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
-import org.eclipse.stem.core.predicate.util.PredicateSwitch;
-import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.DiseasepredicatesFactory;
 import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.util.DiseasepredicatesAdapterFactory;
-import org.eclipse.stem.diseasemodels.standard.provider.DiseasemodelsEditPlugin;
 
 /**
  * This is the factory that is used to provide the interfaces needed to support Viewers.
@@ -216,121 +203,4 @@
 		if (labelValueTestItemProvider != null) labelValueTestItemProvider.dispose();
 	}
 
-	/**
-	 * A child creation extender for the {@link PredicatePackage}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static class PredicateChildCreationExtender implements IChildCreationExtender {
-		/**
-		 * The switch for creating child descriptors specific to each extended class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		protected static class CreationSwitch extends PredicateSwitch<Object> {
-			/**
-			 * The child descriptors being populated.
-			 * <!-- begin-user-doc -->
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			protected List<Object> newChildDescriptors;
-
-			/**
-			 * The domain in which to create the children.
-			 * <!-- begin-user-doc -->
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			protected EditingDomain editingDomain;
-
-			/**
-			 * Creates the a switch for populating child descriptors in the given domain.
-			 * <!-- begin-user-doc -->
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
-				this.newChildDescriptors = newChildDescriptors;
-				this.editingDomain = editingDomain;
-			}
-			/**
-			 * <!-- begin-user-doc -->
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			@Override
-			public Object caseNaryBooleanOperator(NaryBooleanOperator object) {
-				newChildDescriptors.add
-					(createChildParameter
-						(PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
-						 DiseasepredicatesFactory.eINSTANCE.createLabelValueTest()));
-
-				return null;
-			}
- 
-			/**
-			 * <!-- begin-user-doc -->
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			@Override
-			public Object caseUnaryBooleanOperator(UnaryBooleanOperator object) {
-				newChildDescriptors.add
-					(createChildParameter
-						(PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
-						 DiseasepredicatesFactory.eINSTANCE.createLabelValueTest()));
-
-				return null;
-			}
- 
-			/**
-			 * <!-- begin-user-doc -->
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			@Override
-			public Object casePredicateExpression(PredicateExpression object) {
-				newChildDescriptors.add
-					(createChildParameter
-						(PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
-						 DiseasepredicatesFactory.eINSTANCE.createLabelValueTest()));
-
-				return null;
-			}
- 
-			/**
-			 * <!-- begin-user-doc -->
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			protected CommandParameter createChildParameter(Object feature, Object child) {
-				return new CommandParameter(null, feature, child);
-			}
-
-		}
-
-		/**
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
-			ArrayList<Object> result = new ArrayList<Object>();
-		   new CreationSwitch(result, editingDomain).doSwitch((EObject)object);
-		   return result;
-		}
-
-		/**
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		public ResourceLocator getResourceLocator() {
-			return DiseasemodelsEditPlugin.INSTANCE;
-		}
-	}
-
 }
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/LabelValueTestItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/LabelValueTestItemProvider.java
index 21019fd..0a707e6 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/LabelValueTestItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/provider/LabelValueTestItemProvider.java
@@ -20,12 +20,7 @@
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.core.predicate.provider.TestItemProvider;
@@ -41,13 +36,7 @@
  * @generated
  */
 public class LabelValueTestItemProvider
-	extends TestItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends TestItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/DiseaseInitializer.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/DiseaseInitializer.java
index 5b6831c..5c5cc3d 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/DiseaseInitializer.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/DiseaseInitializer.java
@@ -15,11 +15,11 @@
  *

  * <p>

  * The following features are supported:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.DiseaseInitializer#getDiseaseName <em>Disease Name</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.DiseaseInitializer#getPopulationIdentifier <em>Population Identifier</em>}</li>

  * </ul>

- * </p>

  *

  * @see org.eclipse.stem.diseasemodels.standard.StandardPackage#getDiseaseInitializer()

  * @model abstract="true"

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/ExternalDataSourceDiseaseInitializer.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/ExternalDataSourceDiseaseInitializer.java
index e27bac2..7ac4f71 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/ExternalDataSourceDiseaseInitializer.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/ExternalDataSourceDiseaseInitializer.java
@@ -14,12 +14,12 @@
  *

  * <p>

  * The following features are supported:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.ExternalDataSourceDiseaseInitializer#getDataPath <em>Data Path</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.ExternalDataSourceDiseaseInitializer#getRow <em>Row</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.ExternalDataSourceDiseaseInitializer#isDoRescaling <em>Do Rescaling</em>}</li>

  * </ul>

- * </p>

  *

  * @see org.eclipse.stem.diseasemodels.standard.StandardPackage#getExternalDataSourceDiseaseInitializer()

  * @model

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/InfectorInoculatorCollection.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/InfectorInoculatorCollection.java
index 78bb7b0..64b095d 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/InfectorInoculatorCollection.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/InfectorInoculatorCollection.java
@@ -21,11 +21,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.InfectorInoculatorCollection#getList <em>List</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.InfectorInoculatorCollection#getImportFolder <em>Import Folder</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.diseasemodels.standard.StandardPackage#getInfectorInoculatorCollection()
  * @model
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/StandardDiseaseInitializer.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/StandardDiseaseInitializer.java
index 9a5eb69..d2d1834 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/StandardDiseaseInitializer.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/StandardDiseaseInitializer.java
@@ -16,6 +16,7 @@
  *

  * <p>

  * The following features are supported:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseInitializer#getTargetISOKey <em>Target ISO Key</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseInitializer#getTargetURI <em>Target URI</em>}</li>

@@ -23,7 +24,6 @@
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseInitializer#getCompartmentValues <em>Compartment Values</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.StandardDiseaseInitializer#isUseFractions <em>Use Fractions</em>}</li>

  * </ul>

- * </p>

  *

  * @see org.eclipse.stem.diseasemodels.standard.StandardPackage#getStandardDiseaseInitializer()

  * @model

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSEIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSEIRDiseaseModelImpl.java
index b971433..edb9b71 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSEIRDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSEIRDiseaseModelImpl.java
@@ -18,8 +18,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '<em><b>Deterministic SEIR Disease Model</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIDiseaseModelImpl.java
index 618f417..9d0a366 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIDiseaseModelImpl.java
@@ -18,8 +18,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '<em><b>Deterministic SI Disease Model</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIRDiseaseModelImpl.java
index 80b8231..b4288bc 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIRDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DeterministicSIRDiseaseModelImpl.java
@@ -18,8 +18,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '<em><b>Deterministic SIR Disease Model</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseInitializerImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseInitializerImpl.java
index ce7306b..0166c80 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseInitializerImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseInitializerImpl.java
@@ -18,11 +18,11 @@
  * <!-- end-user-doc -->

  * <p>

  * The following features are implemented:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseInitializerImpl#getDiseaseName <em>Disease Name</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseInitializerImpl#getPopulationIdentifier <em>Population Identifier</em>}</li>

  * </ul>

- * </p>

  *

  * @generated

  */

@@ -72,7 +72,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	protected DiseaseInitializerImpl() {

+	public DiseaseInitializerImpl() {

 		super();

 	}

 

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelImpl.java
index 7400f0f..559a242 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelImpl.java
@@ -58,6 +58,7 @@
  * <em><b>Disease Model</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelImpl#getPopulationIdentifier <em>Population Identifier</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelImpl#getTimePeriod <em>Time Period</em>}</li>
@@ -65,7 +66,6 @@
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelImpl#isFiniteDifference <em>Finite Difference</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelImpl#isFrequencyDependent <em>Frequency Dependent</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -173,7 +173,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected DiseaseModelImpl() {
+	public DiseaseModelImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelImpl.java
index fe1a236..774a7bf 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelImpl.java
@@ -30,11 +30,11 @@
  * <em><b>Disease Model Label</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelLabelImpl#getPopulationLabel <em>Population Label</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelLabelImpl#getPopulationModelLabel <em>Population Model Label</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -64,7 +64,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected DiseaseModelLabelImpl() {
+	public DiseaseModelLabelImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelValueImpl.java
index 12b7116..c4a10fa 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelValueImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/DiseaseModelLabelValueImpl.java
@@ -23,10 +23,10 @@
  * <em><b>Disease Model Label Value</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.DiseaseModelLabelValueImpl#getPopulationCount <em>Population Count</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -38,7 +38,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected DiseaseModelLabelValueImpl() {
+	public DiseaseModelLabelValueImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/ExternalDataSourceDiseaseInitializerImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/ExternalDataSourceDiseaseInitializerImpl.java
index 085ef1d..3d1ec28 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/ExternalDataSourceDiseaseInitializerImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/ExternalDataSourceDiseaseInitializerImpl.java
@@ -128,7 +128,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @generated

 	 */

-	protected ExternalDataSourceDiseaseInitializerImpl() {

+	public ExternalDataSourceDiseaseInitializerImpl() {

 		super();

 	}

 

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorImpl.java
index db54ea4..c4485f1 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorImpl.java
@@ -45,6 +45,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.InfectorImpl#getDiseaseModel <em>Disease Model</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.InfectorImpl#getTargetURI <em>Target URI</em>}</li>
@@ -55,7 +56,6 @@
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.InfectorImpl#isInfectPercentage <em>Infect Percentage</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.InfectorImpl#getTargetFeature <em>Target Feature</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -198,7 +198,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected InfectorImpl() {
+	public InfectorImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorInoculatorCollectionImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorInoculatorCollectionImpl.java
index 56831e7..512099c 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorInoculatorCollectionImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/InfectorInoculatorCollectionImpl.java
@@ -31,11 +31,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.InfectorInoculatorCollectionImpl#getList <em>List</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.InfectorInoculatorCollectionImpl#getImportFolder <em>Import Folder</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -74,7 +74,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected InfectorInoculatorCollectionImpl() {
+	public InfectorInoculatorCollectionImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRImpl.java
index 00ec1ec..7c4c645 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRImpl.java
@@ -36,10 +36,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SEIRImpl#getIncubationRate <em>Incubation Rate</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelImpl.java
index 66df388..5b9de67 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelImpl.java
@@ -21,8 +21,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '
  * <em><b>SEIR Label</b></em>'. <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelValueImpl.java
index 1ab71c0..b4aac30 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelValueImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SEIRLabelValueImpl.java
@@ -23,10 +23,10 @@
  * <em><b>SEIR Label Value</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SEIRLabelValueImpl#getE <em>E</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -56,7 +56,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected SEIRLabelValueImpl() {
+	public SEIRLabelValueImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIImpl.java
index bf4c71b..84264c5 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIImpl.java
@@ -35,13 +35,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIImpl#getTransmissionRate <em>Transmission Rate</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIImpl#getNonLinearityCoefficient <em>Non Linearity Coefficient</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIImpl#getRecoveryRate <em>Recovery Rate</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIImpl#getInfectiousMortalityRate <em>Infectious Mortality Rate</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIInfectorImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIInfectorImpl.java
index 919e690..1f3eddc 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIInfectorImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIInfectorImpl.java
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIInfectorImpl#getInfectiousCount <em>Infectious Count</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -60,7 +60,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected SIInfectorImpl() {
+	public SIInfectorImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelImpl.java
index 37aa773..e733761 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelImpl.java
@@ -19,8 +19,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '
  * <em><b>SI Label</b></em>'. <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelValueImpl.java
index 812f01e..c1e1ee3 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelValueImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SILabelValueImpl.java
@@ -23,10 +23,10 @@
  * <em><b>SI Label Value</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SILabelValueImpl#getI <em>I</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -56,7 +56,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected SILabelValueImpl() {
+	public SILabelValueImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRImpl.java
index b3aa9ec..967abb8 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRImpl.java
@@ -36,10 +36,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIRImpl#getImmunityLossRate <em>Immunity Loss Rate</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRInoculatorImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRInoculatorImpl.java
index c932339..b33002f 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRInoculatorImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRInoculatorImpl.java
@@ -41,11 +41,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIRInoculatorImpl#getInoculatedPercentage <em>Inoculated Percentage</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIRInoculatorImpl#isInoculatePercentage <em>Inoculate Percentage</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -104,7 +104,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected SIRInoculatorImpl() {
+	public SIRInoculatorImpl() {
 		super();
 	}
 	
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelImpl.java
index 26d568c..0b0f161 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelImpl.java
@@ -21,8 +21,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '
  * <em><b>SIR Label</b></em>'. <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelValueImpl.java
index 33d49ac..881fc5a 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelValueImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/SIRLabelValueImpl.java
@@ -23,10 +23,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.SIRLabelValueImpl#getR <em>R</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -56,7 +56,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected SIRLabelValueImpl() {
+	public SIRLabelValueImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseInitializerImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseInitializerImpl.java
index 8e15ae0..0fcfcb8 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseInitializerImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseInitializerImpl.java
@@ -42,6 +42,7 @@
  * <!-- end-user-doc -->

  * <p>

  * The following features are implemented:

+ * </p>

  * <ul>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseInitializerImpl#getTargetISOKey <em>Target ISO Key</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseInitializerImpl#getTargetURI <em>Target URI</em>}</li>

@@ -49,7 +50,6 @@
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseInitializerImpl#getCompartmentValues <em>Compartment Values</em>}</li>

  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseInitializerImpl#isUseFractions <em>Use Fractions</em>}</li>

  * </ul>

- * </p>

  *

  * @generated

  */

@@ -146,7 +146,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	protected StandardDiseaseInitializerImpl() {

+	public StandardDiseaseInitializerImpl() {

 		super();

 	}

 

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelImpl.java
index 306186a..11bfafe 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelImpl.java
@@ -60,12 +60,12 @@
  * <em><b>Disease Model</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelImpl#getReferencePopulationDensity <em>Reference Population Density</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelImpl#getRoadNetworkInfectiousProportion <em>Road Network Infectious Proportion</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelImpl#getCharacteristicMixingDistance <em>Characteristic Mixing Distance</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelImpl.java
index 9e6c716..8eba019 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelImpl.java
@@ -24,8 +24,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '<em><b>Disease Model Label</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
@@ -43,7 +41,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected StandardDiseaseModelLabelImpl() {
+	public StandardDiseaseModelLabelImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelValueImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelValueImpl.java
index 745ebc3..6eaee2c 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelValueImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardDiseaseModelLabelValueImpl.java
@@ -24,12 +24,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelLabelValueImpl#getS <em>S</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelLabelValueImpl#getIncidence <em>Incidence</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardDiseaseModelLabelValueImpl#getDiseaseDeaths <em>Disease Deaths</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -101,7 +101,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected StandardDiseaseModelLabelValueImpl() {
+	public StandardDiseaseModelLabelValueImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardFactoryImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardFactoryImpl.java
index 20d32b5..b801612 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardFactoryImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardFactoryImpl.java
@@ -62,7 +62,7 @@
 	 */
 	public static StandardFactory init() {
 		try {
-			StandardFactory theStandardFactory = (StandardFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/diseasemodels/standard.ecore"); //$NON-NLS-1$ 
+			StandardFactory theStandardFactory = (StandardFactory)EPackage.Registry.INSTANCE.getEFactory(StandardPackage.eNS_URI);
 			if (theStandardFactory != null) {
 				return theStandardFactory;
 			}
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardInfectorImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardInfectorImpl.java
index 10b6443..5d86b68 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardInfectorImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardInfectorImpl.java
@@ -18,8 +18,6 @@
 /**
  * <!-- begin-user-doc --> An implementation of the model object '<em><b>Infector</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
@@ -29,7 +27,7 @@
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected StandardInfectorImpl() {
+	public StandardInfectorImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardPackageImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardPackageImpl.java
index 2a82800..4e7945e 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardPackageImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardPackageImpl.java
@@ -25,7 +25,10 @@
 import org.eclipse.stem.core.graph.GraphPackage;
 import org.eclipse.stem.core.model.ModelPackage;
 import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.predicate.PredicatePackage;
 import org.eclipse.stem.definitions.labels.LabelsPackage;
+import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.DiseasepredicatesPackage;
+import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.impl.DiseasepredicatesPackageImpl;
 import org.eclipse.stem.diseasemodels.standard.DeterministicSEIRDiseaseModel;
 import org.eclipse.stem.diseasemodels.standard.DeterministicSIDiseaseModel;
 import org.eclipse.stem.diseasemodels.standard.DeterministicSIRDiseaseModel;
@@ -360,13 +363,19 @@
 		isInited = true;
 
 		// Initialize simple dependencies
+		PredicatePackage.eINSTANCE.eClass();
 		org.eclipse.stem.populationmodels.standard.StandardPackage.eINSTANCE.eClass();
 
+		// Obtain or create and register interdependencies
+		DiseasepredicatesPackageImpl theDiseasepredicatesPackage = (DiseasepredicatesPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(DiseasepredicatesPackage.eNS_URI) instanceof DiseasepredicatesPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(DiseasepredicatesPackage.eNS_URI) : DiseasepredicatesPackage.eINSTANCE);
+
 		// Create package meta-data objects
 		theStandardPackage.createPackageContents();
+		theDiseasepredicatesPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theStandardPackage.initializePackageContents();
+		theDiseasepredicatesPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theStandardPackage.freeze();
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardStochasticDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardStochasticDiseaseModelImpl.java
index 668c20a..b35a421 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardStochasticDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StandardStochasticDiseaseModelImpl.java
@@ -23,10 +23,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StandardStochasticDiseaseModelImpl#getGain <em>Gain</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -57,7 +57,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected StandardStochasticDiseaseModelImpl() {
+	public StandardStochasticDiseaseModelImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticDiseaseModelImpl.java
index f47b46e..ef08a98 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticDiseaseModelImpl.java
@@ -27,11 +27,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticDiseaseModelImpl#getSeed <em>Seed</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticDiseaseModelImpl#getRandomGenerator <em>Random Generator</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -90,7 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected StochasticDiseaseModelImpl() {
+	public StochasticDiseaseModelImpl() {
 		super();
 	}
 
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSEIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSEIRDiseaseModelImpl.java
index 6d8f67e..c891efb 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSEIRDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSEIRDiseaseModelImpl.java
@@ -28,8 +28,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Stochastic Poisson SEIR Disease Model</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIDiseaseModelImpl.java
index 804c175..c8c9f73 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIDiseaseModelImpl.java
@@ -28,8 +28,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Stochastic Poisson SI Disease Model</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIRDiseaseModelImpl.java
index 3e70f93..df971d3 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIRDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticPoissonSIRDiseaseModelImpl.java
@@ -28,8 +28,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Stochastic Poisson SIR Disease Model</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSEIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSEIRDiseaseModelImpl.java
index 3accd4b..c0da84e 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSEIRDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSEIRDiseaseModelImpl.java
@@ -27,12 +27,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSEIRDiseaseModelImpl#getSeed <em>Seed</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSEIRDiseaseModelImpl#getRandomGenerator <em>Random Generator</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSEIRDiseaseModelImpl#getGain <em>Gain</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIDiseaseModelImpl.java
index f769d42..12f79b6 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIDiseaseModelImpl.java
@@ -27,12 +27,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSIDiseaseModelImpl#getSeed <em>Seed</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSIDiseaseModelImpl#getRandomGenerator <em>Random Generator</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSIDiseaseModelImpl#getGain <em>Gain</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIRDiseaseModelImpl.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIRDiseaseModelImpl.java
index 085cccc..5fd012e 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIRDiseaseModelImpl.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/impl/StochasticSIRDiseaseModelImpl.java
@@ -27,12 +27,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSIRDiseaseModelImpl#getSeed <em>Seed</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSIRDiseaseModelImpl#getRandomGenerator <em>Random Generator</em>}</li>
  *   <li>{@link org.eclipse.stem.diseasemodels.standard.impl.StochasticSIRDiseaseModelImpl#getGain <em>Gain</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSEIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSEIRDiseaseModelItemProvider.java
index 250bbb0..6bec1db 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSEIRDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSEIRDiseaseModelItemProvider.java
@@ -16,12 +16,7 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.DeterministicSEIRDiseaseModel;
 
 /**
@@ -30,9 +25,7 @@
  * @generated
  */
 @SuppressWarnings("deprecation")
-public class DeterministicSEIRDiseaseModelItemProvider extends SEIRItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DeterministicSEIRDiseaseModelItemProvider extends SEIRItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIDiseaseModelItemProvider.java
index abd3c29..3aa6505 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIDiseaseModelItemProvider.java
@@ -16,12 +16,7 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.DeterministicSIDiseaseModel;
 
 /**
@@ -30,9 +25,7 @@
  * @generated
  */
 @SuppressWarnings("deprecation")
-public class DeterministicSIDiseaseModelItemProvider extends SIItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DeterministicSIDiseaseModelItemProvider extends SIItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIRDiseaseModelItemProvider.java
index 1a0000d..e50b803 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIRDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DeterministicSIRDiseaseModelItemProvider.java
@@ -16,12 +16,7 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.DeterministicSIRDiseaseModel;
 
 /**
@@ -30,9 +25,7 @@
  * @generated
  */
 @SuppressWarnings("deprecation")
-public class DeterministicSIRDiseaseModelItemProvider extends SIRItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DeterministicSIRDiseaseModelItemProvider extends SIRItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseInitializerItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseInitializerItemProvider.java
index bfbed67..1367251 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseInitializerItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseInitializerItemProvider.java
@@ -14,12 +14,7 @@
 import org.eclipse.emf.common.notify.Notification;

 import org.eclipse.emf.common.util.ResourceLocator;

 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

-import org.eclipse.emf.edit.provider.IItemLabelProvider;

 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

-import org.eclipse.emf.edit.provider.IItemPropertySource;

-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

 import org.eclipse.emf.edit.provider.ViewerNotification;

 import org.eclipse.stem.core.model.provider.NodeDecoratorItemProvider;

@@ -33,13 +28,7 @@
  * @generated

  */

 public class DiseaseInitializerItemProvider

-	extends NodeDecoratorItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends NodeDecoratorItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelItemProvider.java
index b266e3a..1b09df9 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelItemProvider.java
@@ -18,12 +18,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.core.model.provider.IntegrationDecoratorItemProvider;
@@ -37,9 +32,7 @@
  * 
  * @generated
  */
-public class DiseaseModelItemProvider extends IntegrationDecoratorItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DiseaseModelItemProvider extends IntegrationDecoratorItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelItemProvider.java
index 4876374..1a02d78 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelItemProvider.java
@@ -19,12 +19,7 @@
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.core.graph.provider.IntegrationLabelItemProvider;
 import org.eclipse.stem.diseasemodels.standard.DiseaseModelLabel;
 import org.eclipse.stem.diseasemodels.standard.StandardPackage;
@@ -34,9 +29,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class DiseaseModelLabelItemProvider extends IntegrationLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DiseaseModelLabelItemProvider extends IntegrationLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelValueItemProvider.java
index 0bf04bf..5d86d27 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelValueItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/DiseaseModelLabelValueItemProvider.java
@@ -18,12 +18,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.core.graph.provider.IntegrationLabelValueItemProvider;
@@ -35,9 +30,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class DiseaseModelLabelValueItemProvider extends IntegrationLabelValueItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DiseaseModelLabelValueItemProvider extends IntegrationLabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/ExternalDataSourceDiseaseInitializerItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/ExternalDataSourceDiseaseInitializerItemProvider.java
index c34d079..f76bdc2 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/ExternalDataSourceDiseaseInitializerItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/ExternalDataSourceDiseaseInitializerItemProvider.java
@@ -13,12 +13,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

-import org.eclipse.emf.edit.provider.IItemLabelProvider;

 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

-import org.eclipse.emf.edit.provider.IItemPropertySource;

-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

 import org.eclipse.emf.edit.provider.ViewerNotification;

 import org.eclipse.stem.diseasemodels.standard.ExternalDataSourceDiseaseInitializer;

@@ -31,13 +26,7 @@
  * @generated

  */

 public class ExternalDataSourceDiseaseInitializerItemProvider

-	extends DiseaseInitializerItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DiseaseInitializerItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorInoculatorCollectionItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorInoculatorCollectionItemProvider.java
index 676319e..b60b9c1 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorInoculatorCollectionItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorInoculatorCollectionItemProvider.java
@@ -20,12 +20,7 @@
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.core.model.provider.NodeDecoratorItemProvider;
@@ -39,13 +34,7 @@
  * @generated
  */
 public class InfectorInoculatorCollectionItemProvider
-	extends NodeDecoratorItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends NodeDecoratorItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorItemProvider.java
index b00425d..1278d7a 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/InfectorItemProvider.java
@@ -18,12 +18,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.core.model.provider.NodeDecoratorItemProvider;
@@ -37,9 +32,7 @@
  * 
  * @generated
  */
-public class InfectorItemProvider extends NodeDecoratorItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class InfectorItemProvider extends NodeDecoratorItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRItemProvider.java
index 5de440b..a399e59 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SEIR;
@@ -35,9 +30,7 @@
  * 
  * @generated
  */
-public class SEIRItemProvider extends SIRItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SEIRItemProvider extends SIRItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelItemProvider.java
index b794d56..293014a 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.SEIRLabel;
 
 /**
@@ -32,9 +27,7 @@
  * 
  * @generated
  */
-public class SEIRLabelItemProvider extends StandardDiseaseModelLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SEIRLabelItemProvider extends StandardDiseaseModelLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelValueItemProvider.java
index 38cf908..f5b8c9b 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelValueItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SEIRLabelValueItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SEIRLabelValue;
@@ -33,9 +28,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class SEIRLabelValueItemProvider extends SIRLabelValueItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SEIRLabelValueItemProvider extends SIRLabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIInfectorItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIInfectorItemProvider.java
index d3ef529..b4f2589 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIInfectorItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIInfectorItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SIInfector;
@@ -35,9 +30,7 @@
  * 
  * @generated
  */
-public class SIInfectorItemProvider extends StandardInfectorItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SIInfectorItemProvider extends StandardInfectorItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIItemProvider.java
index 1fc8d7f..2925fd8 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SI;
@@ -35,9 +30,7 @@
  * 
  * @generated
  */
-public class SIItemProvider extends StandardDiseaseModelItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SIItemProvider extends StandardDiseaseModelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelItemProvider.java
index 923ce9f..12355d4 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.SILabel;
 
 /**
@@ -32,9 +27,7 @@
  * 
  * @generated
  */
-public class SILabelItemProvider extends StandardDiseaseModelLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SILabelItemProvider extends StandardDiseaseModelLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelValueItemProvider.java
index 447e434..7bcb388 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelValueItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SILabelValueItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SILabelValue;
@@ -36,9 +31,7 @@
  * @generated
  */
 public class SILabelValueItemProvider extends
-		StandardDiseaseModelLabelValueItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+		StandardDiseaseModelLabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRInoculatorItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRInoculatorItemProvider.java
index 1b3c543..a6660af 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRInoculatorItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRInoculatorItemProvider.java
@@ -18,12 +18,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SIRInoculator;
@@ -36,13 +31,7 @@
  * @generated
  */
 public class SIRInoculatorItemProvider
-	extends SIInfectorItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends SIInfectorItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRItemProvider.java
index 0374750..b076183 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SIR;
@@ -35,9 +30,7 @@
  * 
  * @generated
  */
-public class SIRItemProvider extends SIItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SIRItemProvider extends SIItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelItemProvider.java
index da90cc3..4a2d426 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.SIRLabel;
 
 /**
@@ -32,9 +27,7 @@
  * 
  * @generated
  */
-public class SIRLabelItemProvider extends StandardDiseaseModelLabelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SIRLabelItemProvider extends StandardDiseaseModelLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelValueItemProvider.java
index 4d246d0..d0e806e 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelValueItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/SIRLabelValueItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.SIRLabelValue;
@@ -33,9 +28,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class SIRLabelValueItemProvider extends SILabelValueItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class SIRLabelValueItemProvider extends SILabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseInitializerItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseInitializerItemProvider.java
index a1102ef..d57afdf 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseInitializerItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseInitializerItemProvider.java
@@ -13,12 +13,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

-import org.eclipse.emf.edit.provider.IItemLabelProvider;

 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

-import org.eclipse.emf.edit.provider.IItemPropertySource;

-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

 import org.eclipse.emf.edit.provider.ViewerNotification;

 import org.eclipse.stem.diseasemodels.standard.StandardDiseaseInitializer;

@@ -31,13 +26,7 @@
  * @generated

  */

 public class StandardDiseaseInitializerItemProvider

-	extends DiseaseInitializerItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DiseaseInitializerItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelItemProvider.java
index ef95c9a..7cbdea7 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModel;
@@ -33,9 +28,7 @@
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class StandardDiseaseModelItemProvider extends DiseaseModelItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class StandardDiseaseModelItemProvider extends DiseaseModelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelItemProvider.java
index 7fd609b..bb2f81e 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabel;
 
 /**
@@ -31,9 +26,7 @@
  * @generated
  */
 public class StandardDiseaseModelLabelItemProvider extends
-		DiseaseModelLabelItemProvider implements IEditingDomainItemProvider,
-		IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource {
+		DiseaseModelLabelItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelValueItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelValueItemProvider.java
index e3e6ac4..b3d9751 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelValueItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardDiseaseModelLabelValueItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.StandardDiseaseModelLabelValue;
@@ -34,9 +29,7 @@
  * @generated
  */
 public class StandardDiseaseModelLabelValueItemProvider extends
-		DiseaseModelLabelValueItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+		DiseaseModelLabelValueItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardInfectorItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardInfectorItemProvider.java
index 4703106..814888b 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardInfectorItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardInfectorItemProvider.java
@@ -16,21 +16,14 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 
 /**
  * This is the item provider adapter for a {@link org.eclipse.stem.diseasemodels.standard.StandardInfector} object.
  * <!-- begin-user-doc --> <!-- end-user-doc -->
  * @generated
  */
-public class StandardInfectorItemProvider extends InfectorItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class StandardInfectorItemProvider extends InfectorItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardStochasticDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardStochasticDiseaseModelItemProvider.java
index 4ba2987..a040fc1 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardStochasticDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StandardStochasticDiseaseModelItemProvider.java
@@ -13,12 +13,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

-import org.eclipse.emf.edit.provider.IItemLabelProvider;

 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

-import org.eclipse.emf.edit.provider.IItemPropertySource;

-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

 import org.eclipse.emf.edit.provider.ViewerNotification;

 import org.eclipse.stem.diseasemodels.standard.StandardPackage;

@@ -32,13 +27,7 @@
  */

 @SuppressWarnings("deprecation")

 public class StandardStochasticDiseaseModelItemProvider

-	extends StochasticDiseaseModelItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends StochasticDiseaseModelItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSEIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSEIRDiseaseModelItemProvider.java
index e7df0f7..e95c41b 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSEIRDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSEIRDiseaseModelItemProvider.java
@@ -16,12 +16,7 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.StochasticPoissonSEIRDiseaseModel;
 
 /**
@@ -31,13 +26,7 @@
  * @generated
  */
 public class StochasticPoissonSEIRDiseaseModelItemProvider
-	extends SEIRItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends SEIRItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIDiseaseModelItemProvider.java
index d2233e3..28e30e4 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIDiseaseModelItemProvider.java
@@ -16,12 +16,7 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.StochasticPoissonSIDiseaseModel;
 
 /**
@@ -31,13 +26,7 @@
  * @generated
  */
 public class StochasticPoissonSIDiseaseModelItemProvider
-	extends SIItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends SIItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIRDiseaseModelItemProvider.java
index f2bea66..b2e78a2 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIRDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticPoissonSIRDiseaseModelItemProvider.java
@@ -16,12 +16,7 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.diseasemodels.standard.StochasticPoissonSIRDiseaseModel;
 
 /**
@@ -31,13 +26,7 @@
  * @generated
  */
 public class StochasticPoissonSIRDiseaseModelItemProvider
-	extends SIRItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends SIRItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSEIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSEIRDiseaseModelItemProvider.java
index f8694ae..636bc90 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSEIRDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSEIRDiseaseModelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.StandardPackage;
@@ -34,9 +29,7 @@
  * @generated
  */
 @SuppressWarnings("deprecation")
-public class StochasticSEIRDiseaseModelItemProvider extends SEIRItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class StochasticSEIRDiseaseModelItemProvider extends SEIRItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIDiseaseModelItemProvider.java
index 3eeb6dc..8a4a150 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIDiseaseModelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.StandardPackage;
@@ -34,9 +29,7 @@
  * @generated
  */
 @SuppressWarnings("deprecation")
-public class StochasticSIDiseaseModelItemProvider extends SIItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class StochasticSIDiseaseModelItemProvider extends SIItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIRDiseaseModelItemProvider.java b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIRDiseaseModelItemProvider.java
index 02a7eca..cbae209 100644
--- a/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIRDiseaseModelItemProvider.java
+++ b/models/epidemiology/org.eclipse.stem.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/provider/StochasticSIRDiseaseModelItemProvider.java
@@ -17,12 +17,7 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.eclipse.stem.diseasemodels.standard.StandardPackage;
@@ -34,9 +29,7 @@
  * @generated
  */
 @SuppressWarnings("deprecation")
-public class StochasticSIRDiseaseModelItemProvider extends SIRItemProvider
-		implements IEditingDomainItemProvider, IStructuredItemContentProvider,
-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class StochasticSIRDiseaseModelItemProvider extends SIRItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc -->
diff --git a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/META-INF/MANIFEST.MF b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/META-INF/MANIFEST.MF
index 2ef9b63..8a6617d 100644
--- a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/META-INF/MANIFEST.MF
+++ b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/META-INF/MANIFEST.MF
@@ -7,17 +7,23 @@
 Bundle-Activator: org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.stem.diseasemodels.standard.presentation,
+Export-Package: org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation,
+ org.eclipse.stem.diseasemodels.standard.presentation,
  org.eclipse.stem.ui.adapters.diseasemodelpropertyeditor,
  org.eclipse.stem.ui.adapters.newmodifierpage,
  org.eclipse.stem.ui.wizards
-Require-Bundle: org.eclipse.stem.diseasemodels;visibility:=reexport,
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.stem.diseasemodels;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.stem.core;visibility:=reexport,
+ org.eclipse.stem.definitions;visibility:=reexport,
  org.eclipse.stem.ui,
  org.eclipse.stem.geography,
  org.eclipse.ui.navigator,
  org.eclipse.ui.navigator.resources,
- org.eclipse.emf.ecore.edit,
- org.eclipse.stem.populationmodels,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.stem.populationmodels;visibility:=reexport,
  org.eclipse.stem.analysis,
  org.eclipse.core.expressions;bundle-version="3.4.200"
 Bundle-ActivationPolicy: lazy
diff --git a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml
index b83522f..34294a5 100644
--- a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml
+++ b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml
@@ -263,4 +263,125 @@
         </iterate>
      </definition>
   </extension>    
+   <extension
+         point="org.eclipse.core.runtime.applications"
+         id="DiseasemodelsEditorAdvisorApplication">
+      <!-- @generated diseasemodels -->
+      <application>
+         <run class="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisor$Application"/>
+      </application>
+   </extension>
+
+   <extension point="org.eclipse.ui.perspectives">
+      <!-- @generated diseasemodels -->
+      <perspective
+            name="%_UI_Perspective_label"
+            class="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisor$Perspective"
+            id="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorPerspective">
+      </perspective>
+   </extension>
+
+   <extension point="org.eclipse.ui.commands">
+      <!-- @generated diseasemodels -->
+      <command
+            name="%_UI_Menu_OpenURI_label"
+            description="%_UI_Menu_OpenURI_description"
+            categoryId="org.eclipse.ui.category.file"
+            id="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenURICommand"/>
+      <command
+            name="%_UI_Menu_Open_label"
+            description="%_UI_Menu_Open_description"
+            categoryId="org.eclipse.ui.category.file"
+            id="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenCommand"/>
+   </extension>
+
+   <extension point="org.eclipse.ui.bindings">
+      <!-- @generated diseasemodels -->
+      <!--<key
+            commandId="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenURICommand"
+            sequence="M1+U"
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>-->
+      <key
+            commandId="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenCommand"
+            sequence="M1+O"
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+   </extension>
+
+   <extension point="org.eclipse.ui.actionSets">
+      <!-- @generated diseasemodels -->
+      <actionSet
+            label="%_UI_DiseasemodelsEditorAdvisor_ActionSet_label"
+            visible="true"
+            id="DiseasemodelsEditorAdvisorActionSet">
+         <action
+               label="%_UI_Menu_About_label"
+               class="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisor$AboutAction"
+               menubarPath="help/additions"
+               id="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorAboutAction"/>
+         <action
+               label="%_UI_Menu_OpenURI_label"
+               definitionId="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenURICommand"
+               class="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisor$OpenURIAction"
+               menubarPath="file/additions"
+               id="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenURIAction"/>
+         <action
+               label="%_UI_Menu_Open_label"
+               definitionId="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenCommand"
+               class="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisor$OpenAction"
+               menubarPath="file/additions"
+               id="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenAction"/>
+      </actionSet>
+   </extension>
+
+   <extension point="org.eclipse.ui.actionSets">
+      <!-- @generated diseasemodels -->
+      <actionSet
+            label="%_UI_StandardModelWizard_ActionSet_label"
+            visible="true"
+            id="org.eclipse.stem.diseasemodels.standard.presentation.StandardActionBarContributorActionSet">
+         <action
+               label="%_UI_StandardModelWizard_label"
+               class="org.eclipse.stem.diseasemodels.standard.presentation.StandardActionBarContributor$NewAction"
+               menubarPath="file/new/additions"
+               id="org.eclipse.stem.diseasemodels.standard.presentation.StandardActionBarContributorNewAction"/>
+      </actionSet>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated diseasemodels -->
+      <editor
+            id="org.eclipse.stem.diseasemodels.standard.presentation.StandardEditorID"
+            name="%_UI_StandardEditor_label"
+            icon="icons/full/obj16/StandardModelFile.gif"
+            extensions="standard"
+            class="org.eclipse.stem.diseasemodels.standard.presentation.StandardEditor"
+            contributorClass="org.eclipse.stem.diseasemodels.standard.presentation.StandardActionBarContributor">
+      </editor>
+   </extension>
+
+   <extension point="org.eclipse.ui.actionSets">
+      <!-- @generated diseasemodels -->
+      <actionSet
+            label="%_UI_DiseasepredicatesModelWizard_ActionSet_label"
+            visible="true"
+            id="org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation.DiseasepredicatesActionBarContributorActionSet">
+         <action
+               label="%_UI_DiseasepredicatesModelWizard_label"
+               class="org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation.DiseasepredicatesActionBarContributor$NewAction"
+               menubarPath="file/new/additions"
+               id="org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation.DiseasepredicatesActionBarContributorNewAction"/>
+      </actionSet>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated diseasemodels -->
+      <editor
+            id="org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation.DiseasepredicatesEditorID"
+            name="%_UI_DiseasepredicatesEditor_label"
+            icon="icons/full/obj16/DiseasepredicatesModelFile.gif"
+            extensions="diseasepredicates"
+            class="org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation.DiseasepredicatesEditor"
+            contributorClass="org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation.DiseasepredicatesActionBarContributor">
+      </editor>
+   </extension>
 </plugin>
diff --git a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/presentation/DiseasepredicatesEditor.java b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/presentation/DiseasepredicatesEditor.java
index ce8f8c4..34e53d3 100644
--- a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/presentation/DiseasepredicatesEditor.java
+++ b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/predicates/diseasepredicates/presentation/DiseasepredicatesEditor.java
@@ -203,7 +203,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PropertySheetPage propertySheetPage;
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
 
 	/**
 	 * This is the viewer that shadows the selection in the content outline.
@@ -313,7 +313,7 @@
 					}
 				}
 				else if (p instanceof PropertySheet) {
-					if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
 						getActionBarContributor().setActiveEditor(DiseasepredicatesEditor.this);
 						handleActivate();
 					}
@@ -425,6 +425,15 @@
 			@Override
 			protected void unsetTarget(Resource target) {
 				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
 			}
 		};
 
@@ -587,14 +596,14 @@
 		adapterFactory.addAdapterFactory(new GraphItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ModelItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ModifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new PredicateItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ScenarioItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new SequencerItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new SolverItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new LoggerItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new LabelsItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new org.eclipse.stem.populationmodels.standard.provider.StandardItemProviderAdapterFactory());
-		adapterFactory.addAdapterFactory(new LoggerItemProviderAdapterFactory());
-		adapterFactory.addAdapterFactory(new PredicateItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
 
 		// Create the command stack that will notify this editor as commands are executed.
@@ -617,8 +626,14 @@
 								  if (mostRecentCommand != null) {
 									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
 								  }
-								  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
-									  propertySheetPage.refresh();
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
 								  }
 							  }
 						  });
@@ -1279,23 +1294,22 @@
 	 * @generated
 	 */
 	public IPropertySheetPage getPropertySheetPage() {
-		if (propertySheetPage == null) {
-			propertySheetPage =
-				new ExtendedPropertySheetPage(editingDomain) {
-					@Override
-					public void setSelectionToViewer(List<?> selection) {
-						DiseasepredicatesEditor.this.setSelectionToViewer(selection);
-						DiseasepredicatesEditor.this.setFocus();
-					}
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					DiseasepredicatesEditor.this.setSelectionToViewer(selection);
+					DiseasepredicatesEditor.this.setFocus();
+				}
 
-					@Override
-					public void setActionBars(IActionBars actionBars) {
-						super.setActionBars(actionBars);
-						getActionBarContributor().shareGlobalActions(this, actionBars);
-					}
-				};
-			propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
-		}
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
 
 		return propertySheetPage;
 	}
@@ -1413,7 +1427,7 @@
 
 	/**
 	 * This returns whether something has been persisted to the URI of the specified resource.
-	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1660,7 +1674,7 @@
 			getActionBarContributor().setActiveEditor(null);
 		}
 
-		if (propertySheetPage != null) {
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
 			propertySheetPage.dispose();
 		}
 
diff --git a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorAdvisor.java b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorAdvisor.java
index 41df565..e7b7ee6 100644
--- a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorAdvisor.java
+++ b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorAdvisor.java
@@ -21,6 +21,8 @@
 import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.emf.edit.ui.action.LoadResourceAction;
 import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorPlugin;
+import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.presentation.DiseasepredicatesEditor;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 import org.eclipse.jface.action.GroupMarker;
@@ -68,7 +70,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private static final String[] FILE_EXTENSION_FILTERS = StandardEditor.FILE_EXTENSION_FILTERS.toArray(new String[0]);
+	private static final String[] FILE_EXTENSION_FILTERS = getFileExtensionFilters();
 
 	/**
 	 * Returns the default file extension filters. This method should only be used to initialize {@link #FILE_EXTENSION_FILTERS}.
diff --git a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorPlugin.java b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorPlugin.java
index 48da6b0..b964def 100644
--- a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorPlugin.java
+++ b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/DiseasemodelsEditorPlugin.java
@@ -14,9 +14,11 @@
 import org.eclipse.emf.common.EMFPlugin;
 import org.eclipse.emf.common.ui.EclipseUIPlugin;
 import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.stem.core.common.provider.CoreEditPlugin;
 import org.eclipse.stem.definitions.edges.provider.DefinitionsEditPlugin;
+import org.eclipse.stem.populationmodels.standard.provider.StandardEditPlugin;
 import org.eclipse.stem.ui.diseasemodels.ISharedImages;
 import org.eclipse.stem.ui.wizards.StandardDiseaseModelPropertyEditorAdapterFactory;
 import org.eclipse.stem.ui.wizards.StandardPropertyStringProviderAdapterFactory;
diff --git a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/StandardEditor.java b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/StandardEditor.java
index 314065f..3815ecd 100644
--- a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/StandardEditor.java
+++ b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/src/org/eclipse/stem/diseasemodels/standard/presentation/StandardEditor.java
@@ -87,10 +87,12 @@
 import org.eclipse.stem.core.logger.provider.LoggerItemProviderAdapterFactory;
 import org.eclipse.stem.core.model.provider.ModelItemProviderAdapterFactory;
 import org.eclipse.stem.core.modifier.provider.ModifierItemProviderAdapterFactory;
+import org.eclipse.stem.core.predicate.provider.PredicateItemProviderAdapterFactory;
 import org.eclipse.stem.core.scenario.provider.ScenarioItemProviderAdapterFactory;
 import org.eclipse.stem.core.sequencer.provider.SequencerItemProviderAdapterFactory;
 import org.eclipse.stem.core.solver.provider.SolverItemProviderAdapterFactory;
 import org.eclipse.stem.definitions.labels.provider.LabelsItemProviderAdapterFactory;
+import org.eclipse.stem.diseasemodels.predicates.diseasepredicates.provider.DiseasepredicatesItemProviderAdapterFactory;
 import org.eclipse.stem.diseasemodels.standard.provider.StandardItemProviderAdapterFactory;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
@@ -201,7 +203,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PropertySheetPage propertySheetPage;
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
 
 	/**
 	 * This is the viewer that shadows the selection in the content outline.
@@ -311,7 +313,7 @@
 					}
 				}
 				else if (p instanceof PropertySheet) {
-					if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
 						getActionBarContributor().setActiveEditor(StandardEditor.this);
 						handleActivate();
 					}
@@ -423,6 +425,15 @@
 			@Override
 			protected void unsetTarget(Resource target) {
 				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
 			}
 		};
 
@@ -597,17 +608,19 @@
 
 		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new StandardItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new DiseasepredicatesItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new CommonItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new GraphItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ModelItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ModifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new PredicateItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ScenarioItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new SequencerItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new SolverItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new LoggerItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new LabelsItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new org.eclipse.stem.populationmodels.standard.provider.StandardItemProviderAdapterFactory());
-		adapterFactory.addAdapterFactory(new LoggerItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
 
 		// Create the command stack that will notify this editor as commands are executed.
@@ -630,8 +643,14 @@
 								  if (mostRecentCommand != null) {
 									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
 								  }
-								  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
-									  propertySheetPage.refresh();
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
 								  }
 							  }
 						  });
@@ -1511,23 +1530,22 @@
 	 * @generated
 	 */
 	public IPropertySheetPage getPropertySheetPage() {
-		if (propertySheetPage == null) {
-			propertySheetPage =
-				new ExtendedPropertySheetPage(editingDomain) {
-					@Override
-					public void setSelectionToViewer(List<?> selection) {
-						StandardEditor.this.setSelectionToViewer(selection);
-						StandardEditor.this.setFocus();
-					}
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					StandardEditor.this.setSelectionToViewer(selection);
+					StandardEditor.this.setFocus();
+				}
 
-					@Override
-					public void setActionBars(IActionBars actionBars) {
-						super.setActionBars(actionBars);
-						getActionBarContributor().shareGlobalActions(this, actionBars);
-					}
-				};
-			propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
-		}
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
 
 		return propertySheetPage;
 	}
@@ -1645,7 +1663,7 @@
 
 	/**
 	 * This returns whether something has been persisted to the URI of the specified resource.
-	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1892,7 +1910,7 @@
 			getActionBarContributor().setActiveEditor(null);
 		}
 
-		if (propertySheetPage != null) {
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
 			propertySheetPage.dispose();
 		}
 
diff --git a/releng/org.eclipse.stem.releng/ConfigProduct/build.properties b/releng/org.eclipse.stem.releng/ConfigProduct/build.properties
index 66d1372..fead118 100644
--- a/releng/org.eclipse.stem.releng/ConfigProduct/build.properties
+++ b/releng/org.eclipse.stem.releng/ConfigProduct/build.properties
@@ -53,11 +53,13 @@
 #     configs=win32,win32,x86 & linux,motif,x86
 # By default the value is *,*,*
 #configs = *, *, *
-configs=win32, win32, x86 & win32, win32, x86_64 & macosx, cocoa, x86_64 & linux, gtk, x86 & linux, gtk, x86_64
+
+# MAD - 27/02/2016 - Removing 32-bit builds to reduce build time and space
+configs=win32, win32, x86 & win32, win32, x86_64 & macosx, cocoa, x86_64 & linux, gtk, x86_64
+
+#configs=win32, win32, x86 & win32, win32, x86_64 & macosx, cocoa, x86_64 & linux, gtk, x86 & linux, gtk, x86_64
 #configs=macosx, cocoa, x86_64
 
-
-
 #	win32, win32, x86 & \
 #	linux, gtk, ppc &\
 # linux, gtk, x86 & \
diff --git a/releng/org.eclipse.stem.releng/maps/stem.map b/releng/org.eclipse.stem.releng/maps/stem.map
index 59044cd..765b243 100644
--- a/releng/org.eclipse.stem.releng/maps/stem.map
+++ b/releng/org.eclipse.stem.releng/maps/stem.map
@@ -98,6 +98,7 @@
 !plugin@org.eclipse.stem.internal.diseasemodels.models=COPY,${source.path.models.epidemiology},org.eclipse.stem.internal.diseasemodels.models

 !plugin@org.eclipse.stem.internal.diseasemodels.scenarios=COPY,${source.path.models.epidemiology},org.eclipse.stem.internal.diseasemodels.scenarios

 plugin@org.eclipse.stem.diseasemodels=COPY,${source.path.models.epidemiology},org.eclipse.stem.diseasemodels

+plugin@org.eclipse.stem.diseasemodels.evolving=COPY,${source.path.models.epidemiology},org.eclipse.stem.diseasemodels.evolving

 plugin@org.eclipse.stem.diseasemodels.example=COPY,${source.path.models.epidemiology},org.eclipse.stem.diseasemodels.example

 plugin@org.eclipse.stem.diseasemodels.experimental=COPY,${source.path.models.epidemiology},org.eclipse.stem.diseasemodels.experimental

 plugin@org.eclipse.stem.diseasemodels.externaldatasource=COPY,${source.path.models.epidemiology},org.eclipse.stem.diseasemodels.externaldatasource