From ba2e816056ee0bdef88600a88fcd685f3ffec148 Mon Sep 17 00:00:00 2001
From: Stefan Herrnleben <s.herrnleben@syslex.de>
Date: Tue, 8 Aug 2017 15:46:31 +0200
Subject: [PATCH] implement adaptable dependency via inheritance

---
 .../model/DNIMM3AP.xcore                      |  19 +-
 .../plugin.properties                         |   2 +
 .../AdaptableConstantDoubleVariable.java      |  18 +
 .../AdaptableConstantLongVariable.java        |  18 +
 .../dni/dnimm3ap/AdaptableDependency.java     |  36 +-
 .../dni/dnimm3ap/AdaptableVariable.java       |  37 +-
 .../descartes/dni/dnimm3ap/DNIAPFactory.java  |  18 +-
 .../descartes/dni/dnimm3ap/DNIAPPackage.java  | 344 +++++++++++++-----
 ... AdaptableConstantDoubleVariableImpl.java} | 159 ++++----
 ...=> AdaptableConstantLongVariableImpl.java} | 157 ++++----
 .../dni/dnimm3ap/impl/DNIAPFactoryImpl.java   |  22 +-
 .../dni/dnimm3ap/impl/DNIAPPackageImpl.java   |  83 +++--
 ...leConstantDoubleVariableItemProvider.java} |  61 +---
 ...ableConstantLongVariableItemProvider.java} |  71 +---
 .../AlternativeDependencySetItemProvider.java |   7 +-
 .../AlternativeVariableSetItemProvider.java   |   7 +-
 .../DNIAPItemProviderAdapterFactory.java      |  46 +--
 .../dnimm3ap/util/DNIAPAdapterFactory.java    | 138 ++++++-
 .../dni/dnimm3ap/util/DNIAPSwitch.java        | 158 +++++++-
 tools.descartes.dni.core/META-INF/MANIFEST.MF |   1 +
 20 files changed, 834 insertions(+), 568 deletions(-)
 create mode 100644 tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantDoubleVariable.java
 create mode 100644 tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantLongVariable.java
 rename tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/{AdaptableDependencyImpl.java => AdaptableConstantDoubleVariableImpl.java} (62%)
 rename tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/{AdaptableVariableImpl.java => AdaptableConstantLongVariableImpl.java} (62%)
 rename tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/{AdaptableVariableItemProvider.java => AdaptableConstantDoubleVariableItemProvider.java} (75%)
 rename tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/{AdaptableDependencyItemProvider.java => AdaptableConstantLongVariableItemProvider.java} (71%)

diff --git a/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore b/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore
index e6bbf485..a44bdb1e 100644
--- a/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore
+++ b/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore
@@ -162,10 +162,6 @@ class AlternativeDependencySet extends AlternativeDependency {
 	contains AdaptableDependency[] alternative
 }
 
-class AdaptableDependency extends ICostable, tools.descartes.dni.dnimm3.Identifier {
-	contains tools.descartes.dni.dnimm3.Dependency[1] parameter
-}
-
 interface AlternativeVariable {
 }
 
@@ -173,8 +169,19 @@ class AlternativeVariableSet extends AlternativeVariable {
 	contains AdaptableVariable[] alternative
 }
 
-class AdaptableVariable extends ICostable, tools.descartes.dni.dnimm3.Identifier {
-	contains tools.descartes.dni.dnimm3.Variable[1] parameter
+//
+// Adaptable Dependencies
+//
+interface AdaptableDependency extends tools.descartes.dni.dnimm3.Dependency, ICostable, tools.descartes.dni.dnimm3.Identifier {
+}
+
+interface AdaptableVariable extends tools.descartes.dni.dnimm3.Variable, AdaptableDependency {
+}
+
+class AdaptableConstantLongVariable extends tools.descartes.dni.dnimm3.ConstantLongVariable, AdaptableVariable {
+}
+
+class AdaptableConstantDoubleVariable extends tools.descartes.dni.dnimm3.ConstantDoubleVariable, AdaptableVariable {
 }
 
 //
diff --git a/tools.descartes.dni.adaptation/plugin.properties b/tools.descartes.dni.adaptation/plugin.properties
index 89334687..6067d40c 100644
--- a/tools.descartes.dni.adaptation/plugin.properties
+++ b/tools.descartes.dni.adaptation/plugin.properties
@@ -428,3 +428,5 @@ _UI_AdaptableDependency_dependency_feature = Dependency
 _UI_AdaptableVariable_parameter_feature = Parameter
 _UI_AdaptableDependency_parameter_feature = Parameter
 _UI_AlternativeVariableSet_alternative_feature = Alternative
+_UI_AdaptableConstantLongVariable_type = Adaptable Constant Long Variable
+_UI_AdaptableConstantDoubleVariable_type = Adaptable Constant Double Variable
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantDoubleVariable.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantDoubleVariable.java
new file mode 100644
index 00000000..ffce9318
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantDoubleVariable.java
@@ -0,0 +1,18 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+import tools.descartes.dni.dnimm3.ConstantDoubleVariable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptable Constant Double Variable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableConstantDoubleVariable()
+ * @model
+ * @generated
+ */
+public interface AdaptableConstantDoubleVariable extends ConstantDoubleVariable, AdaptableVariable {
+} // AdaptableConstantDoubleVariable
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantLongVariable.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantLongVariable.java
new file mode 100644
index 00000000..88f08e54
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableConstantLongVariable.java
@@ -0,0 +1,18 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+import tools.descartes.dni.dnimm3.ConstantLongVariable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptable Constant Long Variable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableConstantLongVariable()
+ * @model
+ * @generated
+ */
+public interface AdaptableConstantLongVariable extends ConstantLongVariable, AdaptableVariable {
+} // AdaptableConstantLongVariable
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableDependency.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableDependency.java
index da97ca18..2bf647a2 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableDependency.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableDependency.java
@@ -10,42 +10,10 @@ import tools.descartes.dni.dnimm3.Identifier;
  * A representation of the model object '<em><b>Adaptable Dependency</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptableDependency#getParameter <em>Parameter</em>}</li>
- * </ul>
  *
  * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableDependency()
- * @model
+ * @model interface="true" abstract="true"
  * @generated
  */
-public interface AdaptableDependency extends ICostable, Identifier {
-	/**
-	 * Returns the value of the '<em><b>Parameter</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Parameter</em>' containment reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Parameter</em>' containment reference.
-	 * @see #setParameter(Dependency)
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableDependency_Parameter()
-	 * @model containment="true" required="true"
-	 * @generated
-	 */
-	Dependency getParameter();
-
-	/**
-	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency#getParameter <em>Parameter</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Parameter</em>' containment reference.
-	 * @see #getParameter()
-	 * @generated
-	 */
-	void setParameter(Dependency value);
-
+public interface AdaptableDependency extends Dependency, ICostable, Identifier {
 } // AdaptableDependency
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableVariable.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableVariable.java
index 8bf48271..4f49484d 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableVariable.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableVariable.java
@@ -2,7 +2,6 @@
  */
 package tools.descartes.dni.dnimm3ap;
 
-import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.Variable;
 
 /**
@@ -10,42 +9,10 @@ import tools.descartes.dni.dnimm3.Variable;
  * A representation of the model object '<em><b>Adaptable Variable</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptableVariable#getParameter <em>Parameter</em>}</li>
- * </ul>
  *
  * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableVariable()
- * @model
+ * @model interface="true" abstract="true"
  * @generated
  */
-public interface AdaptableVariable extends ICostable, Identifier {
-	/**
-	 * Returns the value of the '<em><b>Parameter</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Parameter</em>' containment reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Parameter</em>' containment reference.
-	 * @see #setParameter(Variable)
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableVariable_Parameter()
-	 * @model containment="true" required="true"
-	 * @generated
-	 */
-	Variable getParameter();
-
-	/**
-	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable#getParameter <em>Parameter</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Parameter</em>' containment reference.
-	 * @see #getParameter()
-	 * @generated
-	 */
-	void setParameter(Variable value);
-
+public interface AdaptableVariable extends Variable, AdaptableDependency {
 } // AdaptableVariable
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPFactory.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPFactory.java
index 5ebdb13f..05a8f560 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPFactory.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPFactory.java
@@ -148,31 +148,31 @@ public interface DNIAPFactory extends EFactory {
 	AlternativeDependencySet createAlternativeDependencySet();
 
 	/**
-	 * Returns a new object of class '<em>Adaptable Dependency</em>'.
+	 * Returns a new object of class '<em>Alternative Variable Set</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Adaptable Dependency</em>'.
+	 * @return a new object of class '<em>Alternative Variable Set</em>'.
 	 * @generated
 	 */
-	AdaptableDependency createAdaptableDependency();
+	AlternativeVariableSet createAlternativeVariableSet();
 
 	/**
-	 * Returns a new object of class '<em>Alternative Variable Set</em>'.
+	 * Returns a new object of class '<em>Adaptable Constant Long Variable</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Alternative Variable Set</em>'.
+	 * @return a new object of class '<em>Adaptable Constant Long Variable</em>'.
 	 * @generated
 	 */
-	AlternativeVariableSet createAlternativeVariableSet();
+	AdaptableConstantLongVariable createAdaptableConstantLongVariable();
 
 	/**
-	 * Returns a new object of class '<em>Adaptable Variable</em>'.
+	 * Returns a new object of class '<em>Adaptable Constant Double Variable</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Adaptable Variable</em>'.
+	 * @return a new object of class '<em>Adaptable Constant Double Variable</em>'.
 	 * @generated
 	 */
-	AdaptableVariable createAdaptableVariable();
+	AdaptableConstantDoubleVariable createAdaptableConstantDoubleVariable();
 
 	/**
 	 * Returns a new object of class '<em>Investment</em>'.
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPPackage.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPPackage.java
index 5f6ecd01..f0930862 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPPackage.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/DNIAPPackage.java
@@ -222,7 +222,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getICostable()
 	 * @generated
 	 */
-	int ICOSTABLE = 22;
+	int ICOSTABLE = 24;
 
 	/**
 	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
@@ -1258,50 +1258,115 @@ public interface DNIAPPackage extends EPackage {
 	int ALTERNATIVE_DEPENDENCY_SET_OPERATION_COUNT = ALTERNATIVE_DEPENDENCY_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl <em>Adaptable Dependency</em>}' class.
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.AlternativeVariable <em>Alternative Variable</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeVariable
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeVariable()
+	 * @generated
+	 */
+	int ALTERNATIVE_VARIABLE = 18;
+
+	/**
+	 * The number of structural features of the '<em>Alternative Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_VARIABLE_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Alternative Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_VARIABLE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeVariableSetImpl <em>Alternative Variable Set</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeVariableSetImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeVariableSet()
+	 * @generated
+	 */
+	int ALTERNATIVE_VARIABLE_SET = 19;
+
+	/**
+	 * The feature id for the '<em><b>Alternative</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_VARIABLE_SET__ALTERNATIVE = ALTERNATIVE_VARIABLE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Alternative Variable Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_VARIABLE_SET_FEATURE_COUNT = ALTERNATIVE_VARIABLE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Alternative Variable Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_VARIABLE_SET_OPERATION_COUNT = ALTERNATIVE_VARIABLE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency <em>Adaptable Dependency</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableDependency
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableDependency()
 	 * @generated
 	 */
-	int ADAPTABLE_DEPENDENCY = 18;
+	int ADAPTABLE_DEPENDENCY = 20;
 
 	/**
-	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Unit</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_DEPENDENCY__COST = ICOSTABLE__COST;
+	int ADAPTABLE_DEPENDENCY__UNIT = DNIPackage.DEPENDENCY__UNIT;
 
 	/**
-	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_DEPENDENCY__UID = ICOSTABLE_FEATURE_COUNT + 0;
+	int ADAPTABLE_DEPENDENCY__COST = DNIPackage.DEPENDENCY_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_DEPENDENCY__UID_GENERATED = ICOSTABLE_FEATURE_COUNT + 1;
+	int ADAPTABLE_DEPENDENCY__UID = DNIPackage.DEPENDENCY_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_DEPENDENCY__PARAMETER = ICOSTABLE_FEATURE_COUNT + 2;
+	int ADAPTABLE_DEPENDENCY__UID_GENERATED = DNIPackage.DEPENDENCY_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Adaptable Dependency</em>' class.
@@ -1310,7 +1375,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_DEPENDENCY_FEATURE_COUNT = ICOSTABLE_FEATURE_COUNT + 3;
+	int ADAPTABLE_DEPENDENCY_FEATURE_COUNT = DNIPackage.DEPENDENCY_FEATURE_COUNT + 3;
 
 	/**
 	 * The number of operations of the '<em>Adaptable Dependency</em>' class.
@@ -1319,82 +1384,99 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_DEPENDENCY_OPERATION_COUNT = ICOSTABLE_OPERATION_COUNT + 0;
+	int ADAPTABLE_DEPENDENCY_OPERATION_COUNT = DNIPackage.DEPENDENCY_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.AlternativeVariable <em>Alternative Variable</em>}' class.
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable <em>Adaptable Variable</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.AlternativeVariable
-	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeVariable()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableVariable
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableVariable()
 	 * @generated
 	 */
-	int ALTERNATIVE_VARIABLE = 19;
+	int ADAPTABLE_VARIABLE = 21;
 
 	/**
-	 * The number of structural features of the '<em>Alternative Variable</em>' class.
+	 * The feature id for the '<em><b>Unit</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_VARIABLE_FEATURE_COUNT = 0;
+	int ADAPTABLE_VARIABLE__UNIT = DNIPackage.VARIABLE__UNIT;
 
 	/**
-	 * The number of operations of the '<em>Alternative Variable</em>' class.
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_VARIABLE_OPERATION_COUNT = 0;
+	int ADAPTABLE_VARIABLE__COST = DNIPackage.VARIABLE_FEATURE_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeVariableSetImpl <em>Alternative Variable Set</em>}' class.
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeVariableSetImpl
-	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeVariableSet()
 	 * @generated
+	 * @ordered
 	 */
-	int ALTERNATIVE_VARIABLE_SET = 20;
+	int ADAPTABLE_VARIABLE__UID = DNIPackage.VARIABLE_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Alternative</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_VARIABLE_SET__ALTERNATIVE = ALTERNATIVE_VARIABLE_FEATURE_COUNT + 0;
+	int ADAPTABLE_VARIABLE__UID_GENERATED = DNIPackage.VARIABLE_FEATURE_COUNT + 2;
 
 	/**
-	 * The number of structural features of the '<em>Alternative Variable Set</em>' class.
+	 * The number of structural features of the '<em>Adaptable Variable</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_VARIABLE_SET_FEATURE_COUNT = ALTERNATIVE_VARIABLE_FEATURE_COUNT + 1;
+	int ADAPTABLE_VARIABLE_FEATURE_COUNT = DNIPackage.VARIABLE_FEATURE_COUNT + 3;
 
 	/**
-	 * The number of operations of the '<em>Alternative Variable Set</em>' class.
+	 * The number of operations of the '<em>Adaptable Variable</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_VARIABLE_SET_OPERATION_COUNT = ALTERNATIVE_VARIABLE_OPERATION_COUNT + 0;
+	int ADAPTABLE_VARIABLE_OPERATION_COUNT = DNIPackage.VARIABLE_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl <em>Adaptable Variable</em>}' class.
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantLongVariableImpl <em>Adaptable Constant Long Variable</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl
-	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableVariable()
+	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableConstantLongVariableImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableConstantLongVariable()
 	 * @generated
 	 */
-	int ADAPTABLE_VARIABLE = 21;
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE = 22;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE__UNIT = DNIPackage.CONSTANT_LONG_VARIABLE__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE__VALUE = DNIPackage.CONSTANT_LONG_VARIABLE__VALUE;
 
 	/**
 	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
@@ -1403,7 +1485,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_VARIABLE__COST = ICOSTABLE__COST;
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE__COST = DNIPackage.CONSTANT_LONG_VARIABLE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Uid</b></em>' attribute.
@@ -1412,7 +1494,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_VARIABLE__UID = ICOSTABLE_FEATURE_COUNT + 0;
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE__UID = DNIPackage.CONSTANT_LONG_VARIABLE_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
@@ -1421,34 +1503,98 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_VARIABLE__UID_GENERATED = ICOSTABLE_FEATURE_COUNT + 1;
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE__UID_GENERATED = DNIPackage.CONSTANT_LONG_VARIABLE_FEATURE_COUNT + 2;
 
 	/**
-	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
+	 * The number of structural features of the '<em>Adaptable Constant Long Variable</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_VARIABLE__PARAMETER = ICOSTABLE_FEATURE_COUNT + 2;
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE_FEATURE_COUNT = DNIPackage.CONSTANT_LONG_VARIABLE_FEATURE_COUNT + 3;
 
 	/**
-	 * The number of structural features of the '<em>Adaptable Variable</em>' class.
+	 * The number of operations of the '<em>Adaptable Constant Long Variable</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_VARIABLE_FEATURE_COUNT = ICOSTABLE_FEATURE_COUNT + 3;
+	int ADAPTABLE_CONSTANT_LONG_VARIABLE_OPERATION_COUNT = DNIPackage.CONSTANT_LONG_VARIABLE_OPERATION_COUNT + 0;
 
 	/**
-	 * The number of operations of the '<em>Adaptable Variable</em>' class.
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantDoubleVariableImpl <em>Adaptable Constant Double Variable</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableConstantDoubleVariableImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableConstantDoubleVariable()
+	 * @generated
+	 */
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE = 23;
+
+	/**
+	 * The feature id for the '<em><b>Unit</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UNIT = DNIPackage.CONSTANT_DOUBLE_VARIABLE__UNIT;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_VARIABLE_OPERATION_COUNT = ICOSTABLE_OPERATION_COUNT + 0;
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__VALUE = DNIPackage.CONSTANT_DOUBLE_VARIABLE__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST = DNIPackage.CONSTANT_DOUBLE_VARIABLE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID = DNIPackage.CONSTANT_DOUBLE_VARIABLE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID_GENERATED = DNIPackage.CONSTANT_DOUBLE_VARIABLE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Adaptable Constant Double Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE_FEATURE_COUNT = DNIPackage.CONSTANT_DOUBLE_VARIABLE_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Adaptable Constant Double Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_CONSTANT_DOUBLE_VARIABLE_OPERATION_COUNT = DNIPackage.CONSTANT_DOUBLE_VARIABLE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.CostImpl <em>Cost</em>}' class.
@@ -1458,7 +1604,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getCost()
 	 * @generated
 	 */
-	int COST = 23;
+	int COST = 25;
 
 	/**
 	 * The feature id for the '<em><b>Cost Function</b></em>' containment reference.
@@ -1495,7 +1641,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getInvestment()
 	 * @generated
 	 */
-	int INVESTMENT = 24;
+	int INVESTMENT = 26;
 
 	/**
 	 * The feature id for the '<em><b>Cost Function</b></em>' containment reference.
@@ -1532,7 +1678,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getHandlingTime()
 	 * @generated
 	 */
-	int HANDLING_TIME = 25;
+	int HANDLING_TIME = 27;
 
 	/**
 	 * The feature id for the '<em><b>Cost Function</b></em>' containment reference.
@@ -1569,7 +1715,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getICostFunction()
 	 * @generated
 	 */
-	int ICOST_FUNCTION = 26;
+	int ICOST_FUNCTION = 28;
 
 	/**
 	 * The number of structural features of the '<em>ICost Function</em>' class.
@@ -1597,7 +1743,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getFixedCostFunction()
 	 * @generated
 	 */
-	int FIXED_COST_FUNCTION = 27;
+	int FIXED_COST_FUNCTION = 29;
 
 	/**
 	 * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -2291,27 +2437,6 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	EReference getAlternativeDependencySet_Alternative();
 
-	/**
-	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency <em>Adaptable Dependency</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Adaptable Dependency</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptableDependency
-	 * @generated
-	 */
-	EClass getAdaptableDependency();
-
-	/**
-	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency#getParameter <em>Parameter</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Parameter</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptableDependency#getParameter()
-	 * @see #getAdaptableDependency()
-	 * @generated
-	 */
-	EReference getAdaptableDependency_Parameter();
-
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AlternativeVariable <em>Alternative Variable</em>}'.
 	 * <!-- begin-user-doc -->
@@ -2343,6 +2468,16 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	EReference getAlternativeVariableSet_Alternative();
 
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency <em>Adaptable Dependency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptable Dependency</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableDependency
+	 * @generated
+	 */
+	EClass getAdaptableDependency();
+
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable <em>Adaptable Variable</em>}'.
 	 * <!-- begin-user-doc -->
@@ -2354,15 +2489,24 @@ public interface DNIAPPackage extends EPackage {
 	EClass getAdaptableVariable();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable#getParameter <em>Parameter</em>}'.
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable <em>Adaptable Constant Long Variable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptable Constant Long Variable</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable
+	 * @generated
+	 */
+	EClass getAdaptableConstantLongVariable();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable <em>Adaptable Constant Double Variable</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Parameter</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptableVariable#getParameter()
-	 * @see #getAdaptableVariable()
+	 * @return the meta object for class '<em>Adaptable Constant Double Variable</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable
 	 * @generated
 	 */
-	EReference getAdaptableVariable_Parameter();
+	EClass getAdaptableConstantDoubleVariable();
 
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.ICostable <em>ICostable</em>}'.
@@ -3012,24 +3156,6 @@ public interface DNIAPPackage extends EPackage {
 		 */
 		EReference ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE = eINSTANCE.getAlternativeDependencySet_Alternative();
 
-		/**
-		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl <em>Adaptable Dependency</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl
-		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableDependency()
-		 * @generated
-		 */
-		EClass ADAPTABLE_DEPENDENCY = eINSTANCE.getAdaptableDependency();
-
-		/**
-		 * The meta object literal for the '<em><b>Parameter</b></em>' containment reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference ADAPTABLE_DEPENDENCY__PARAMETER = eINSTANCE.getAdaptableDependency_Parameter();
-
 		/**
 		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.AlternativeVariable <em>Alternative Variable</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -3059,22 +3185,44 @@ public interface DNIAPPackage extends EPackage {
 		EReference ALTERNATIVE_VARIABLE_SET__ALTERNATIVE = eINSTANCE.getAlternativeVariableSet_Alternative();
 
 		/**
-		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl <em>Adaptable Variable</em>}' class.
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency <em>Adaptable Dependency</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl
+		 * @see tools.descartes.dni.dnimm3ap.AdaptableDependency
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableDependency()
+		 * @generated
+		 */
+		EClass ADAPTABLE_DEPENDENCY = eINSTANCE.getAdaptableDependency();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable <em>Adaptable Variable</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.AdaptableVariable
 		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableVariable()
 		 * @generated
 		 */
 		EClass ADAPTABLE_VARIABLE = eINSTANCE.getAdaptableVariable();
 
 		/**
-		 * The meta object literal for the '<em><b>Parameter</b></em>' containment reference feature.
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantLongVariableImpl <em>Adaptable Constant Long Variable</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableConstantLongVariableImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableConstantLongVariable()
+		 * @generated
+		 */
+		EClass ADAPTABLE_CONSTANT_LONG_VARIABLE = eINSTANCE.getAdaptableConstantLongVariable();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantDoubleVariableImpl <em>Adaptable Constant Double Variable</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableConstantDoubleVariableImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableConstantDoubleVariable()
 		 * @generated
 		 */
-		EReference ADAPTABLE_VARIABLE__PARAMETER = eINSTANCE.getAdaptableVariable_Parameter();
+		EClass ADAPTABLE_CONSTANT_DOUBLE_VARIABLE = eINSTANCE.getAdaptableConstantDoubleVariable();
 
 		/**
 		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.ICostable <em>ICostable</em>}' class.
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableDependencyImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableConstantDoubleVariableImpl.java
similarity index 62%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableDependencyImpl.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableConstantDoubleVariableImpl.java
index 38977fac..55963505 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableDependencyImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableConstantDoubleVariableImpl.java
@@ -14,37 +14,39 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
-import tools.descartes.dni.dnimm3.Dependency;
-
 import tools.descartes.dni.dnimm3.Identifier;
+
+import tools.descartes.dni.dnimm3.impl.ConstantDoubleVariableImpl;
+
+import tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable;
 import tools.descartes.dni.dnimm3ap.AdaptableDependency;
+import tools.descartes.dni.dnimm3ap.AdaptableVariable;
 import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.ICostable;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Adaptable Dependency</b></em>'.
+ * An implementation of the model object '<em><b>Adaptable Constant Double Variable</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl#getCost <em>Cost</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl#getUid <em>Uid</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl#getUid_generated <em>Uid generated</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl#getParameter <em>Parameter</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantDoubleVariableImpl#getCost <em>Cost</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantDoubleVariableImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantDoubleVariableImpl#getUid_generated <em>Uid generated</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implements AdaptableDependency {
+public class AdaptableConstantDoubleVariableImpl extends ConstantDoubleVariableImpl implements AdaptableConstantDoubleVariable {
 	/**
 	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -95,21 +97,11 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	protected static final String UID_GENERATED_EDEFAULT = null;
 
 	/**
-	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getParameter()
 	 * @generated
-	 * @ordered
 	 */
-	protected Dependency parameter;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected AdaptableDependencyImpl() {
+	protected AdaptableConstantDoubleVariableImpl() {
 		super();
 	}
 
@@ -120,7 +112,7 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY;
+		return DNIAPPackage.Literals.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE;
 	}
 
 	/**
@@ -130,7 +122,7 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	 */
 	public List<Cost> getCost() {
 		if (cost == null) {
-			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_DEPENDENCY__COST);
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST);
 		}
 		return cost;
 	}
@@ -155,7 +147,7 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 		boolean oldUidESet = uidESet;
 		uidESet = true;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_DEPENDENCY__UID, oldUid, uid, !oldUidESet));
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID, oldUid, uid, !oldUidESet));
 	}
 
 	/**
@@ -169,7 +161,7 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 		uid = UID_EDEFAULT;
 		uidESet = false;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIAPPackage.ADAPTABLE_DEPENDENCY__UID, oldUid, UID_EDEFAULT, oldUidESet));
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID, oldUid, UID_EDEFAULT, oldUidESet));
 	}
 
 	/**
@@ -193,49 +185,6 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 		return this.getUid();
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Dependency getParameter() {
-		return parameter;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetParameter(Dependency newParameter, NotificationChain msgs) {
-		Dependency oldParameter = parameter;
-		parameter = newParameter;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER, oldParameter, newParameter);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setParameter(Dependency newParameter) {
-		if (newParameter != parameter) {
-			NotificationChain msgs = null;
-			if (parameter != null)
-				msgs = ((InternalEObject)parameter).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER, null, msgs);
-			if (newParameter != null)
-				msgs = ((InternalEObject)newParameter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER, null, msgs);
-			msgs = basicSetParameter(newParameter, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER, newParameter, newParameter));
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -244,10 +193,8 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST:
 				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
-				return basicSetParameter(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -260,14 +207,12 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST:
 				return getCost();
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID:
 				return getUid();
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID_GENERATED:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID_GENERATED:
 				return getUid_generated();
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
-				return getParameter();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -281,16 +226,13 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST:
 				getCost().clear();
 				getCost().addAll((Collection<? extends Cost>)newValue);
 				return;
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID:
 				setUid((String)newValue);
 				return;
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
-				setParameter((Dependency)newValue);
-				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -303,15 +245,12 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST:
 				getCost().clear();
 				return;
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID:
 				unsetUid();
 				return;
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
-				setParameter((Dependency)null);
-				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -324,14 +263,12 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST:
 				return cost != null && !cost.isEmpty();
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID:
 				return isSetUid();
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID_GENERATED:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID_GENERATED:
 				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
-				return parameter != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -343,10 +280,26 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	 */
 	@Override
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ICostable.class) {
+			switch (derivedFeatureID) {
+				case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST: return DNIAPPackage.ICOSTABLE__COST;
+				default: return -1;
+			}
+		}
 		if (baseClass == Identifier.class) {
 			switch (derivedFeatureID) {
-				case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID: return DNIPackage.IDENTIFIER__UID;
-				case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableDependency.class) {
+			switch (derivedFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableVariable.class) {
+			switch (derivedFeatureID) {
 				default: return -1;
 			}
 		}
@@ -360,10 +313,26 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 	 */
 	@Override
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ICostable.class) {
+			switch (baseFeatureID) {
+				case DNIAPPackage.ICOSTABLE__COST: return DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST;
+				default: return -1;
+			}
+		}
 		if (baseClass == Identifier.class) {
 			switch (baseFeatureID) {
-				case DNIPackage.IDENTIFIER__UID: return DNIAPPackage.ADAPTABLE_DEPENDENCY__UID;
-				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIAPPackage.ADAPTABLE_DEPENDENCY__UID_GENERATED;
+				case DNIPackage.IDENTIFIER__UID: return DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableDependency.class) {
+			switch (baseFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableVariable.class) {
+			switch (baseFeatureID) {
 				default: return -1;
 			}
 		}
@@ -386,4 +355,4 @@ public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implem
 		return result.toString();
 	}
 
-} //AdaptableDependencyImpl
+} //AdaptableConstantDoubleVariableImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableVariableImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableConstantLongVariableImpl.java
similarity index 62%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableVariableImpl.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableConstantLongVariableImpl.java
index b2b71582..2462dc53 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableVariableImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableConstantLongVariableImpl.java
@@ -14,7 +14,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -22,29 +21,32 @@ import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Identifier;
-import tools.descartes.dni.dnimm3.Variable;
 
+import tools.descartes.dni.dnimm3.impl.ConstantLongVariableImpl;
+
+import tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable;
+import tools.descartes.dni.dnimm3ap.AdaptableDependency;
 import tools.descartes.dni.dnimm3ap.AdaptableVariable;
 import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.ICostable;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Adaptable Variable</b></em>'.
+ * An implementation of the model object '<em><b>Adaptable Constant Long Variable</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl#getCost <em>Cost</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl#getUid <em>Uid</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl#getUid_generated <em>Uid generated</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl#getParameter <em>Parameter</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantLongVariableImpl#getCost <em>Cost</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantLongVariableImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableConstantLongVariableImpl#getUid_generated <em>Uid generated</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implements AdaptableVariable {
+public class AdaptableConstantLongVariableImpl extends ConstantLongVariableImpl implements AdaptableConstantLongVariable {
 	/**
 	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -94,22 +96,12 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	 */
 	protected static final String UID_GENERATED_EDEFAULT = null;
 
-	/**
-	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getParameter()
-	 * @generated
-	 * @ordered
-	 */
-	protected Variable parameter;
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AdaptableVariableImpl() {
+	protected AdaptableConstantLongVariableImpl() {
 		super();
 	}
 
@@ -120,7 +112,7 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return DNIAPPackage.Literals.ADAPTABLE_VARIABLE;
+		return DNIAPPackage.Literals.ADAPTABLE_CONSTANT_LONG_VARIABLE;
 	}
 
 	/**
@@ -130,7 +122,7 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	 */
 	public List<Cost> getCost() {
 		if (cost == null) {
-			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_VARIABLE__COST);
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST);
 		}
 		return cost;
 	}
@@ -155,7 +147,7 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 		boolean oldUidESet = uidESet;
 		uidESet = true;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_VARIABLE__UID, oldUid, uid, !oldUidESet));
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID, oldUid, uid, !oldUidESet));
 	}
 
 	/**
@@ -169,7 +161,7 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 		uid = UID_EDEFAULT;
 		uidESet = false;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIAPPackage.ADAPTABLE_VARIABLE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID, oldUid, UID_EDEFAULT, oldUidESet));
 	}
 
 	/**
@@ -193,49 +185,6 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 		return this.getUid();
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Variable getParameter() {
-		return parameter;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetParameter(Variable newParameter, NotificationChain msgs) {
-		Variable oldParameter = parameter;
-		parameter = newParameter;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER, oldParameter, newParameter);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setParameter(Variable newParameter) {
-		if (newParameter != parameter) {
-			NotificationChain msgs = null;
-			if (parameter != null)
-				msgs = ((InternalEObject)parameter).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER, null, msgs);
-			if (newParameter != null)
-				msgs = ((InternalEObject)newParameter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER, null, msgs);
-			msgs = basicSetParameter(newParameter, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER, newParameter, newParameter));
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -244,10 +193,8 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST:
 				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
-				return basicSetParameter(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -260,14 +207,12 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST:
 				return getCost();
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID:
 				return getUid();
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID_GENERATED:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID_GENERATED:
 				return getUid_generated();
-			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
-				return getParameter();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -281,16 +226,13 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST:
 				getCost().clear();
 				getCost().addAll((Collection<? extends Cost>)newValue);
 				return;
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID:
 				setUid((String)newValue);
 				return;
-			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
-				setParameter((Variable)newValue);
-				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -303,15 +245,12 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST:
 				getCost().clear();
 				return;
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID:
 				unsetUid();
 				return;
-			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
-				setParameter((Variable)null);
-				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -324,14 +263,12 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST:
 				return cost != null && !cost.isEmpty();
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID:
 				return isSetUid();
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID_GENERATED:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID_GENERATED:
 				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
-			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
-				return parameter != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -343,10 +280,26 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	 */
 	@Override
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ICostable.class) {
+			switch (derivedFeatureID) {
+				case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST: return DNIAPPackage.ICOSTABLE__COST;
+				default: return -1;
+			}
+		}
 		if (baseClass == Identifier.class) {
 			switch (derivedFeatureID) {
-				case DNIAPPackage.ADAPTABLE_VARIABLE__UID: return DNIPackage.IDENTIFIER__UID;
-				case DNIAPPackage.ADAPTABLE_VARIABLE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableDependency.class) {
+			switch (derivedFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableVariable.class) {
+			switch (derivedFeatureID) {
 				default: return -1;
 			}
 		}
@@ -360,10 +313,26 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 	 */
 	@Override
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ICostable.class) {
+			switch (baseFeatureID) {
+				case DNIAPPackage.ICOSTABLE__COST: return DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST;
+				default: return -1;
+			}
+		}
 		if (baseClass == Identifier.class) {
 			switch (baseFeatureID) {
-				case DNIPackage.IDENTIFIER__UID: return DNIAPPackage.ADAPTABLE_VARIABLE__UID;
-				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIAPPackage.ADAPTABLE_VARIABLE__UID_GENERATED;
+				case DNIPackage.IDENTIFIER__UID: return DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableDependency.class) {
+			switch (baseFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == AdaptableVariable.class) {
+			switch (baseFeatureID) {
 				default: return -1;
 			}
 		}
@@ -386,4 +355,4 @@ public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implemen
 		return result.toString();
 	}
 
-} //AdaptableVariableImpl
+} //AdaptableConstantLongVariableImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPFactoryImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPFactoryImpl.java
index f69f6dca..74e3aa49 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPFactoryImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPFactoryImpl.java
@@ -70,9 +70,9 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 			case DNIAPPackage.NODE_ADAPTATION_GROUP: return createNodeAdaptationGroup();
 			case DNIAPPackage.LINK_ADAPTATION_GROUP: return createLinkAdaptationGroup();
 			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET: return createAlternativeDependencySet();
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY: return createAdaptableDependency();
 			case DNIAPPackage.ALTERNATIVE_VARIABLE_SET: return createAlternativeVariableSet();
-			case DNIAPPackage.ADAPTABLE_VARIABLE: return createAdaptableVariable();
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE: return createAdaptableConstantLongVariable();
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE: return createAdaptableConstantDoubleVariable();
 			case DNIAPPackage.INVESTMENT: return createInvestment();
 			case DNIAPPackage.HANDLING_TIME: return createHandlingTime();
 			case DNIAPPackage.FIXED_COST_FUNCTION: return createFixedCostFunction();
@@ -226,9 +226,9 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AdaptableDependency createAdaptableDependency() {
-		AdaptableDependencyImpl adaptableDependency = new AdaptableDependencyImpl();
-		return adaptableDependency;
+	public AlternativeVariableSet createAlternativeVariableSet() {
+		AlternativeVariableSetImpl alternativeVariableSet = new AlternativeVariableSetImpl();
+		return alternativeVariableSet;
 	}
 
 	/**
@@ -236,9 +236,9 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AlternativeVariableSet createAlternativeVariableSet() {
-		AlternativeVariableSetImpl alternativeVariableSet = new AlternativeVariableSetImpl();
-		return alternativeVariableSet;
+	public AdaptableConstantLongVariable createAdaptableConstantLongVariable() {
+		AdaptableConstantLongVariableImpl adaptableConstantLongVariable = new AdaptableConstantLongVariableImpl();
+		return adaptableConstantLongVariable;
 	}
 
 	/**
@@ -246,9 +246,9 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AdaptableVariable createAdaptableVariable() {
-		AdaptableVariableImpl adaptableVariable = new AdaptableVariableImpl();
-		return adaptableVariable;
+	public AdaptableConstantDoubleVariable createAdaptableConstantDoubleVariable() {
+		AdaptableConstantDoubleVariableImpl adaptableConstantDoubleVariable = new AdaptableConstantDoubleVariableImpl();
+		return adaptableConstantDoubleVariable;
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPPackageImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPPackageImpl.java
index 6b257f91..04c7a854 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPPackageImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/DNIAPPackageImpl.java
@@ -14,6 +14,8 @@ import org.eclipse.emf.ecore.impl.EPackageImpl;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
 
+import tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable;
+import tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable;
 import tools.descartes.dni.dnimm3ap.AdaptableDependency;
 import tools.descartes.dni.dnimm3ap.AdaptableEndPerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance;
@@ -183,21 +185,21 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass adaptableDependencyEClass = null;
+	private EClass alternativeVariableEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass alternativeVariableEClass = null;
+	private EClass alternativeVariableSetEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass alternativeVariableSetEClass = null;
+	private EClass adaptableDependencyEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -206,6 +208,20 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 */
 	private EClass adaptableVariableEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptableConstantLongVariableEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptableConstantDoubleVariableEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -876,8 +892,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAdaptableDependency() {
-		return adaptableDependencyEClass;
+	public EClass getAlternativeVariable() {
+		return alternativeVariableEClass;
 	}
 
 	/**
@@ -885,8 +901,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptableDependency_Parameter() {
-		return (EReference)adaptableDependencyEClass.getEStructuralFeatures().get(0);
+	public EClass getAlternativeVariableSet() {
+		return alternativeVariableSetEClass;
 	}
 
 	/**
@@ -894,8 +910,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAlternativeVariable() {
-		return alternativeVariableEClass;
+	public EReference getAlternativeVariableSet_Alternative() {
+		return (EReference)alternativeVariableSetEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -903,8 +919,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAlternativeVariableSet() {
-		return alternativeVariableSetEClass;
+	public EClass getAdaptableDependency() {
+		return adaptableDependencyEClass;
 	}
 
 	/**
@@ -912,8 +928,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAlternativeVariableSet_Alternative() {
-		return (EReference)alternativeVariableSetEClass.getEStructuralFeatures().get(0);
+	public EClass getAdaptableVariable() {
+		return adaptableVariableEClass;
 	}
 
 	/**
@@ -921,8 +937,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAdaptableVariable() {
-		return adaptableVariableEClass;
+	public EClass getAdaptableConstantLongVariable() {
+		return adaptableConstantLongVariableEClass;
 	}
 
 	/**
@@ -930,8 +946,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptableVariable_Parameter() {
-		return (EReference)adaptableVariableEClass.getEStructuralFeatures().get(0);
+	public EClass getAdaptableConstantDoubleVariable() {
+		return adaptableConstantDoubleVariableEClass;
 	}
 
 	/**
@@ -1123,16 +1139,18 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		alternativeDependencySetEClass = createEClass(ALTERNATIVE_DEPENDENCY_SET);
 		createEReference(alternativeDependencySetEClass, ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE);
 
-		adaptableDependencyEClass = createEClass(ADAPTABLE_DEPENDENCY);
-		createEReference(adaptableDependencyEClass, ADAPTABLE_DEPENDENCY__PARAMETER);
-
 		alternativeVariableEClass = createEClass(ALTERNATIVE_VARIABLE);
 
 		alternativeVariableSetEClass = createEClass(ALTERNATIVE_VARIABLE_SET);
 		createEReference(alternativeVariableSetEClass, ALTERNATIVE_VARIABLE_SET__ALTERNATIVE);
 
+		adaptableDependencyEClass = createEClass(ADAPTABLE_DEPENDENCY);
+
 		adaptableVariableEClass = createEClass(ADAPTABLE_VARIABLE);
-		createEReference(adaptableVariableEClass, ADAPTABLE_VARIABLE__PARAMETER);
+
+		adaptableConstantLongVariableEClass = createEClass(ADAPTABLE_CONSTANT_LONG_VARIABLE);
+
+		adaptableConstantDoubleVariableEClass = createEClass(ADAPTABLE_CONSTANT_DOUBLE_VARIABLE);
 
 		iCostableEClass = createEClass(ICOSTABLE);
 		createEReference(iCostableEClass, ICOSTABLE__COST);
@@ -1227,11 +1245,16 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		nodeAdaptationGroupEClass.getESuperTypes().add(this.getIAdaptationGroup());
 		linkAdaptationGroupEClass.getESuperTypes().add(this.getIAdaptationGroup());
 		alternativeDependencySetEClass.getESuperTypes().add(this.getAlternativeDependency());
+		alternativeVariableSetEClass.getESuperTypes().add(this.getAlternativeVariable());
+		adaptableDependencyEClass.getESuperTypes().add(theDNIPackage.getDependency());
 		adaptableDependencyEClass.getESuperTypes().add(this.getICostable());
 		adaptableDependencyEClass.getESuperTypes().add(theDNIPackage.getIdentifier());
-		alternativeVariableSetEClass.getESuperTypes().add(this.getAlternativeVariable());
-		adaptableVariableEClass.getESuperTypes().add(this.getICostable());
-		adaptableVariableEClass.getESuperTypes().add(theDNIPackage.getIdentifier());
+		adaptableVariableEClass.getESuperTypes().add(theDNIPackage.getVariable());
+		adaptableVariableEClass.getESuperTypes().add(this.getAdaptableDependency());
+		adaptableConstantLongVariableEClass.getESuperTypes().add(theDNIPackage.getConstantLongVariable());
+		adaptableConstantLongVariableEClass.getESuperTypes().add(this.getAdaptableVariable());
+		adaptableConstantDoubleVariableEClass.getESuperTypes().add(theDNIPackage.getConstantDoubleVariable());
+		adaptableConstantDoubleVariableEClass.getESuperTypes().add(this.getAdaptableVariable());
 		investmentEClass.getESuperTypes().add(this.getCost());
 		handlingTimeEClass.getESuperTypes().add(this.getCost());
 		fixedCostFunctionEClass.getESuperTypes().add(this.getICostFunction());
@@ -1318,16 +1341,18 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		initEClass(alternativeDependencySetEClass, AlternativeDependencySet.class, "AlternativeDependencySet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getAlternativeDependencySet_Alternative(), this.getAdaptableDependency(), null, "alternative", null, 0, -1, AlternativeDependencySet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(adaptableDependencyEClass, AdaptableDependency.class, "AdaptableDependency", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getAdaptableDependency_Parameter(), theDNIPackage.getDependency(), null, "parameter", null, 1, 1, AdaptableDependency.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
 		initEClass(alternativeVariableEClass, AlternativeVariable.class, "AlternativeVariable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(alternativeVariableSetEClass, AlternativeVariableSet.class, "AlternativeVariableSet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getAlternativeVariableSet_Alternative(), this.getAdaptableVariable(), null, "alternative", null, 0, -1, AlternativeVariableSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(adaptableVariableEClass, AdaptableVariable.class, "AdaptableVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getAdaptableVariable_Parameter(), theDNIPackage.getVariable(), null, "parameter", null, 1, 1, AdaptableVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(adaptableDependencyEClass, AdaptableDependency.class, "AdaptableDependency", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(adaptableVariableEClass, AdaptableVariable.class, "AdaptableVariable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(adaptableConstantLongVariableEClass, AdaptableConstantLongVariable.class, "AdaptableConstantLongVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(adaptableConstantDoubleVariableEClass, AdaptableConstantDoubleVariable.class, "AdaptableConstantDoubleVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(iCostableEClass, ICostable.class, "ICostable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getICostable_Cost(), this.getCost(), null, "cost", null, 0, -1, ICostable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableVariableItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableConstantDoubleVariableItemProvider.java
similarity index 75%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableVariableItemProvider.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableConstantDoubleVariableItemProvider.java
index 0f044a93..144dc01e 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableVariableItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableConstantDoubleVariableItemProvider.java
@@ -14,44 +14,32 @@ import org.eclipse.emf.common.util.ResourceLocator;
 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.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
-import tools.descartes.dni.dnimm3.DNIFactory;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
-import tools.descartes.dni.dnimm3ap.AdaptableVariable;
+
+import tools.descartes.dni.dnimm3.provider.ConstantDoubleVariableItemProvider;
+
+import tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable;
 import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
- * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableVariable} object.
+ * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
  */
-public class AdaptableVariableItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+public class AdaptableConstantDoubleVariableItemProvider extends ConstantDoubleVariableItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AdaptableVariableItemProvider(AdapterFactory adapterFactory) {
+	public AdaptableConstantDoubleVariableItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -129,7 +117,6 @@ public class AdaptableVariableItemProvider
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_VARIABLE__PARAMETER);
 		}
 		return childrenFeatures;
 	}
@@ -148,14 +135,14 @@ public class AdaptableVariableItemProvider
 	}
 
 	/**
-	 * This returns AdaptableVariable.gif.
+	 * This returns AdaptableConstantDoubleVariable.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
 	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptableVariable"));
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptableConstantDoubleVariable"));
 	}
 
 	/**
@@ -166,10 +153,8 @@ public class AdaptableVariableItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((AdaptableVariable)object).getUid();
-		return label == null || label.length() == 0 ?
-			getString("_UI_AdaptableVariable_type") :
-			getString("_UI_AdaptableVariable_type") + " " + label;
+		AdaptableConstantDoubleVariable adaptableConstantDoubleVariable = (AdaptableConstantDoubleVariable)object;
+		return getString("_UI_AdaptableConstantDoubleVariable_type") + " " + adaptableConstantDoubleVariable.getValue();
 	}
 	
 
@@ -184,13 +169,12 @@ public class AdaptableVariableItemProvider
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(AdaptableVariable.class)) {
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID:
-			case DNIAPPackage.ADAPTABLE_VARIABLE__UID_GENERATED:
+		switch (notification.getFeatureID(AdaptableConstantDoubleVariable.class)) {
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
-			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
-			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE__COST:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -217,21 +201,6 @@ public class AdaptableVariableItemProvider
 			(createChildParameter
 				(DNIAPPackage.Literals.ICOSTABLE__COST,
 				 DNIAPFactory.eINSTANCE.createHandlingTime()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_VARIABLE__PARAMETER,
-				 DNIFactory.eINSTANCE.createConstantDoubleVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_VARIABLE__PARAMETER,
-				 DNIFactory.eINSTANCE.createConstantLongVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_VARIABLE__PARAMETER,
-				 DNIFactory.eINSTANCE.createRandomVariable()));
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableDependencyItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableConstantLongVariableItemProvider.java
similarity index 71%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableDependencyItemProvider.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableConstantLongVariableItemProvider.java
index dab142f3..dc973b10 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableDependencyItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableConstantLongVariableItemProvider.java
@@ -14,44 +14,32 @@ import org.eclipse.emf.common.util.ResourceLocator;
 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.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
-import tools.descartes.dni.dnimm3.DNIFactory;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
-import tools.descartes.dni.dnimm3ap.AdaptableDependency;
+
+import tools.descartes.dni.dnimm3.provider.ConstantLongVariableItemProvider;
+
+import tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable;
 import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
- * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableDependency} object.
+ * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
  */
-public class AdaptableDependencyItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+public class AdaptableConstantLongVariableItemProvider extends ConstantLongVariableItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AdaptableDependencyItemProvider(AdapterFactory adapterFactory) {
+	public AdaptableConstantLongVariableItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -129,7 +117,6 @@ public class AdaptableDependencyItemProvider
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY__PARAMETER);
 		}
 		return childrenFeatures;
 	}
@@ -148,14 +135,14 @@ public class AdaptableDependencyItemProvider
 	}
 
 	/**
-	 * This returns AdaptableDependency.gif.
+	 * This returns AdaptableConstantLongVariable.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
 	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptableDependency"));
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptableConstantLongVariable"));
 	}
 
 	/**
@@ -166,10 +153,8 @@ public class AdaptableDependencyItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((AdaptableDependency)object).getUid();
-		return label == null || label.length() == 0 ?
-			getString("_UI_AdaptableDependency_type") :
-			getString("_UI_AdaptableDependency_type") + " " + label;
+		AdaptableConstantLongVariable adaptableConstantLongVariable = (AdaptableConstantLongVariable)object;
+		return getString("_UI_AdaptableConstantLongVariable_type") + " " + adaptableConstantLongVariable.getValue();
 	}
 	
 
@@ -184,13 +169,12 @@ public class AdaptableDependencyItemProvider
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(AdaptableDependency.class)) {
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID:
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__UID_GENERATED:
+		switch (notification.getFeatureID(AdaptableConstantLongVariable.class)) {
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE__COST:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -217,31 +201,6 @@ public class AdaptableDependencyItemProvider
 			(createChildParameter
 				(DNIAPPackage.Literals.ICOSTABLE__COST,
 				 DNIAPFactory.eINSTANCE.createHandlingTime()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY__PARAMETER,
-				 DNIFactory.eINSTANCE.createConstantDoubleVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY__PARAMETER,
-				 DNIFactory.eINSTANCE.createConstantLongVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY__PARAMETER,
-				 DNIFactory.eINSTANCE.createRandomVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY__PARAMETER,
-				 DNIFactory.eINSTANCE.createDiscreteFunction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY__PARAMETER,
-				 DNIFactory.eINSTANCE.createExponentialFunction()));
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeDependencySetItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeDependencySetItemProvider.java
index de1654d5..7637c15b 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeDependencySetItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeDependencySetItemProvider.java
@@ -151,7 +151,12 @@ public class AlternativeDependencySetItemProvider
 		newChildDescriptors.add
 			(createChildParameter
 				(DNIAPPackage.Literals.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableDependency()));
+				 DNIAPFactory.eINSTANCE.createAdaptableConstantLongVariable()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE,
+				 DNIAPFactory.eINSTANCE.createAdaptableConstantDoubleVariable()));
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeVariableSetItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeVariableSetItemProvider.java
index b7eeae3b..973d0a8a 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeVariableSetItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeVariableSetItemProvider.java
@@ -151,7 +151,12 @@ public class AlternativeVariableSetItemProvider
 		newChildDescriptors.add
 			(createChildParameter
 				(DNIAPPackage.Literals.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableVariable()));
+				 DNIAPFactory.eINSTANCE.createAdaptableConstantLongVariable()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE,
+				 DNIAPFactory.eINSTANCE.createAdaptableConstantDoubleVariable()));
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/DNIAPItemProviderAdapterFactory.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/DNIAPItemProviderAdapterFactory.java
index 273ae5ab..5c03e5aa 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/DNIAPItemProviderAdapterFactory.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/DNIAPItemProviderAdapterFactory.java
@@ -394,72 +394,72 @@ public class DNIAPItemProviderAdapterFactory extends DNIAPAdapterFactory impleme
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptableDependency} instances.
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AdaptableDependencyItemProvider adaptableDependencyItemProvider;
+	protected AlternativeVariableSetItemProvider alternativeVariableSetItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableDependency}.
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createAdaptableDependencyAdapter() {
-		if (adaptableDependencyItemProvider == null) {
-			adaptableDependencyItemProvider = new AdaptableDependencyItemProvider(this);
+	public Adapter createAlternativeVariableSetAdapter() {
+		if (alternativeVariableSetItemProvider == null) {
+			alternativeVariableSetItemProvider = new AlternativeVariableSetItemProvider(this);
 		}
 
-		return adaptableDependencyItemProvider;
+		return alternativeVariableSetItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet} instances.
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AlternativeVariableSetItemProvider alternativeVariableSetItemProvider;
+	protected AdaptableConstantLongVariableItemProvider adaptableConstantLongVariableItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet}.
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createAlternativeVariableSetAdapter() {
-		if (alternativeVariableSetItemProvider == null) {
-			alternativeVariableSetItemProvider = new AlternativeVariableSetItemProvider(this);
+	public Adapter createAdaptableConstantLongVariableAdapter() {
+		if (adaptableConstantLongVariableItemProvider == null) {
+			adaptableConstantLongVariableItemProvider = new AdaptableConstantLongVariableItemProvider(this);
 		}
 
-		return alternativeVariableSetItemProvider;
+		return adaptableConstantLongVariableItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptableVariable} instances.
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AdaptableVariableItemProvider adaptableVariableItemProvider;
+	protected AdaptableConstantDoubleVariableItemProvider adaptableConstantDoubleVariableItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableVariable}.
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createAdaptableVariableAdapter() {
-		if (adaptableVariableItemProvider == null) {
-			adaptableVariableItemProvider = new AdaptableVariableItemProvider(this);
+	public Adapter createAdaptableConstantDoubleVariableAdapter() {
+		if (adaptableConstantDoubleVariableItemProvider == null) {
+			adaptableConstantDoubleVariableItemProvider = new AdaptableConstantDoubleVariableItemProvider(this);
 		}
 
-		return adaptableVariableItemProvider;
+		return adaptableConstantDoubleVariableItemProvider;
 	}
 
 	/**
@@ -644,9 +644,9 @@ public class DNIAPItemProviderAdapterFactory extends DNIAPAdapterFactory impleme
 		if (nodeAdaptationGroupItemProvider != null) nodeAdaptationGroupItemProvider.dispose();
 		if (linkAdaptationGroupItemProvider != null) linkAdaptationGroupItemProvider.dispose();
 		if (alternativeDependencySetItemProvider != null) alternativeDependencySetItemProvider.dispose();
-		if (adaptableDependencyItemProvider != null) adaptableDependencyItemProvider.dispose();
 		if (alternativeVariableSetItemProvider != null) alternativeVariableSetItemProvider.dispose();
-		if (adaptableVariableItemProvider != null) adaptableVariableItemProvider.dispose();
+		if (adaptableConstantLongVariableItemProvider != null) adaptableConstantLongVariableItemProvider.dispose();
+		if (adaptableConstantDoubleVariableItemProvider != null) adaptableConstantDoubleVariableItemProvider.dispose();
 		if (investmentItemProvider != null) investmentItemProvider.dispose();
 		if (handlingTimeItemProvider != null) handlingTimeItemProvider.dispose();
 		if (fixedCostFunctionItemProvider != null) fixedCostFunctionItemProvider.dispose();
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPAdapterFactory.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPAdapterFactory.java
index 78a28809..2a80c12c 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPAdapterFactory.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPAdapterFactory.java
@@ -9,9 +9,13 @@ import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 
 import org.eclipse.emf.ecore.EObject;
 
+import tools.descartes.dni.dnimm3.ConstantDoubleVariable;
+import tools.descartes.dni.dnimm3.ConstantLongVariable;
+import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.ITypedEntity;
 import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.NamedElement;
+import tools.descartes.dni.dnimm3.Variable;
 
 import tools.descartes.dni.dnimm3ap.*;
 
@@ -144,10 +148,6 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 				return createAlternativeDependencySetAdapter();
 			}
 			@Override
-			public Adapter caseAdaptableDependency(AdaptableDependency object) {
-				return createAdaptableDependencyAdapter();
-			}
-			@Override
 			public Adapter caseAlternativeVariable(AlternativeVariable object) {
 				return createAlternativeVariableAdapter();
 			}
@@ -156,10 +156,22 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 				return createAlternativeVariableSetAdapter();
 			}
 			@Override
+			public Adapter caseAdaptableDependency(AdaptableDependency object) {
+				return createAdaptableDependencyAdapter();
+			}
+			@Override
 			public Adapter caseAdaptableVariable(AdaptableVariable object) {
 				return createAdaptableVariableAdapter();
 			}
 			@Override
+			public Adapter caseAdaptableConstantLongVariable(AdaptableConstantLongVariable object) {
+				return createAdaptableConstantLongVariableAdapter();
+			}
+			@Override
+			public Adapter caseAdaptableConstantDoubleVariable(AdaptableConstantDoubleVariable object) {
+				return createAdaptableConstantDoubleVariableAdapter();
+			}
+			@Override
 			public Adapter caseICostable(ICostable object) {
 				return createICostableAdapter();
 			}
@@ -192,6 +204,22 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 				return createIdentifierAdapter();
 			}
 			@Override
+			public Adapter caseDependency(Dependency object) {
+				return createDependencyAdapter();
+			}
+			@Override
+			public Adapter caseVariable(Variable object) {
+				return createVariableAdapter();
+			}
+			@Override
+			public Adapter caseConstantLongVariable(ConstantLongVariable object) {
+				return createConstantLongVariableAdapter();
+			}
+			@Override
+			public Adapter caseConstantDoubleVariable(ConstantDoubleVariable object) {
+				return createConstantDoubleVariableAdapter();
+			}
+			@Override
 			public Adapter defaultCase(EObject object) {
 				return createEObjectAdapter();
 			}
@@ -464,44 +492,44 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency <em>Adaptable Dependency</em>}'.
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeVariable <em>Alternative Variable</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 tools.descartes.dni.dnimm3ap.AdaptableDependency
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeVariable
 	 * @generated
 	 */
-	public Adapter createAdaptableDependencyAdapter() {
+	public Adapter createAlternativeVariableAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeVariable <em>Alternative Variable</em>}'.
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet <em>Alternative Variable Set</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 tools.descartes.dni.dnimm3ap.AlternativeVariable
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeVariableSet
 	 * @generated
 	 */
-	public Adapter createAlternativeVariableAdapter() {
+	public Adapter createAlternativeVariableSetAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet <em>Alternative Variable Set</em>}'.
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AdaptableDependency <em>Adaptable Dependency</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 tools.descartes.dni.dnimm3ap.AlternativeVariableSet
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableDependency
 	 * @generated
 	 */
-	public Adapter createAlternativeVariableSetAdapter() {
+	public Adapter createAdaptableDependencyAdapter() {
 		return null;
 	}
 
@@ -519,6 +547,34 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable <em>Adaptable Constant Long Variable</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 tools.descartes.dni.dnimm3ap.AdaptableConstantLongVariable
+	 * @generated
+	 */
+	public Adapter createAdaptableConstantLongVariableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable <em>Adaptable Constant Double Variable</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 tools.descartes.dni.dnimm3ap.AdaptableConstantDoubleVariable
+	 * @generated
+	 */
+	public Adapter createAdaptableConstantDoubleVariableAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.ICostable <em>ICostable</em>}'.
 	 * <!-- begin-user-doc -->
@@ -631,6 +687,62 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3.Dependency <em>Dependency</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 tools.descartes.dni.dnimm3.Dependency
+	 * @generated
+	 */
+	public Adapter createDependencyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3.Variable <em>Variable</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 tools.descartes.dni.dnimm3.Variable
+	 * @generated
+	 */
+	public Adapter createVariableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3.ConstantLongVariable <em>Constant Long Variable</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 tools.descartes.dni.dnimm3.ConstantLongVariable
+	 * @generated
+	 */
+	public Adapter createConstantLongVariableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3.ConstantDoubleVariable <em>Constant Double Variable</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 tools.descartes.dni.dnimm3.ConstantDoubleVariable
+	 * @generated
+	 */
+	public Adapter createConstantDoubleVariableAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPSwitch.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPSwitch.java
index 81a94bac..c8bdb607 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPSwitch.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/util/DNIAPSwitch.java
@@ -7,9 +7,13 @@ import org.eclipse.emf.ecore.EPackage;
 
 import org.eclipse.emf.ecore.util.Switch;
 
+import tools.descartes.dni.dnimm3.ConstantDoubleVariable;
+import tools.descartes.dni.dnimm3.ConstantLongVariable;
+import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.ITypedEntity;
 import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.NamedElement;
+import tools.descartes.dni.dnimm3.Variable;
 
 import tools.descartes.dni.dnimm3ap.*;
 
@@ -206,14 +210,6 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case DNIAPPackage.ADAPTABLE_DEPENDENCY: {
-				AdaptableDependency adaptableDependency = (AdaptableDependency)theEObject;
-				T1 result = caseAdaptableDependency(adaptableDependency);
-				if (result == null) result = caseICostable(adaptableDependency);
-				if (result == null) result = caseIdentifier(adaptableDependency);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case DNIAPPackage.ALTERNATIVE_VARIABLE: {
 				AlternativeVariable alternativeVariable = (AlternativeVariable)theEObject;
 				T1 result = caseAlternativeVariable(alternativeVariable);
@@ -227,14 +223,52 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY: {
+				AdaptableDependency adaptableDependency = (AdaptableDependency)theEObject;
+				T1 result = caseAdaptableDependency(adaptableDependency);
+				if (result == null) result = caseDependency(adaptableDependency);
+				if (result == null) result = caseICostable(adaptableDependency);
+				if (result == null) result = caseIdentifier(adaptableDependency);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case DNIAPPackage.ADAPTABLE_VARIABLE: {
 				AdaptableVariable adaptableVariable = (AdaptableVariable)theEObject;
 				T1 result = caseAdaptableVariable(adaptableVariable);
+				if (result == null) result = caseVariable(adaptableVariable);
+				if (result == null) result = caseAdaptableDependency(adaptableVariable);
+				if (result == null) result = caseDependency(adaptableVariable);
 				if (result == null) result = caseICostable(adaptableVariable);
 				if (result == null) result = caseIdentifier(adaptableVariable);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case DNIAPPackage.ADAPTABLE_CONSTANT_LONG_VARIABLE: {
+				AdaptableConstantLongVariable adaptableConstantLongVariable = (AdaptableConstantLongVariable)theEObject;
+				T1 result = caseAdaptableConstantLongVariable(adaptableConstantLongVariable);
+				if (result == null) result = caseConstantLongVariable(adaptableConstantLongVariable);
+				if (result == null) result = caseAdaptableVariable(adaptableConstantLongVariable);
+				if (result == null) result = caseVariable(adaptableConstantLongVariable);
+				if (result == null) result = caseAdaptableDependency(adaptableConstantLongVariable);
+				if (result == null) result = caseDependency(adaptableConstantLongVariable);
+				if (result == null) result = caseICostable(adaptableConstantLongVariable);
+				if (result == null) result = caseIdentifier(adaptableConstantLongVariable);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DNIAPPackage.ADAPTABLE_CONSTANT_DOUBLE_VARIABLE: {
+				AdaptableConstantDoubleVariable adaptableConstantDoubleVariable = (AdaptableConstantDoubleVariable)theEObject;
+				T1 result = caseAdaptableConstantDoubleVariable(adaptableConstantDoubleVariable);
+				if (result == null) result = caseConstantDoubleVariable(adaptableConstantDoubleVariable);
+				if (result == null) result = caseAdaptableVariable(adaptableConstantDoubleVariable);
+				if (result == null) result = caseVariable(adaptableConstantDoubleVariable);
+				if (result == null) result = caseAdaptableDependency(adaptableConstantDoubleVariable);
+				if (result == null) result = caseDependency(adaptableConstantDoubleVariable);
+				if (result == null) result = caseICostable(adaptableConstantDoubleVariable);
+				if (result == null) result = caseIdentifier(adaptableConstantDoubleVariable);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case DNIAPPackage.ICOSTABLE: {
 				ICostable iCostable = (ICostable)theEObject;
 				T1 result = caseICostable(iCostable);
@@ -549,47 +583,47 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Adaptable Dependency</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Alternative Variable</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>Adaptable Dependency</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Alternative Variable</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T1 caseAdaptableDependency(AdaptableDependency object) {
+	public T1 caseAlternativeVariable(AlternativeVariable object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Alternative Variable</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Alternative Variable Set</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>Alternative Variable</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Alternative Variable Set</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T1 caseAlternativeVariable(AlternativeVariable object) {
+	public T1 caseAlternativeVariableSet(AlternativeVariableSet object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Alternative Variable Set</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptable Dependency</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>Alternative Variable Set</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptable Dependency</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T1 caseAlternativeVariableSet(AlternativeVariableSet object) {
+	public T1 caseAdaptableDependency(AdaptableDependency object) {
 		return null;
 	}
 
@@ -608,6 +642,36 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptable Constant Long Variable</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>Adaptable Constant Long Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseAdaptableConstantLongVariable(AdaptableConstantLongVariable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptable Constant Double Variable</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>Adaptable Constant Double Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseAdaptableConstantDoubleVariable(AdaptableConstantDoubleVariable object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>ICostable</em>'.
 	 * <!-- begin-user-doc -->
@@ -728,6 +792,66 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dependency</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>Dependency</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDependency(Dependency object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Variable</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>Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseVariable(Variable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Constant Long Variable</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>Constant Long Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseConstantLongVariable(ConstantLongVariable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Constant Double Variable</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>Constant Double Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseConstantDoubleVariable(ConstantDoubleVariable object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/META-INF/MANIFEST.MF b/tools.descartes.dni.core/META-INF/MANIFEST.MF
index d104b205..c55d481f 100644
--- a/tools.descartes.dni.core/META-INF/MANIFEST.MF
+++ b/tools.descartes.dni.core/META-INF/MANIFEST.MF
@@ -10,6 +10,7 @@ Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: tools.descartes.dni.dnimm3,
  tools.descartes.dni.dnimm3.impl,
+ tools.descartes.dni.dnimm3.presentation,
  tools.descartes.dni.dnimm3.provider,
  tools.descartes.dni.dnimm3.util
 Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
-- 
GitLab