diff --git a/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore b/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore
index 203e73e91791316a2d176c9dd427010076201400..68fa2fb074f7ff0203912969468a29834206c797 100644
--- a/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore
+++ b/tools.descartes.dni.adaptation/model/DNIMM3AP.xcore
@@ -1,13 +1,14 @@
 @Ecore(nsURI="http://descartes.tools/dni-adaptation-metamodel-3.1")
 @GenModel(modelDirectory="/tools.descartes.dni.adaptation/src", editDirectory="/tools.descartes.dni.adaptation/src",
-	editorDirectory="/tools.descartes.dni.adaptation/src", fileExtensions="dniap", prefix="DNIAP", suppressEMFTypes="true")
+	editorDirectory="/tools.descartes.dni.adaptation/src", fileExtensions="dniap", prefix="DNIAP",
+	suppressEMFTypes="true")
 package tools.descartes.dni.dnimm3ap
 
 //
 // Adaptation Root
 //
 class AdaptationPoints {
-	contains AdaptationRepositories repositories
+	contains AdaptationRepository repositories
 	contains AdaptationGroups groups
 	refers tools.descartes.dni.dnimm3.NetworkInfrastructure networkInfrastructure
 }
@@ -15,7 +16,7 @@ class AdaptationPoints {
 //
 // Entity Adaptations
 //
-class AdaptationRepositories {
+class AdaptationRepository {
 	contains AdaptableNode[] nodes
 	contains AdaptableEndPerformance[] endPerformances
 	contains AdaptableIntermediatePerformance[] intermediatePerformances
@@ -26,7 +27,7 @@ class AdaptationRepositories {
 	contains AdaptableLinkPerformance[] linkPerformances
 }
 
-interface IAdaptableEntity<T extends tools.descartes.dni.dnimm3.ITypedEntity> {
+interface IAdaptableEntity<T extends tools.descartes.dni.dnimm3.ITypedEntity> extends ICostable {
 	refers T entityType
 }
 
@@ -92,9 +93,9 @@ class AdaptableIntermediatePerformance extends IAdaptableEntity<tools.descartes.
 			return "Unspecified entity type";
 		}
 	}
-	contains AlternativeVariable forwardingLatency
-	contains AlternativeVariable switchingCapacityPPS
-	contains AlternativeVariable forwardingBandwidthBPS
+	contains AlternativeDependency forwardingLatency
+	contains AlternativeDependency forwardingBandwidthBPS
+	contains AlternativeDependency switchingCapacityPPS
 }
 
 class AdaptableSdnNodePerformance extends IAdaptableEntity<tools.descartes.dni.dnimm3.SdnNodePerformanceType> {
@@ -154,18 +155,48 @@ class LinkAdaptationGroup extends IAdaptationGroup {
 //
 // Parameter Adaptations
 //
-interface AlternativeParameterSet<P> {
-	contains P[] alternative
+interface AlternativeDependency {
 }
 
-abstract class AlternativeVariable {
+class AlternativeDependencySet extends AlternativeDependency {
+	contains AdaptableDependency[] alternative
 }
 
-class AlternativeVariableSet extends AlternativeVariable, AlternativeParameterSet<tools.descartes.dni.dnimm3.Variable> {
+class AdaptableDependency extends ICostable {
+	contains tools.descartes.dni.dnimm3.Dependency[1] parameter
 }
 
-abstract class AlternativeConstantLong {
+interface AlternativeVariable {
 }
 
-class AlternativeConstantLongVariableSet extends AlternativeConstantLong, AlternativeParameterSet<tools.descartes.dni.dnimm3.ConstantLongVariable> {
+class AlternativeVariableSet extends AlternativeVariable {
+	contains AdaptableVariable[] alternative
 }
+
+class AdaptableVariable extends ICostable {
+	contains tools.descartes.dni.dnimm3.Variable[1] parameter
+}
+
+//
+// Costs
+//
+interface ICostable {
+	contains Cost[] cost
+}
+
+abstract class Cost {
+	contains ICostFunction[1] costFunction
+}
+
+class Investment extends Cost {
+}
+
+class HandlingTime extends Cost {
+}
+
+interface ICostFunction {
+}
+
+class FixedCostFunction extends ICostFunction {
+	double value
+}
\ No newline at end of file
diff --git a/tools.descartes.dni.adaptation/plugin.properties b/tools.descartes.dni.adaptation/plugin.properties
index 40643c00abce1adae225ec1772d1a4c7da1207a7..89334687dc3b6054256af0d83647a4d94bee3859 100644
--- a/tools.descartes.dni.adaptation/plugin.properties
+++ b/tools.descartes.dni.adaptation/plugin.properties
@@ -399,3 +399,32 @@ _UI_AdaptationRepositories_linkPerformances_feature = Link Performances
 _UI_AdaptationGroups_nodes_feature = Nodes
 _UI_AdaptationGroups_links_feature = Links
 _UI_AdaptationPoints_networkInfrastructure_feature = Network Infrastructure
+_UI_AlternativeDependency_type = Alternative Dependency
+_UI_AlternativeDependencySet_type = Alternative Dependency Set
+_UI_AdaptableParameter_type = Adaptable Parameter
+_UI_ICostable_type = ICostable
+_UI_Cost_type = Cost
+_UI_Investment_type = Investment
+_UI_HandlingTime_type = Handling Time
+_UI_ICostFunction_type = ICost Function
+_UI_FixedCostFunction_type = Fixed Cost Function
+_UI_AdaptableParameter_parameter_feature = Parameter
+_UI_ICostable_cost_feature = Cost
+_UI_Cost_costFunction_feature = Cost Function
+_UI_FixedCostFunction_value_feature = Value
+_UI_AdaptationRepository_type = Adaptation Repository
+_UI_AdaptationRepository_nodes_feature = Nodes
+_UI_AdaptationRepository_endPerformances_feature = End Performances
+_UI_AdaptationRepository_intermediatePerformances_feature = Intermediate Performances
+_UI_AdaptationRepository_sdnNodePerformances_feature = Sdn Node Performances
+_UI_AdaptationRepository_networkInterfaces_feature = Network Interfaces
+_UI_AdaptationRepository_networkInterfacePerformances_feature = Network Interface Performances
+_UI_AdaptationRepository_links_feature = Links
+_UI_AdaptationRepository_linkPerformances_feature = Link Performances
+_UI_AdaptableDependency_type = Adaptable Dependency
+_UI_AdaptableVariable_type = Adaptable Variable
+_UI_AlternativeDependencySet_alternative_feature = Alternative
+_UI_AdaptableDependency_dependency_feature = Dependency
+_UI_AdaptableVariable_parameter_feature = Parameter
+_UI_AdaptableDependency_parameter_feature = Parameter
+_UI_AlternativeVariableSet_alternative_feature = Alternative
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
new file mode 100644
index 0000000000000000000000000000000000000000..c78ea0f0d50cba789bf2af64f03c0def32773206
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableDependency.java
@@ -0,0 +1,50 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+import tools.descartes.dni.dnimm3.Dependency;
+
+/**
+ * <!-- begin-user-doc -->
+ * 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
+ * @generated
+ */
+public interface AdaptableDependency extends ICostable {
+	/**
+	 * 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);
+
+} // AdaptableDependency
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableIntermediatePerformance.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableIntermediatePerformance.java
index 29741b31b123b161c7189d559d3c175341d4fc59..4f9869d5bcf6aaeec6020ceabaebf4306b4a2962 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableIntermediatePerformance.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableIntermediatePerformance.java
@@ -15,8 +15,8 @@ import tools.descartes.dni.dnimm3.IntermediatePerformanceType;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingLatency <em>Forwarding Latency</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingBandwidthBPS <em>Forwarding Bandwidth BPS</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}</li>
  * </ul>
  *
  * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableIntermediatePerformance()
@@ -49,12 +49,12 @@ public interface AdaptableIntermediatePerformance extends IAdaptableEntity<Inter
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Forwarding Latency</em>' containment reference.
-	 * @see #setForwardingLatency(AlternativeVariable)
+	 * @see #setForwardingLatency(AlternativeDependency)
 	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableIntermediatePerformance_ForwardingLatency()
 	 * @model containment="true"
 	 * @generated
 	 */
-	AlternativeVariable getForwardingLatency();
+	AlternativeDependency getForwardingLatency();
 
 	/**
 	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingLatency <em>Forwarding Latency</em>}' containment reference.
@@ -64,58 +64,58 @@ public interface AdaptableIntermediatePerformance extends IAdaptableEntity<Inter
 	 * @see #getForwardingLatency()
 	 * @generated
 	 */
-	void setForwardingLatency(AlternativeVariable value);
+	void setForwardingLatency(AlternativeDependency value);
 
 	/**
-	 * Returns the value of the '<em><b>Switching Capacity PPS</b></em>' containment reference.
+	 * Returns the value of the '<em><b>Forwarding Bandwidth BPS</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Switching Capacity PPS</em>' containment reference isn't clear,
+	 * If the meaning of the '<em>Forwarding Bandwidth BPS</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>Switching Capacity PPS</em>' containment reference.
-	 * @see #setSwitchingCapacityPPS(AlternativeVariable)
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableIntermediatePerformance_SwitchingCapacityPPS()
+	 * @return the value of the '<em>Forwarding Bandwidth BPS</em>' containment reference.
+	 * @see #setForwardingBandwidthBPS(AlternativeDependency)
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableIntermediatePerformance_ForwardingBandwidthBPS()
 	 * @model containment="true"
 	 * @generated
 	 */
-	AlternativeVariable getSwitchingCapacityPPS();
+	AlternativeDependency getForwardingBandwidthBPS();
 
 	/**
-	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}' containment reference.
+	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingBandwidthBPS <em>Forwarding Bandwidth BPS</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Switching Capacity PPS</em>' containment reference.
-	 * @see #getSwitchingCapacityPPS()
+	 * @param value the new value of the '<em>Forwarding Bandwidth BPS</em>' containment reference.
+	 * @see #getForwardingBandwidthBPS()
 	 * @generated
 	 */
-	void setSwitchingCapacityPPS(AlternativeVariable value);
+	void setForwardingBandwidthBPS(AlternativeDependency value);
 
 	/**
-	 * Returns the value of the '<em><b>Forwarding Bandwidth BPS</b></em>' containment reference.
+	 * Returns the value of the '<em><b>Switching Capacity PPS</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Forwarding Bandwidth BPS</em>' containment reference isn't clear,
+	 * If the meaning of the '<em>Switching Capacity PPS</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>Forwarding Bandwidth BPS</em>' containment reference.
-	 * @see #setForwardingBandwidthBPS(AlternativeVariable)
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableIntermediatePerformance_ForwardingBandwidthBPS()
+	 * @return the value of the '<em>Switching Capacity PPS</em>' containment reference.
+	 * @see #setSwitchingCapacityPPS(AlternativeDependency)
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptableIntermediatePerformance_SwitchingCapacityPPS()
 	 * @model containment="true"
 	 * @generated
 	 */
-	AlternativeVariable getForwardingBandwidthBPS();
+	AlternativeDependency getSwitchingCapacityPPS();
 
 	/**
-	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingBandwidthBPS <em>Forwarding Bandwidth BPS</em>}' containment reference.
+	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Forwarding Bandwidth BPS</em>' containment reference.
-	 * @see #getForwardingBandwidthBPS()
+	 * @param value the new value of the '<em>Switching Capacity PPS</em>' containment reference.
+	 * @see #getSwitchingCapacityPPS()
 	 * @generated
 	 */
-	void setForwardingBandwidthBPS(AlternativeVariable value);
+	void setSwitchingCapacityPPS(AlternativeDependency value);
 
 } // AdaptableIntermediatePerformance
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableLink.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableLink.java
index 1da2d830de02183cbd3bbdbb47aa70516759a965..b875a263bc299ba255885738b068bd3b0e4f8848 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableLink.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableLink.java
@@ -3,6 +3,7 @@
 package tools.descartes.dni.dnimm3ap;
 
 import java.util.List;
+
 import tools.descartes.dni.dnimm3.LinkType;
 
 /**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNetworkInterface.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNetworkInterface.java
index b4a1b7c51939fd9ec39ca94b0a76971e7d07d98c..d25f7dc99bdc8cff3e791d2993d3c2513d8c5605 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNetworkInterface.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNetworkInterface.java
@@ -3,6 +3,7 @@
 package tools.descartes.dni.dnimm3ap;
 
 import java.util.List;
+
 import tools.descartes.dni.dnimm3.NetworkInterfaceType;
 
 /**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNode.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNode.java
index 6db9674719c7e2f79b1e5c26a7e6d0b2cb7d12c9..2517e36edb90b9ae8a8f1fd6d51b47ed12cdb8d2 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNode.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableNode.java
@@ -3,6 +3,7 @@
 package tools.descartes.dni.dnimm3ap;
 
 import java.util.List;
+
 import tools.descartes.dni.dnimm3.NodeType;
 
 /**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableSdnNodePerformance.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableSdnNodePerformance.java
index 485f07f346a1f83685478c6942f68f1efd71b942..8fac6ba64b0cb9af8c8e8125f5d22cd749187774 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableSdnNodePerformance.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableSdnNodePerformance.java
@@ -3,6 +3,7 @@
 package tools.descartes.dni.dnimm3ap;
 
 import java.util.List;
+
 import tools.descartes.dni.dnimm3.SdnNodePerformanceType;
 
 /**
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
new file mode 100644
index 0000000000000000000000000000000000000000..222be734fea2512585fdd87b7953cdbd9d90be85
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptableVariable.java
@@ -0,0 +1,50 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+import tools.descartes.dni.dnimm3.Variable;
+
+/**
+ * <!-- begin-user-doc -->
+ * 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
+ * @generated
+ */
+public interface AdaptableVariable extends ICostable {
+	/**
+	 * 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);
+
+} // AdaptableVariable
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationGroups.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationGroups.java
index a47f18fe93286536f6a7499ca52b476a9736eefd..7c170f871f5c4f1841aaba088c04780432c1225d 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationGroups.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationGroups.java
@@ -3,6 +3,7 @@
 package tools.descartes.dni.dnimm3ap;
 
 import java.util.List;
+
 import org.eclipse.emf.ecore.EObject;
 
 /**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationPoints.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationPoints.java
index 80659cc6175faf17451bdda486466f83da7b16f2..df354dc7c606d32de8cd6d3cdc1ad8e5b1175a8f 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationPoints.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationPoints.java
@@ -3,6 +3,7 @@
 package tools.descartes.dni.dnimm3ap;
 
 import org.eclipse.emf.ecore.EObject;
+
 import tools.descartes.dni.dnimm3.NetworkInfrastructure;
 
 /**
@@ -33,12 +34,12 @@ public interface AdaptationPoints extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Repositories</em>' containment reference.
-	 * @see #setRepositories(AdaptationRepositories)
+	 * @see #setRepositories(AdaptationRepository)
 	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationPoints_Repositories()
 	 * @model containment="true"
 	 * @generated
 	 */
-	AdaptationRepositories getRepositories();
+	AdaptationRepository getRepositories();
 
 	/**
 	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.AdaptationPoints#getRepositories <em>Repositories</em>}' containment reference.
@@ -48,13 +49,13 @@ public interface AdaptationPoints extends EObject {
 	 * @see #getRepositories()
 	 * @generated
 	 */
-	void setRepositories(AdaptationRepositories value);
+	void setRepositories(AdaptationRepository value);
 
 	/**
 	 * Returns the value of the '<em><b>Groups</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Groups</em>' containment reference list isn't clear,
+	 * If the meaning of the '<em>Groups</em>' containment reference isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationRepositories.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationRepository.java
similarity index 88%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationRepositories.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationRepository.java
index 0edbded9b0ef7e511e51aa9f766630b887df089c..2fc52edb4ee4bedfe6ec1fd240df716581b27660 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationRepositories.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AdaptationRepository.java
@@ -3,32 +3,33 @@
 package tools.descartes.dni.dnimm3ap;
 
 import java.util.List;
+
 import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Adaptation Repositories</b></em>'.
+ * A representation of the model object '<em><b>Adaptation Repository</b></em>'.
  * <!-- end-user-doc -->
  *
  * <p>
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNodes <em>Nodes</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getEndPerformances <em>End Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getIntermediatePerformances <em>Intermediate Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getSdnNodePerformances <em>Sdn Node Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNetworkInterfaces <em>Network Interfaces</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNetworkInterfacePerformances <em>Network Interface Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getLinks <em>Links</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getLinkPerformances <em>Link Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getNodes <em>Nodes</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getEndPerformances <em>End Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getIntermediatePerformances <em>Intermediate Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getSdnNodePerformances <em>Sdn Node Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getNetworkInterfaces <em>Network Interfaces</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getNetworkInterfacePerformances <em>Network Interface Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getLinks <em>Links</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getLinkPerformances <em>Link Performances</em>}</li>
  * </ul>
  *
- * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories()
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository()
  * @model
  * @generated
  */
-public interface AdaptationRepositories extends EObject {
+public interface AdaptationRepository extends EObject {
 	/**
 	 * Returns the value of the '<em><b>Nodes</b></em>' containment reference list.
 	 * The list contents are of type {@link tools.descartes.dni.dnimm3ap.AdaptableNode}.
@@ -39,7 +40,7 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Nodes</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_Nodes()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_Nodes()
 	 * @model containment="true"
 	 * @generated
 	 */
@@ -55,7 +56,7 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>End Performances</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_EndPerformances()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_EndPerformances()
 	 * @model containment="true"
 	 * @generated
 	 */
@@ -71,7 +72,7 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Intermediate Performances</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_IntermediatePerformances()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_IntermediatePerformances()
 	 * @model containment="true"
 	 * @generated
 	 */
@@ -87,7 +88,7 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Sdn Node Performances</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_SdnNodePerformances()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_SdnNodePerformances()
 	 * @model containment="true"
 	 * @generated
 	 */
@@ -103,7 +104,7 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Network Interfaces</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_NetworkInterfaces()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_NetworkInterfaces()
 	 * @model containment="true"
 	 * @generated
 	 */
@@ -119,7 +120,7 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Network Interface Performances</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_NetworkInterfacePerformances()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_NetworkInterfacePerformances()
 	 * @model containment="true"
 	 * @generated
 	 */
@@ -135,7 +136,7 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Links</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_Links()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_Links()
 	 * @model containment="true"
 	 * @generated
 	 */
@@ -151,10 +152,10 @@ public interface AdaptationRepositories extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Link Performances</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepositories_LinkPerformances()
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAdaptationRepository_LinkPerformances()
 	 * @model containment="true"
 	 * @generated
 	 */
 	List<AdaptableLinkPerformance> getLinkPerformances();
 
-} // AdaptationRepositories
+} // AdaptationRepository
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeConstantLongVariableSet.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeConstantLongVariableSet.java
deleted file mode 100644
index 4db30d2ec767a3f0b0c3605ee8569f7ebb36fe0c..0000000000000000000000000000000000000000
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeConstantLongVariableSet.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- */
-package tools.descartes.dni.dnimm3ap;
-
-import tools.descartes.dni.dnimm3.ConstantLongVariable;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Alternative Constant Long Variable Set</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeConstantLongVariableSet()
- * @model
- * @generated
- */
-public interface AlternativeConstantLongVariableSet extends AlternativeConstantLong, AlternativeParameterSet<ConstantLongVariable> {
-} // AlternativeConstantLongVariableSet
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeConstantLong.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeDependency.java
similarity index 50%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeConstantLong.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeDependency.java
index 869f9c2e732e698f97b890ca717e70d22bb6cbc5..e491ddf997478424a6aac7720fb35bb9cbf4213d 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeConstantLong.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeDependency.java
@@ -6,13 +6,13 @@ import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Alternative Constant Long</b></em>'.
+ * A representation of the model object '<em><b>Alternative Dependency</b></em>'.
  * <!-- end-user-doc -->
  *
  *
- * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeConstantLong()
- * @model abstract="true"
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeDependency()
+ * @model interface="true" abstract="true"
  * @generated
  */
-public interface AlternativeConstantLong extends EObject {
-} // AlternativeConstantLong
+public interface AlternativeDependency extends EObject {
+} // AlternativeDependency
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeParameterSet.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeDependencySet.java
similarity index 59%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeParameterSet.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeDependencySet.java
index 20ae3940f86747c8f2edab047416ec53adb2214c..13fae426a89aa9986e01245202251ec7f07dda1d 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeParameterSet.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeDependencySet.java
@@ -3,27 +3,27 @@
 package tools.descartes.dni.dnimm3ap;
 
 import java.util.List;
-import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Alternative Parameter Set</b></em>'.
+ * A representation of the model object '<em><b>Alternative Dependency Set</b></em>'.
  * <!-- end-user-doc -->
  *
  * <p>
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.AlternativeParameterSet#getAlternative <em>Alternative</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AlternativeDependencySet#getAlternative <em>Alternative</em>}</li>
  * </ul>
  *
- * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeParameterSet()
- * @model interface="true" abstract="true"
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeDependencySet()
+ * @model
  * @generated
  */
-public interface AlternativeParameterSet<P> extends EObject {
+public interface AlternativeDependencySet extends AlternativeDependency {
 	/**
 	 * Returns the value of the '<em><b>Alternative</b></em>' containment reference list.
+	 * The list contents are of type {@link tools.descartes.dni.dnimm3ap.AdaptableDependency}.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Alternative</em>' containment reference list isn't clear,
@@ -31,10 +31,10 @@ public interface AlternativeParameterSet<P> extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Alternative</em>' containment reference list.
-	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeParameterSet_Alternative()
-	 * @model kind="reference" containment="true"
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeDependencySet_Alternative()
+	 * @model containment="true"
 	 * @generated
 	 */
-	List<P> getAlternative();
+	List<AdaptableDependency> getAlternative();
 
-} // AlternativeParameterSet
+} // AlternativeDependencySet
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariable.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariable.java
index 6592eb3d1ee537afddfb5a047968ea92f034d4ba..7e8f38ce20ece562a7c6235fe99a270503966487 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariable.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariable.java
@@ -11,7 +11,7 @@ import org.eclipse.emf.ecore.EObject;
  *
  *
  * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeVariable()
- * @model abstract="true"
+ * @model interface="true" abstract="true"
  * @generated
  */
 public interface AlternativeVariable extends EObject {
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariableSet.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariableSet.java
index 8e509b25ff189de8611221acff002b3d0b03254c..bd6953fc5a4f91c0254527e6e202a97aa2d9259a 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariableSet.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/AlternativeVariableSet.java
@@ -2,17 +2,39 @@
  */
 package tools.descartes.dni.dnimm3ap;
 
-import tools.descartes.dni.dnimm3.Variable;
+import java.util.List;
 
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Alternative Variable Set</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet#getAlternative <em>Alternative</em>}</li>
+ * </ul>
  *
  * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeVariableSet()
  * @model
  * @generated
  */
-public interface AlternativeVariableSet extends AlternativeVariable, AlternativeParameterSet<Variable> {
+public interface AlternativeVariableSet extends AlternativeVariable {
+	/**
+	 * Returns the value of the '<em><b>Alternative</b></em>' containment reference list.
+	 * The list contents are of type {@link tools.descartes.dni.dnimm3ap.AdaptableVariable}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Alternative</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Alternative</em>' containment reference list.
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getAlternativeVariableSet_Alternative()
+	 * @model containment="true"
+	 * @generated
+	 */
+	List<AdaptableVariable> getAlternative();
+
 } // AlternativeVariableSet
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/Cost.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/Cost.java
new file mode 100644
index 0000000000000000000000000000000000000000..1cc0f103d2d6efcaec92163f05bb307e7270de57
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/Cost.java
@@ -0,0 +1,50 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cost</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.Cost#getCostFunction <em>Cost Function</em>}</li>
+ * </ul>
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getCost()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Cost extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Cost Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cost Function</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>Cost Function</em>' containment reference.
+	 * @see #setCostFunction(ICostFunction)
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getCost_CostFunction()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	ICostFunction getCostFunction();
+
+	/**
+	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.Cost#getCostFunction <em>Cost Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cost Function</em>' containment reference.
+	 * @see #getCostFunction()
+	 * @generated
+	 */
+	void setCostFunction(ICostFunction value);
+
+} // Cost
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 69b6f211b4fcd3be78d8852936b1f0fc4c92bdcd..5ebdb13f341f26e4fd3ea91d296305e3bd35a93d 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
@@ -31,13 +31,13 @@ public interface DNIAPFactory extends EFactory {
 	AdaptationPoints createAdaptationPoints();
 
 	/**
-	 * Returns a new object of class '<em>Adaptation Repositories</em>'.
+	 * Returns a new object of class '<em>Adaptation Repository</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Adaptation Repositories</em>'.
+	 * @return a new object of class '<em>Adaptation Repository</em>'.
 	 * @generated
 	 */
-	AdaptationRepositories createAdaptationRepositories();
+	AdaptationRepository createAdaptationRepository();
 
 	/**
 	 * Returns a new object of class '<em>Adaptable Node</em>'.
@@ -138,6 +138,24 @@ public interface DNIAPFactory extends EFactory {
 	 */
 	LinkAdaptationGroup createLinkAdaptationGroup();
 
+	/**
+	 * Returns a new object of class '<em>Alternative Dependency Set</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Alternative Dependency Set</em>'.
+	 * @generated
+	 */
+	AlternativeDependencySet createAlternativeDependencySet();
+
+	/**
+	 * Returns a new object of class '<em>Adaptable Dependency</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptable Dependency</em>'.
+	 * @generated
+	 */
+	AdaptableDependency createAdaptableDependency();
+
 	/**
 	 * Returns a new object of class '<em>Alternative Variable Set</em>'.
 	 * <!-- begin-user-doc -->
@@ -148,13 +166,40 @@ public interface DNIAPFactory extends EFactory {
 	AlternativeVariableSet createAlternativeVariableSet();
 
 	/**
-	 * Returns a new object of class '<em>Alternative Constant Long Variable Set</em>'.
+	 * Returns a new object of class '<em>Adaptable Variable</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptable Variable</em>'.
+	 * @generated
+	 */
+	AdaptableVariable createAdaptableVariable();
+
+	/**
+	 * Returns a new object of class '<em>Investment</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Investment</em>'.
+	 * @generated
+	 */
+	Investment createInvestment();
+
+	/**
+	 * Returns a new object of class '<em>Handling Time</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Handling Time</em>'.
+	 * @generated
+	 */
+	HandlingTime createHandlingTime();
+
+	/**
+	 * Returns a new object of class '<em>Fixed Cost Function</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Alternative Constant Long Variable Set</em>'.
+	 * @return a new object of class '<em>Fixed Cost Function</em>'.
 	 * @generated
 	 */
-	AlternativeConstantLongVariableSet createAlternativeConstantLongVariableSet();
+	FixedCostFunction createFixedCostFunction();
 
 	/**
 	 * Returns the package supported by this factory.
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 5eee04776eeed549d8a8b516ad62e4c67bdd462f..3c088a27322660142291e4eaa90f3f5230320ec0 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
@@ -115,14 +115,14 @@ public interface DNIAPPackage extends EPackage {
 	int ADAPTATION_POINTS_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl <em>Adaptation Repositories</em>}' class.
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl <em>Adaptation Repository</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl
-	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptationRepository()
 	 * @generated
 	 */
-	int ADAPTATION_REPOSITORIES = 1;
+	int ADAPTATION_REPOSITORY = 1;
 
 	/**
 	 * The feature id for the '<em><b>Nodes</b></em>' containment reference list.
@@ -131,7 +131,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__NODES = 0;
+	int ADAPTATION_REPOSITORY__NODES = 0;
 
 	/**
 	 * The feature id for the '<em><b>End Performances</b></em>' containment reference list.
@@ -140,7 +140,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__END_PERFORMANCES = 1;
+	int ADAPTATION_REPOSITORY__END_PERFORMANCES = 1;
 
 	/**
 	 * The feature id for the '<em><b>Intermediate Performances</b></em>' containment reference list.
@@ -149,7 +149,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES = 2;
+	int ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES = 2;
 
 	/**
 	 * The feature id for the '<em><b>Sdn Node Performances</b></em>' containment reference list.
@@ -158,7 +158,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES = 3;
+	int ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES = 3;
 
 	/**
 	 * The feature id for the '<em><b>Network Interfaces</b></em>' containment reference list.
@@ -167,7 +167,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__NETWORK_INTERFACES = 4;
+	int ADAPTATION_REPOSITORY__NETWORK_INTERFACES = 4;
 
 	/**
 	 * The feature id for the '<em><b>Network Interface Performances</b></em>' containment reference list.
@@ -176,7 +176,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES = 5;
+	int ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES = 5;
 
 	/**
 	 * The feature id for the '<em><b>Links</b></em>' containment reference list.
@@ -185,7 +185,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__LINKS = 6;
+	int ADAPTATION_REPOSITORY__LINKS = 6;
 
 	/**
 	 * The feature id for the '<em><b>Link Performances</b></em>' containment reference list.
@@ -194,25 +194,62 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES__LINK_PERFORMANCES = 7;
+	int ADAPTATION_REPOSITORY__LINK_PERFORMANCES = 7;
 
 	/**
-	 * The number of structural features of the '<em>Adaptation Repositories</em>' class.
+	 * The number of structural features of the '<em>Adaptation Repository</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES_FEATURE_COUNT = 8;
+	int ADAPTATION_REPOSITORY_FEATURE_COUNT = 8;
 
 	/**
-	 * The number of operations of the '<em>Adaptation Repositories</em>' class.
+	 * The number of operations of the '<em>Adaptation Repository</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTATION_REPOSITORIES_OPERATION_COUNT = 0;
+	int ADAPTATION_REPOSITORY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.ICostable <em>ICostable</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.ICostable
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getICostable()
+	 * @generated
+	 */
+	int ICOSTABLE = 22;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ICOSTABLE__COST = 0;
+
+	/**
+	 * The number of structural features of the '<em>ICostable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ICOSTABLE_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>ICostable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ICOSTABLE_OPERATION_COUNT = 0;
 
 	/**
 	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.IAdaptableEntity <em>IAdaptable Entity</em>}' class.
@@ -224,6 +261,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int IADAPTABLE_ENTITY = 2;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IADAPTABLE_ENTITY__COST = ICOSTABLE__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -231,7 +277,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int IADAPTABLE_ENTITY__ENTITY_TYPE = 0;
+	int IADAPTABLE_ENTITY__ENTITY_TYPE = ICOSTABLE_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>IAdaptable Entity</em>' class.
@@ -240,7 +286,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int IADAPTABLE_ENTITY_FEATURE_COUNT = 1;
+	int IADAPTABLE_ENTITY_FEATURE_COUNT = ICOSTABLE_FEATURE_COUNT + 1;
 
 	/**
 	 * The number of operations of the '<em>IAdaptable Entity</em>' class.
@@ -249,7 +295,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int IADAPTABLE_ENTITY_OPERATION_COUNT = 0;
+	int IADAPTABLE_ENTITY_OPERATION_COUNT = ICOSTABLE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.IAdaptableGroupableEntity <em>IAdaptable Groupable Entity</em>}' class.
@@ -289,6 +335,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_NODE = 4;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_NODE__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -380,6 +435,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_LINK = 5;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_LINK__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -453,6 +517,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_LINK_PERFORMANCE = 6;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_LINK_PERFORMANCE__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -517,6 +590,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_END_PERFORMANCE = 7;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_END_PERFORMANCE__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -572,6 +654,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_INTERMEDIATE_PERFORMANCE = 8;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -600,22 +691,22 @@ public interface DNIAPPackage extends EPackage {
 	int ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY = IADAPTABLE_ENTITY_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Switching Capacity PPS</b></em>' containment reference.
+	 * The feature id for the '<em><b>Forwarding Bandwidth BPS</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS = IADAPTABLE_ENTITY_FEATURE_COUNT + 2;
+	int ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS = IADAPTABLE_ENTITY_FEATURE_COUNT + 2;
 
 	/**
-	 * The feature id for the '<em><b>Forwarding Bandwidth BPS</b></em>' containment reference.
+	 * The feature id for the '<em><b>Switching Capacity PPS</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS = IADAPTABLE_ENTITY_FEATURE_COUNT + 3;
+	int ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS = IADAPTABLE_ENTITY_FEATURE_COUNT + 3;
 
 	/**
 	 * The number of structural features of the '<em>Adaptable Intermediate Performance</em>' class.
@@ -645,6 +736,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_SDN_NODE_PERFORMANCE = 9;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_SDN_NODE_PERFORMANCE__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -709,6 +809,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_NETWORK_INTERFACE = 10;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_NETWORK_INTERFACE__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -764,6 +873,15 @@ public interface DNIAPPackage extends EPackage {
 	 */
 	int ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE = 11;
 
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST = IADAPTABLE_ENTITY__COST;
+
 	/**
 	 * The feature id for the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -1075,14 +1193,42 @@ public interface DNIAPPackage extends EPackage {
 	int LINK_ADAPTATION_GROUP_OPERATION_COUNT = IADAPTATION_GROUP_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.AlternativeParameterSet <em>Alternative Parameter Set</em>}' class.
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.AlternativeDependency <em>Alternative Dependency</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeDependency
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeDependency()
+	 * @generated
+	 */
+	int ALTERNATIVE_DEPENDENCY = 16;
+
+	/**
+	 * The number of structural features of the '<em>Alternative Dependency</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_DEPENDENCY_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Alternative Dependency</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_DEPENDENCY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeDependencySetImpl <em>Alternative Dependency Set</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.AlternativeParameterSet
-	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeParameterSet()
+	 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeDependencySetImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeDependencySet()
 	 * @generated
 	 */
-	int ALTERNATIVE_PARAMETER_SET = 16;
+	int ALTERNATIVE_DEPENDENCY_SET = 17;
 
 	/**
 	 * The feature id for the '<em><b>Alternative</b></em>' containment reference list.
@@ -1091,35 +1237,81 @@ public interface DNIAPPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_PARAMETER_SET__ALTERNATIVE = 0;
+	int ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE = ALTERNATIVE_DEPENDENCY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Alternative Dependency Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALTERNATIVE_DEPENDENCY_SET_FEATURE_COUNT = ALTERNATIVE_DEPENDENCY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Alternative Dependency Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	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.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableDependencyImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableDependency()
+	 * @generated
+	 */
+	int ADAPTABLE_DEPENDENCY = 18;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_DEPENDENCY__COST = ICOSTABLE__COST;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_DEPENDENCY__PARAMETER = ICOSTABLE_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of structural features of the '<em>Alternative Parameter Set</em>' class.
+	 * The number of structural features of the '<em>Adaptable Dependency</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_PARAMETER_SET_FEATURE_COUNT = 1;
+	int ADAPTABLE_DEPENDENCY_FEATURE_COUNT = ICOSTABLE_FEATURE_COUNT + 1;
 
 	/**
-	 * The number of operations of the '<em>Alternative Parameter Set</em>' class.
+	 * The number of operations of the '<em>Adaptable Dependency</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_PARAMETER_SET_OPERATION_COUNT = 0;
+	int ADAPTABLE_DEPENDENCY_OPERATION_COUNT = ICOSTABLE_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeVariableImpl <em>Alternative Variable</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.AlternativeVariableImpl
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeVariable
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeVariable()
 	 * @generated
 	 */
-	int ALTERNATIVE_VARIABLE = 17;
+	int ALTERNATIVE_VARIABLE = 19;
 
 	/**
 	 * The number of structural features of the '<em>Alternative Variable</em>' class.
@@ -1147,7 +1339,7 @@ public interface DNIAPPackage extends EPackage {
 	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeVariableSet()
 	 * @generated
 	 */
-	int ALTERNATIVE_VARIABLE_SET = 18;
+	int ALTERNATIVE_VARIABLE_SET = 20;
 
 	/**
 	 * The feature id for the '<em><b>Alternative</b></em>' containment reference list.
@@ -1177,69 +1369,226 @@ public interface DNIAPPackage extends EPackage {
 	int ALTERNATIVE_VARIABLE_SET_OPERATION_COUNT = ALTERNATIVE_VARIABLE_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongImpl <em>Alternative Constant Long</em>}' class.
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl <em>Adaptable Variable</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongImpl
-	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeConstantLong()
+	 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptableVariable()
 	 * @generated
 	 */
-	int ALTERNATIVE_CONSTANT_LONG = 19;
+	int ADAPTABLE_VARIABLE = 21;
 
 	/**
-	 * The number of structural features of the '<em>Alternative Constant Long</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_CONSTANT_LONG_FEATURE_COUNT = 0;
+	int ADAPTABLE_VARIABLE__COST = ICOSTABLE__COST;
 
 	/**
-	 * The number of operations of the '<em>Alternative Constant Long</em>' class.
+	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_CONSTANT_LONG_OPERATION_COUNT = 0;
+	int ADAPTABLE_VARIABLE__PARAMETER = ICOSTABLE_FEATURE_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongVariableSetImpl <em>Alternative Constant Long Variable Set</em>}' class.
+	 * The number of structural features of the '<em>Adaptable Variable</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongVariableSetImpl
-	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeConstantLongVariableSet()
 	 * @generated
+	 * @ordered
 	 */
-	int ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET = 20;
+	int ADAPTABLE_VARIABLE_FEATURE_COUNT = ICOSTABLE_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Alternative</b></em>' containment reference list.
+	 * The number of operations of the '<em>Adaptable Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTABLE_VARIABLE_OPERATION_COUNT = ICOSTABLE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.CostImpl <em>Cost</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.impl.CostImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getCost()
+	 * @generated
+	 */
+	int COST = 23;
+
+	/**
+	 * The feature id for the '<em><b>Cost Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__COST_FUNCTION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Cost</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Cost</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.InvestmentImpl <em>Investment</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.impl.InvestmentImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getInvestment()
+	 * @generated
+	 */
+	int INVESTMENT = 24;
+
+	/**
+	 * The feature id for the '<em><b>Cost Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVESTMENT__COST_FUNCTION = COST__COST_FUNCTION;
+
+	/**
+	 * The number of structural features of the '<em>Investment</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVESTMENT_FEATURE_COUNT = COST_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Investment</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVESTMENT_OPERATION_COUNT = COST_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.HandlingTimeImpl <em>Handling Time</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.impl.HandlingTimeImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getHandlingTime()
+	 * @generated
+	 */
+	int HANDLING_TIME = 25;
+
+	/**
+	 * The feature id for the '<em><b>Cost Function</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE = ALTERNATIVE_CONSTANT_LONG_FEATURE_COUNT + 0;
+	int HANDLING_TIME__COST_FUNCTION = COST__COST_FUNCTION;
 
 	/**
-	 * The number of structural features of the '<em>Alternative Constant Long Variable Set</em>' class.
+	 * The number of structural features of the '<em>Handling Time</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET_FEATURE_COUNT = ALTERNATIVE_CONSTANT_LONG_FEATURE_COUNT + 1;
+	int HANDLING_TIME_FEATURE_COUNT = COST_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of operations of the '<em>Alternative Constant Long Variable Set</em>' class.
+	 * The number of operations of the '<em>Handling Time</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET_OPERATION_COUNT = ALTERNATIVE_CONSTANT_LONG_OPERATION_COUNT + 0;
+	int HANDLING_TIME_OPERATION_COUNT = COST_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.ICostFunction <em>ICost Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.ICostFunction
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getICostFunction()
+	 * @generated
+	 */
+	int ICOST_FUNCTION = 26;
+
+	/**
+	 * The number of structural features of the '<em>ICost Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ICOST_FUNCTION_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>ICost Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ICOST_FUNCTION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dni.dnimm3ap.impl.FixedCostFunctionImpl <em>Fixed Cost Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dni.dnimm3ap.impl.FixedCostFunctionImpl
+	 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getFixedCostFunction()
+	 * @generated
+	 */
+	int FIXED_COST_FUNCTION = 27;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIXED_COST_FUNCTION__VALUE = ICOST_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Fixed Cost Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIXED_COST_FUNCTION_FEATURE_COUNT = ICOST_FUNCTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Fixed Cost Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIXED_COST_FUNCTION_OPERATION_COUNT = ICOST_FUNCTION_OPERATION_COUNT + 0;
 
 
 	/**
@@ -1286,102 +1635,102 @@ public interface DNIAPPackage extends EPackage {
 	EReference getAdaptationPoints_NetworkInfrastructure();
 
 	/**
-	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories <em>Adaptation Repositories</em>}'.
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository <em>Adaptation Repository</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Adaptation Repositories</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories
+	 * @return the meta object for class '<em>Adaptation Repository</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository
 	 * @generated
 	 */
-	EClass getAdaptationRepositories();
+	EClass getAdaptationRepository();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNodes <em>Nodes</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getNodes <em>Nodes</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Nodes</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNodes()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getNodes()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_Nodes();
+	EReference getAdaptationRepository_Nodes();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getEndPerformances <em>End Performances</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getEndPerformances <em>End Performances</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>End Performances</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getEndPerformances()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getEndPerformances()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_EndPerformances();
+	EReference getAdaptationRepository_EndPerformances();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getIntermediatePerformances <em>Intermediate Performances</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getIntermediatePerformances <em>Intermediate Performances</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Intermediate Performances</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getIntermediatePerformances()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getIntermediatePerformances()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_IntermediatePerformances();
+	EReference getAdaptationRepository_IntermediatePerformances();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getSdnNodePerformances <em>Sdn Node Performances</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getSdnNodePerformances <em>Sdn Node Performances</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Sdn Node Performances</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getSdnNodePerformances()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getSdnNodePerformances()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_SdnNodePerformances();
+	EReference getAdaptationRepository_SdnNodePerformances();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNetworkInterfaces <em>Network Interfaces</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getNetworkInterfaces <em>Network Interfaces</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Network Interfaces</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNetworkInterfaces()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getNetworkInterfaces()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_NetworkInterfaces();
+	EReference getAdaptationRepository_NetworkInterfaces();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNetworkInterfacePerformances <em>Network Interface Performances</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getNetworkInterfacePerformances <em>Network Interface Performances</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Network Interface Performances</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getNetworkInterfacePerformances()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getNetworkInterfacePerformances()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_NetworkInterfacePerformances();
+	EReference getAdaptationRepository_NetworkInterfacePerformances();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getLinks <em>Links</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getLinks <em>Links</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Links</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getLinks()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getLinks()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_Links();
+	EReference getAdaptationRepository_Links();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories#getLinkPerformances <em>Link Performances</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository#getLinkPerformances <em>Link Performances</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Link Performances</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepositories#getLinkPerformances()
-	 * @see #getAdaptationRepositories()
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository#getLinkPerformances()
+	 * @see #getAdaptationRepository()
 	 * @generated
 	 */
-	EReference getAdaptationRepositories_LinkPerformances();
+	EReference getAdaptationRepository_LinkPerformances();
 
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.IAdaptableEntity <em>IAdaptable Entity</em>}'.
@@ -1652,26 +2001,26 @@ public interface DNIAPPackage extends EPackage {
 	EReference getAdaptableIntermediatePerformance_ForwardingLatency();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}'.
+	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingBandwidthBPS <em>Forwarding Bandwidth BPS</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Switching Capacity PPS</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS()
+	 * @return the meta object for the containment reference '<em>Forwarding Bandwidth BPS</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingBandwidthBPS()
 	 * @see #getAdaptableIntermediatePerformance()
 	 * @generated
 	 */
-	EReference getAdaptableIntermediatePerformance_SwitchingCapacityPPS();
+	EReference getAdaptableIntermediatePerformance_ForwardingBandwidthBPS();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingBandwidthBPS <em>Forwarding Bandwidth BPS</em>}'.
+	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Forwarding Bandwidth BPS</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getForwardingBandwidthBPS()
+	 * @return the meta object for the containment reference '<em>Switching Capacity PPS</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance#getSwitchingCapacityPPS()
 	 * @see #getAdaptableIntermediatePerformance()
 	 * @generated
 	 */
-	EReference getAdaptableIntermediatePerformance_ForwardingBandwidthBPS();
+	EReference getAdaptableIntermediatePerformance_SwitchingCapacityPPS();
 
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptableSdnNodePerformance <em>Adaptable Sdn Node Performance</em>}'.
@@ -1876,25 +2225,56 @@ public interface DNIAPPackage extends EPackage {
 	EReference getLinkAdaptationGroup_Items();
 
 	/**
-	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AlternativeParameterSet <em>Alternative Parameter Set</em>}'.
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AlternativeDependency <em>Alternative Dependency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Alternative Dependency</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeDependency
+	 * @generated
+	 */
+	EClass getAlternativeDependency();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AlternativeDependencySet <em>Alternative Dependency Set</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Alternative Parameter Set</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AlternativeParameterSet
+	 * @return the meta object for class '<em>Alternative Dependency Set</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeDependencySet
 	 * @generated
 	 */
-	EClass getAlternativeParameterSet();
+	EClass getAlternativeDependencySet();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AlternativeParameterSet#getAlternative <em>Alternative</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AlternativeDependencySet#getAlternative <em>Alternative</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the containment reference list '<em>Alternative</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AlternativeParameterSet#getAlternative()
-	 * @see #getAlternativeParameterSet()
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeDependencySet#getAlternative()
+	 * @see #getAlternativeDependencySet()
+	 * @generated
+	 */
+	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 getAlternativeParameterSet_Alternative();
+	EReference getAdaptableDependency_Parameter();
 
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AlternativeVariable <em>Alternative Variable</em>}'.
@@ -1917,24 +2297,129 @@ public interface DNIAPPackage extends EPackage {
 	EClass getAlternativeVariableSet();
 
 	/**
-	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AlternativeConstantLong <em>Alternative Constant Long</em>}'.
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet#getAlternative <em>Alternative</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Alternative</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeVariableSet#getAlternative()
+	 * @see #getAlternativeVariableSet()
+	 * @generated
+	 */
+	EReference getAlternativeVariableSet_Alternative();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable <em>Adaptable Variable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptable Variable</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.AdaptableVariable
+	 * @generated
+	 */
+	EClass getAdaptableVariable();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable#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.AdaptableVariable#getParameter()
+	 * @see #getAdaptableVariable()
+	 * @generated
+	 */
+	EReference getAdaptableVariable_Parameter();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.ICostable <em>ICostable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>ICostable</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.ICostable
+	 * @generated
+	 */
+	EClass getICostable();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dni.dnimm3ap.ICostable#getCost <em>Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Cost</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.ICostable#getCost()
+	 * @see #getICostable()
+	 * @generated
+	 */
+	EReference getICostable_Cost();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.Cost <em>Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cost</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.Cost
+	 * @generated
+	 */
+	EClass getCost();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link tools.descartes.dni.dnimm3ap.Cost#getCostFunction <em>Cost Function</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Alternative Constant Long</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AlternativeConstantLong
+	 * @return the meta object for the containment reference '<em>Cost Function</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.Cost#getCostFunction()
+	 * @see #getCost()
 	 * @generated
 	 */
-	EClass getAlternativeConstantLong();
+	EReference getCost_CostFunction();
 
 	/**
-	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet <em>Alternative Constant Long Variable Set</em>}'.
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.Investment <em>Investment</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Alternative Constant Long Variable Set</em>'.
-	 * @see tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet
+	 * @return the meta object for class '<em>Investment</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.Investment
 	 * @generated
 	 */
-	EClass getAlternativeConstantLongVariableSet();
+	EClass getInvestment();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.HandlingTime <em>Handling Time</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Handling Time</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.HandlingTime
+	 * @generated
+	 */
+	EClass getHandlingTime();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.ICostFunction <em>ICost Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>ICost Function</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.ICostFunction
+	 * @generated
+	 */
+	EClass getICostFunction();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dni.dnimm3ap.FixedCostFunction <em>Fixed Cost Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fixed Cost Function</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.FixedCostFunction
+	 * @generated
+	 */
+	EClass getFixedCostFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link tools.descartes.dni.dnimm3ap.FixedCostFunction#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see tools.descartes.dni.dnimm3ap.FixedCostFunction#getValue()
+	 * @see #getFixedCostFunction()
+	 * @generated
+	 */
+	EAttribute getFixedCostFunction_Value();
 
 	/**
 	 * Returns the factory that creates the instances of the model.
@@ -1994,14 +2479,14 @@ public interface DNIAPPackage extends EPackage {
 		EReference ADAPTATION_POINTS__NETWORK_INFRASTRUCTURE = eINSTANCE.getAdaptationPoints_NetworkInfrastructure();
 
 		/**
-		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl <em>Adaptation Repositories</em>}' class.
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl <em>Adaptation Repository</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl
-		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptationRepositories()
+		 * @see tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAdaptationRepository()
 		 * @generated
 		 */
-		EClass ADAPTATION_REPOSITORIES = eINSTANCE.getAdaptationRepositories();
+		EClass ADAPTATION_REPOSITORY = eINSTANCE.getAdaptationRepository();
 
 		/**
 		 * The meta object literal for the '<em><b>Nodes</b></em>' containment reference list feature.
@@ -2009,7 +2494,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__NODES = eINSTANCE.getAdaptationRepositories_Nodes();
+		EReference ADAPTATION_REPOSITORY__NODES = eINSTANCE.getAdaptationRepository_Nodes();
 
 		/**
 		 * The meta object literal for the '<em><b>End Performances</b></em>' containment reference list feature.
@@ -2017,7 +2502,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__END_PERFORMANCES = eINSTANCE.getAdaptationRepositories_EndPerformances();
+		EReference ADAPTATION_REPOSITORY__END_PERFORMANCES = eINSTANCE.getAdaptationRepository_EndPerformances();
 
 		/**
 		 * The meta object literal for the '<em><b>Intermediate Performances</b></em>' containment reference list feature.
@@ -2025,7 +2510,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES = eINSTANCE.getAdaptationRepositories_IntermediatePerformances();
+		EReference ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES = eINSTANCE.getAdaptationRepository_IntermediatePerformances();
 
 		/**
 		 * The meta object literal for the '<em><b>Sdn Node Performances</b></em>' containment reference list feature.
@@ -2033,7 +2518,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES = eINSTANCE.getAdaptationRepositories_SdnNodePerformances();
+		EReference ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES = eINSTANCE.getAdaptationRepository_SdnNodePerformances();
 
 		/**
 		 * The meta object literal for the '<em><b>Network Interfaces</b></em>' containment reference list feature.
@@ -2041,7 +2526,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__NETWORK_INTERFACES = eINSTANCE.getAdaptationRepositories_NetworkInterfaces();
+		EReference ADAPTATION_REPOSITORY__NETWORK_INTERFACES = eINSTANCE.getAdaptationRepository_NetworkInterfaces();
 
 		/**
 		 * The meta object literal for the '<em><b>Network Interface Performances</b></em>' containment reference list feature.
@@ -2049,7 +2534,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES = eINSTANCE.getAdaptationRepositories_NetworkInterfacePerformances();
+		EReference ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES = eINSTANCE.getAdaptationRepository_NetworkInterfacePerformances();
 
 		/**
 		 * The meta object literal for the '<em><b>Links</b></em>' containment reference list feature.
@@ -2057,7 +2542,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__LINKS = eINSTANCE.getAdaptationRepositories_Links();
+		EReference ADAPTATION_REPOSITORY__LINKS = eINSTANCE.getAdaptationRepository_Links();
 
 		/**
 		 * The meta object literal for the '<em><b>Link Performances</b></em>' containment reference list feature.
@@ -2065,7 +2550,7 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTATION_REPOSITORIES__LINK_PERFORMANCES = eINSTANCE.getAdaptationRepositories_LinkPerformances();
+		EReference ADAPTATION_REPOSITORY__LINK_PERFORMANCES = eINSTANCE.getAdaptationRepository_LinkPerformances();
 
 		/**
 		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.IAdaptableEntity <em>IAdaptable Entity</em>}' class.
@@ -2282,20 +2767,20 @@ public interface DNIAPPackage extends EPackage {
 		EReference ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY = eINSTANCE.getAdaptableIntermediatePerformance_ForwardingLatency();
 
 		/**
-		 * The meta object literal for the '<em><b>Switching Capacity PPS</b></em>' containment reference feature.
+		 * The meta object literal for the '<em><b>Forwarding Bandwidth BPS</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS = eINSTANCE.getAdaptableIntermediatePerformance_SwitchingCapacityPPS();
+		EReference ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS = eINSTANCE.getAdaptableIntermediatePerformance_ForwardingBandwidthBPS();
 
 		/**
-		 * The meta object literal for the '<em><b>Forwarding Bandwidth BPS</b></em>' containment reference feature.
+		 * The meta object literal for the '<em><b>Switching Capacity PPS</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS = eINSTANCE.getAdaptableIntermediatePerformance_ForwardingBandwidthBPS();
+		EReference ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS = eINSTANCE.getAdaptableIntermediatePerformance_SwitchingCapacityPPS();
 
 		/**
 		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AdaptableSdnNodePerformanceImpl <em>Adaptable Sdn Node Performance</em>}' class.
@@ -2464,14 +2949,24 @@ public interface DNIAPPackage extends EPackage {
 		EReference LINK_ADAPTATION_GROUP__ITEMS = eINSTANCE.getLinkAdaptationGroup_Items();
 
 		/**
-		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.AlternativeParameterSet <em>Alternative Parameter Set</em>}' class.
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.AlternativeDependency <em>Alternative Dependency</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.AlternativeDependency
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeDependency()
+		 * @generated
+		 */
+		EClass ALTERNATIVE_DEPENDENCY = eINSTANCE.getAlternativeDependency();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeDependencySetImpl <em>Alternative Dependency Set</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see tools.descartes.dni.dnimm3ap.AlternativeParameterSet
-		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeParameterSet()
+		 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeDependencySetImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeDependencySet()
 		 * @generated
 		 */
-		EClass ALTERNATIVE_PARAMETER_SET = eINSTANCE.getAlternativeParameterSet();
+		EClass ALTERNATIVE_DEPENDENCY_SET = eINSTANCE.getAlternativeDependencySet();
 
 		/**
 		 * The meta object literal for the '<em><b>Alternative</b></em>' containment reference list feature.
@@ -2479,13 +2974,31 @@ public interface DNIAPPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ALTERNATIVE_PARAMETER_SET__ALTERNATIVE = eINSTANCE.getAlternativeParameterSet_Alternative();
+		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.impl.AlternativeVariableImpl <em>Alternative Variable</em>}' class.
+		 * The meta object literal 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.AlternativeVariableImpl
+		 * @see tools.descartes.dni.dnimm3ap.AlternativeVariable
 		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeVariable()
 		 * @generated
 		 */
@@ -2502,24 +3015,114 @@ public interface DNIAPPackage extends EPackage {
 		EClass ALTERNATIVE_VARIABLE_SET = eINSTANCE.getAlternativeVariableSet();
 
 		/**
-		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongImpl <em>Alternative Constant Long</em>}' class.
+		 * The meta object literal for the '<em><b>Alternative</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		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.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.impl.AdaptableVariableImpl
+		 * @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.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ADAPTABLE_VARIABLE__PARAMETER = eINSTANCE.getAdaptableVariable_Parameter();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.ICostable <em>ICostable</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.ICostable
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getICostable()
+		 * @generated
+		 */
+		EClass ICOSTABLE = eINSTANCE.getICostable();
+
+		/**
+		 * The meta object literal for the '<em><b>Cost</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ICOSTABLE__COST = eINSTANCE.getICostable_Cost();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.CostImpl <em>Cost</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.impl.CostImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getCost()
+		 * @generated
+		 */
+		EClass COST = eINSTANCE.getCost();
+
+		/**
+		 * The meta object literal for the '<em><b>Cost Function</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COST__COST_FUNCTION = eINSTANCE.getCost_CostFunction();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.InvestmentImpl <em>Investment</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.impl.InvestmentImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getInvestment()
+		 * @generated
+		 */
+		EClass INVESTMENT = eINSTANCE.getInvestment();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.HandlingTimeImpl <em>Handling Time</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.impl.HandlingTimeImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getHandlingTime()
+		 * @generated
+		 */
+		EClass HANDLING_TIME = eINSTANCE.getHandlingTime();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.ICostFunction <em>ICost Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dni.dnimm3ap.ICostFunction
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getICostFunction()
+		 * @generated
+		 */
+		EClass ICOST_FUNCTION = eINSTANCE.getICostFunction();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.FixedCostFunctionImpl <em>Fixed Cost Function</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongImpl
-		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeConstantLong()
+		 * @see tools.descartes.dni.dnimm3ap.impl.FixedCostFunctionImpl
+		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getFixedCostFunction()
 		 * @generated
 		 */
-		EClass ALTERNATIVE_CONSTANT_LONG = eINSTANCE.getAlternativeConstantLong();
+		EClass FIXED_COST_FUNCTION = eINSTANCE.getFixedCostFunction();
 
 		/**
-		 * The meta object literal for the '{@link tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongVariableSetImpl <em>Alternative Constant Long Variable Set</em>}' class.
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongVariableSetImpl
-		 * @see tools.descartes.dni.dnimm3ap.impl.DNIAPPackageImpl#getAlternativeConstantLongVariableSet()
 		 * @generated
 		 */
-		EClass ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET = eINSTANCE.getAlternativeConstantLongVariableSet();
+		EAttribute FIXED_COST_FUNCTION__VALUE = eINSTANCE.getFixedCostFunction_Value();
 
 	}
 
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/FixedCostFunction.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/FixedCostFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..db1239df62b8ede60b8a72974c8a7932919f72f5
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/FixedCostFunction.java
@@ -0,0 +1,49 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fixed Cost Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.FixedCostFunction#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getFixedCostFunction()
+ * @model
+ * @generated
+ */
+public interface FixedCostFunction extends ICostFunction {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(double)
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getFixedCostFunction_Value()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getValue();
+
+	/**
+	 * Sets the value of the '{@link tools.descartes.dni.dnimm3ap.FixedCostFunction#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(double value);
+
+} // FixedCostFunction
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/HandlingTime.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/HandlingTime.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1e53108412c7611fb27ae88f927b34bb841621c
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/HandlingTime.java
@@ -0,0 +1,17 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Handling Time</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getHandlingTime()
+ * @model
+ * @generated
+ */
+public interface HandlingTime extends Cost {
+} // HandlingTime
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/IAdaptableEntity.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/IAdaptableEntity.java
index 6571a298bfc9e8012e50f27ca691cf4e382521ac..8f039a39386afee7eca28a43fcd752916c52c54f 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/IAdaptableEntity.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/IAdaptableEntity.java
@@ -2,8 +2,6 @@
  */
 package tools.descartes.dni.dnimm3ap;
 
-import org.eclipse.emf.ecore.EObject;
-
 import tools.descartes.dni.dnimm3.ITypedEntity;
 
 /**
@@ -22,7 +20,7 @@ import tools.descartes.dni.dnimm3.ITypedEntity;
  * @model interface="true" abstract="true"
  * @generated
  */
-public interface IAdaptableEntity<T extends ITypedEntity> extends EObject {
+public interface IAdaptableEntity<T extends ITypedEntity> extends ICostable {
 	/**
 	 * Returns the value of the '<em><b>Entity Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/ICostFunction.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/ICostFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..63f8f0bfe272fd02bea3c96cfe04e9ab1c2ac002
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/ICostFunction.java
@@ -0,0 +1,18 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ICost Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getICostFunction()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ICostFunction extends EObject {
+} // ICostFunction
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/ICostable.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/ICostable.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f3b2458f4346eeba20d4c169b47ab976aabe11f
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/ICostable.java
@@ -0,0 +1,42 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ICostable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.ICostable#getCost <em>Cost</em>}</li>
+ * </ul>
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getICostable()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ICostable extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Cost</b></em>' containment reference list.
+	 * The list contents are of type {@link tools.descartes.dni.dnimm3ap.Cost}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cost</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cost</em>' containment reference list.
+	 * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getICostable_Cost()
+	 * @model containment="true"
+	 * @generated
+	 */
+	List<Cost> getCost();
+
+} // ICostable
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/Investment.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/Investment.java
new file mode 100644
index 0000000000000000000000000000000000000000..b49b6b4ded2d4c025831cd1e2ef551aa9e01ecc8
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/Investment.java
@@ -0,0 +1,17 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Investment</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see tools.descartes.dni.dnimm3ap.DNIAPPackage#getInvestment()
+ * @model
+ * @generated
+ */
+public interface Investment extends Cost {
+} // Investment
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/AdaptableDependencyImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ad9b6068a05b0aefc80127bbfde056002793710
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableDependencyImpl.java
@@ -0,0 +1,223 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import tools.descartes.dni.dnimm3.Dependency;
+
+import tools.descartes.dni.dnimm3ap.AdaptableDependency;
+import tools.descartes.dni.dnimm3ap.Cost;
+import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptable Dependency</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#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AdaptableDependencyImpl extends MinimalEObjectImpl.Container implements AdaptableDependency {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
+	/**
+	 * 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() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_DEPENDENCY__COST);
+		}
+		return cost;
+	}
+
+	/**
+	 * <!-- 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 -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
+				return basicSetParameter(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+				return getCost();
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
+				return getParameter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
+				setParameter((Dependency)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+				getCost().clear();
+				return;
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
+				setParameter((Dependency)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+				return cost != null && !cost.isEmpty();
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
+				return parameter != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //AdaptableDependencyImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableEndPerformanceImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableEndPerformanceImpl.java
index 4928c00bac077c761021901b8cbaa63134cce525..c3d4052114270ffe86b584970d83993ee23797cc 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableEndPerformanceImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableEndPerformanceImpl.java
@@ -2,19 +2,28 @@
  */
 package tools.descartes.dni.dnimm3ap.impl;
 
+import java.util.Collection;
+import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
 import tools.descartes.dni.dnimm3.EndPerformanceType;
 
 import tools.descartes.dni.dnimm3ap.AdaptableEndPerformance;
 import tools.descartes.dni.dnimm3ap.AlternativeVariable;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -25,6 +34,7 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableEndPerformanceImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableEndPerformanceImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableEndPerformanceImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableEndPerformanceImpl#getSoftwareLayersDelay <em>Software Layers Delay</em>}</li>
@@ -33,6 +43,16 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * @generated
  */
 public class AdaptableEndPerformanceImpl extends MinimalEObjectImpl.Container implements AdaptableEndPerformance {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -82,6 +102,18 @@ public class AdaptableEndPerformanceImpl extends MinimalEObjectImpl.Container im
 		return DNIAPPackage.Literals.ADAPTABLE_END_PERFORMANCE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_END_PERFORMANCE__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -187,6 +219,8 @@ public class AdaptableEndPerformanceImpl extends MinimalEObjectImpl.Container im
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__SOFTWARE_LAYERS_DELAY:
 				return basicSetSoftwareLayersDelay(null, msgs);
 		}
@@ -201,6 +235,8 @@ public class AdaptableEndPerformanceImpl extends MinimalEObjectImpl.Container im
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -217,9 +253,14 @@ public class AdaptableEndPerformanceImpl extends MinimalEObjectImpl.Container im
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((EndPerformanceType)newValue);
 				return;
@@ -238,6 +279,9 @@ public class AdaptableEndPerformanceImpl extends MinimalEObjectImpl.Container im
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((EndPerformanceType)null);
 				return;
@@ -256,6 +300,8 @@ public class AdaptableEndPerformanceImpl extends MinimalEObjectImpl.Container im
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__NAME:
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableIntermediatePerformanceImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableIntermediatePerformanceImpl.java
index 4cebbf6454942fbd633165599ec940e868a923dd..533a690f1068473310aa56ba248ecc9042fe4598 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableIntermediatePerformanceImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableIntermediatePerformanceImpl.java
@@ -2,19 +2,28 @@
  */
 package tools.descartes.dni.dnimm3ap.impl;
 
+import java.util.Collection;
+import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
 import tools.descartes.dni.dnimm3.IntermediatePerformanceType;
 
 import tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance;
-import tools.descartes.dni.dnimm3ap.AlternativeVariable;
+import tools.descartes.dni.dnimm3ap.AlternativeDependency;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -25,16 +34,27 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableIntermediatePerformanceImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableIntermediatePerformanceImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableIntermediatePerformanceImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableIntermediatePerformanceImpl#getForwardingLatency <em>Forwarding Latency</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableIntermediatePerformanceImpl#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableIntermediatePerformanceImpl#getForwardingBandwidthBPS <em>Forwarding Bandwidth BPS</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableIntermediatePerformanceImpl#getSwitchingCapacityPPS <em>Switching Capacity PPS</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Container implements AdaptableIntermediatePerformance {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -63,27 +83,27 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * @generated
 	 * @ordered
 	 */
-	protected AlternativeVariable forwardingLatency;
+	protected AlternativeDependency forwardingLatency;
 
 	/**
-	 * The cached value of the '{@link #getSwitchingCapacityPPS() <em>Switching Capacity PPS</em>}' containment reference.
+	 * The cached value of the '{@link #getForwardingBandwidthBPS() <em>Forwarding Bandwidth BPS</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getSwitchingCapacityPPS()
+	 * @see #getForwardingBandwidthBPS()
 	 * @generated
 	 * @ordered
 	 */
-	protected AlternativeVariable switchingCapacityPPS;
+	protected AlternativeDependency forwardingBandwidthBPS;
 
 	/**
-	 * The cached value of the '{@link #getForwardingBandwidthBPS() <em>Forwarding Bandwidth BPS</em>}' containment reference.
+	 * The cached value of the '{@link #getSwitchingCapacityPPS() <em>Switching Capacity PPS</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getForwardingBandwidthBPS()
+	 * @see #getSwitchingCapacityPPS()
 	 * @generated
 	 * @ordered
 	 */
-	protected AlternativeVariable forwardingBandwidthBPS;
+	protected AlternativeDependency switchingCapacityPPS;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -104,6 +124,18 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 		return DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -163,7 +195,7 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AlternativeVariable getForwardingLatency() {
+	public AlternativeDependency getForwardingLatency() {
 		return forwardingLatency;
 	}
 
@@ -172,8 +204,8 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetForwardingLatency(AlternativeVariable newForwardingLatency, NotificationChain msgs) {
-		AlternativeVariable oldForwardingLatency = forwardingLatency;
+	public NotificationChain basicSetForwardingLatency(AlternativeDependency newForwardingLatency, NotificationChain msgs) {
+		AlternativeDependency oldForwardingLatency = forwardingLatency;
 		forwardingLatency = newForwardingLatency;
 		if (eNotificationRequired()) {
 			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY, oldForwardingLatency, newForwardingLatency);
@@ -187,7 +219,7 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setForwardingLatency(AlternativeVariable newForwardingLatency) {
+	public void setForwardingLatency(AlternativeDependency newForwardingLatency) {
 		if (newForwardingLatency != forwardingLatency) {
 			NotificationChain msgs = null;
 			if (forwardingLatency != null)
@@ -206,8 +238,8 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AlternativeVariable getSwitchingCapacityPPS() {
-		return switchingCapacityPPS;
+	public AlternativeDependency getForwardingBandwidthBPS() {
+		return forwardingBandwidthBPS;
 	}
 
 	/**
@@ -215,11 +247,11 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetSwitchingCapacityPPS(AlternativeVariable newSwitchingCapacityPPS, NotificationChain msgs) {
-		AlternativeVariable oldSwitchingCapacityPPS = switchingCapacityPPS;
-		switchingCapacityPPS = newSwitchingCapacityPPS;
+	public NotificationChain basicSetForwardingBandwidthBPS(AlternativeDependency newForwardingBandwidthBPS, NotificationChain msgs) {
+		AlternativeDependency oldForwardingBandwidthBPS = forwardingBandwidthBPS;
+		forwardingBandwidthBPS = newForwardingBandwidthBPS;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, oldSwitchingCapacityPPS, newSwitchingCapacityPPS);
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, oldForwardingBandwidthBPS, newForwardingBandwidthBPS);
 			if (msgs == null) msgs = notification; else msgs.add(notification);
 		}
 		return msgs;
@@ -230,18 +262,18 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setSwitchingCapacityPPS(AlternativeVariable newSwitchingCapacityPPS) {
-		if (newSwitchingCapacityPPS != switchingCapacityPPS) {
+	public void setForwardingBandwidthBPS(AlternativeDependency newForwardingBandwidthBPS) {
+		if (newForwardingBandwidthBPS != forwardingBandwidthBPS) {
 			NotificationChain msgs = null;
-			if (switchingCapacityPPS != null)
-				msgs = ((InternalEObject)switchingCapacityPPS).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, null, msgs);
-			if (newSwitchingCapacityPPS != null)
-				msgs = ((InternalEObject)newSwitchingCapacityPPS).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, null, msgs);
-			msgs = basicSetSwitchingCapacityPPS(newSwitchingCapacityPPS, msgs);
+			if (forwardingBandwidthBPS != null)
+				msgs = ((InternalEObject)forwardingBandwidthBPS).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, null, msgs);
+			if (newForwardingBandwidthBPS != null)
+				msgs = ((InternalEObject)newForwardingBandwidthBPS).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, null, msgs);
+			msgs = basicSetForwardingBandwidthBPS(newForwardingBandwidthBPS, msgs);
 			if (msgs != null) msgs.dispatch();
 		}
 		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, newSwitchingCapacityPPS, newSwitchingCapacityPPS));
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, newForwardingBandwidthBPS, newForwardingBandwidthBPS));
 	}
 
 	/**
@@ -249,8 +281,8 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AlternativeVariable getForwardingBandwidthBPS() {
-		return forwardingBandwidthBPS;
+	public AlternativeDependency getSwitchingCapacityPPS() {
+		return switchingCapacityPPS;
 	}
 
 	/**
@@ -258,11 +290,11 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetForwardingBandwidthBPS(AlternativeVariable newForwardingBandwidthBPS, NotificationChain msgs) {
-		AlternativeVariable oldForwardingBandwidthBPS = forwardingBandwidthBPS;
-		forwardingBandwidthBPS = newForwardingBandwidthBPS;
+	public NotificationChain basicSetSwitchingCapacityPPS(AlternativeDependency newSwitchingCapacityPPS, NotificationChain msgs) {
+		AlternativeDependency oldSwitchingCapacityPPS = switchingCapacityPPS;
+		switchingCapacityPPS = newSwitchingCapacityPPS;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, oldForwardingBandwidthBPS, newForwardingBandwidthBPS);
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, oldSwitchingCapacityPPS, newSwitchingCapacityPPS);
 			if (msgs == null) msgs = notification; else msgs.add(notification);
 		}
 		return msgs;
@@ -273,18 +305,18 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setForwardingBandwidthBPS(AlternativeVariable newForwardingBandwidthBPS) {
-		if (newForwardingBandwidthBPS != forwardingBandwidthBPS) {
+	public void setSwitchingCapacityPPS(AlternativeDependency newSwitchingCapacityPPS) {
+		if (newSwitchingCapacityPPS != switchingCapacityPPS) {
 			NotificationChain msgs = null;
-			if (forwardingBandwidthBPS != null)
-				msgs = ((InternalEObject)forwardingBandwidthBPS).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, null, msgs);
-			if (newForwardingBandwidthBPS != null)
-				msgs = ((InternalEObject)newForwardingBandwidthBPS).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, null, msgs);
-			msgs = basicSetForwardingBandwidthBPS(newForwardingBandwidthBPS, msgs);
+			if (switchingCapacityPPS != null)
+				msgs = ((InternalEObject)switchingCapacityPPS).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, null, msgs);
+			if (newSwitchingCapacityPPS != null)
+				msgs = ((InternalEObject)newSwitchingCapacityPPS).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, null, msgs);
+			msgs = basicSetSwitchingCapacityPPS(newSwitchingCapacityPPS, msgs);
 			if (msgs != null) msgs.dispatch();
 		}
 		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS, newForwardingBandwidthBPS, newForwardingBandwidthBPS));
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS, newSwitchingCapacityPPS, newSwitchingCapacityPPS));
 	}
 
 	/**
@@ -295,12 +327,14 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY:
 				return basicSetForwardingLatency(null, msgs);
-			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
-				return basicSetSwitchingCapacityPPS(null, msgs);
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS:
 				return basicSetForwardingBandwidthBPS(null, msgs);
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
+				return basicSetSwitchingCapacityPPS(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -313,6 +347,8 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -320,10 +356,10 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 				return getName();
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY:
 				return getForwardingLatency();
-			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
-				return getSwitchingCapacityPPS();
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS:
 				return getForwardingBandwidthBPS();
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
+				return getSwitchingCapacityPPS();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -333,20 +369,25 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((IntermediatePerformanceType)newValue);
 				return;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY:
-				setForwardingLatency((AlternativeVariable)newValue);
-				return;
-			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
-				setSwitchingCapacityPPS((AlternativeVariable)newValue);
+				setForwardingLatency((AlternativeDependency)newValue);
 				return;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS:
-				setForwardingBandwidthBPS((AlternativeVariable)newValue);
+				setForwardingBandwidthBPS((AlternativeDependency)newValue);
+				return;
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
+				setSwitchingCapacityPPS((AlternativeDependency)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -360,17 +401,20 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((IntermediatePerformanceType)null);
 				return;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY:
-				setForwardingLatency((AlternativeVariable)null);
-				return;
-			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
-				setSwitchingCapacityPPS((AlternativeVariable)null);
+				setForwardingLatency((AlternativeDependency)null);
 				return;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS:
-				setForwardingBandwidthBPS((AlternativeVariable)null);
+				setForwardingBandwidthBPS((AlternativeDependency)null);
+				return;
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
+				setSwitchingCapacityPPS((AlternativeDependency)null);
 				return;
 		}
 		super.eUnset(featureID);
@@ -384,16 +428,18 @@ public class AdaptableIntermediatePerformanceImpl extends MinimalEObjectImpl.Con
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__NAME:
 				return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY:
 				return forwardingLatency != null;
-			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
-				return switchingCapacityPPS != null;
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS:
 				return forwardingBandwidthBPS != null;
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
+				return switchingCapacityPPS != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkImpl.java
index 7762c9d6b72b02f68606132e88eeb54c36fcf375..0d25b943768d62d005590a5113d7208a105c31e4 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -16,13 +16,16 @@ 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.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.LinkType;
 
 import tools.descartes.dni.dnimm3ap.AdaptableLink;
 import tools.descartes.dni.dnimm3ap.AdaptableLinkPerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterface;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 import tools.descartes.dni.dnimm3ap.LinkAdaptationGroup;
 
@@ -34,6 +37,7 @@ import tools.descartes.dni.dnimm3ap.LinkAdaptationGroup;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkImpl#getLinkPerformance <em>Link Performance</em>}</li>
@@ -44,6 +48,16 @@ import tools.descartes.dni.dnimm3ap.LinkAdaptationGroup;
  * @generated
  */
 public class AdaptableLinkImpl extends MinimalEObjectImpl.Container implements AdaptableLink {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -113,6 +127,18 @@ public class AdaptableLinkImpl extends MinimalEObjectImpl.Container implements A
 		return DNIAPPackage.Literals.ADAPTABLE_LINK;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_LINK__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -275,6 +301,8 @@ public class AdaptableLinkImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
 			case DNIAPPackage.ADAPTABLE_LINK__ADAPTATION_GROUP:
 				return basicSetAdaptationGroup(null, msgs);
 		}
@@ -289,6 +317,8 @@ public class AdaptableLinkImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_LINK__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -314,6 +344,10 @@ public class AdaptableLinkImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_LINK__ENTITY_TYPE:
 				setEntityType((LinkType)newValue);
 				return;
@@ -340,6 +374,9 @@ public class AdaptableLinkImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_LINK__ENTITY_TYPE:
 				setEntityType((LinkType)null);
 				return;
@@ -364,6 +401,8 @@ public class AdaptableLinkImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_LINK__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_LINK__NAME:
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkPerformanceImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkPerformanceImpl.java
index 7a87b95de2c4638e68cdd331d774da6ae31bfbe9..d2a353bade90f3553ed16b1b7eae0bf503a4957e 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkPerformanceImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableLinkPerformanceImpl.java
@@ -2,19 +2,28 @@
  */
 package tools.descartes.dni.dnimm3ap.impl;
 
+import java.util.Collection;
+import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
 import tools.descartes.dni.dnimm3.LinkPerformanceType;
 
 import tools.descartes.dni.dnimm3ap.AdaptableLinkPerformance;
 import tools.descartes.dni.dnimm3ap.AlternativeVariable;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -25,6 +34,7 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkPerformanceImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkPerformanceImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkPerformanceImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableLinkPerformanceImpl#getPropagationDelay <em>Propagation Delay</em>}</li>
@@ -34,6 +44,16 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * @generated
  */
 public class AdaptableLinkPerformanceImpl extends MinimalEObjectImpl.Container implements AdaptableLinkPerformance {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -93,6 +113,18 @@ public class AdaptableLinkPerformanceImpl extends MinimalEObjectImpl.Container i
 		return DNIAPPackage.Literals.ADAPTABLE_LINK_PERFORMANCE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -241,6 +273,8 @@ public class AdaptableLinkPerformanceImpl extends MinimalEObjectImpl.Container i
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__PROPAGATION_DELAY:
 				return basicSetPropagationDelay(null, msgs);
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__MAXIMAL_SUPPORTED_BANDWIDTH:
@@ -257,6 +291,8 @@ public class AdaptableLinkPerformanceImpl extends MinimalEObjectImpl.Container i
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -275,9 +311,14 @@ public class AdaptableLinkPerformanceImpl extends MinimalEObjectImpl.Container i
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((LinkPerformanceType)newValue);
 				return;
@@ -299,6 +340,9 @@ public class AdaptableLinkPerformanceImpl extends MinimalEObjectImpl.Container i
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((LinkPerformanceType)null);
 				return;
@@ -320,6 +364,8 @@ public class AdaptableLinkPerformanceImpl extends MinimalEObjectImpl.Container i
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__NAME:
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfaceImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfaceImpl.java
index db78d7e98f8ccf5514686354a66d97324e0a8cf6..d8f6d78a92c694d10dde6a2c3a35dd150816905e 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfaceImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfaceImpl.java
@@ -3,9 +3,10 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
@@ -15,12 +16,15 @@ 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.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.NetworkInterfaceType;
 
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterface;
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterfacePerformance;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -31,6 +35,7 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfaceImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfaceImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfaceImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfaceImpl#getNetworkInterfacePerformance <em>Network Interface Performance</em>}</li>
@@ -39,6 +44,16 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * @generated
  */
 public class AdaptableNetworkInterfaceImpl extends MinimalEObjectImpl.Container implements AdaptableNetworkInterface {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -88,6 +103,18 @@ public class AdaptableNetworkInterfaceImpl extends MinimalEObjectImpl.Container
 		return DNIAPPackage.Literals.ADAPTABLE_NETWORK_INTERFACE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -154,6 +181,20 @@ public class AdaptableNetworkInterfaceImpl extends MinimalEObjectImpl.Container
 		return networkInterfacePerformance;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -162,6 +203,8 @@ public class AdaptableNetworkInterfaceImpl extends MinimalEObjectImpl.Container
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -182,6 +225,10 @@ public class AdaptableNetworkInterfaceImpl extends MinimalEObjectImpl.Container
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__ENTITY_TYPE:
 				setEntityType((NetworkInterfaceType)newValue);
 				return;
@@ -201,6 +248,9 @@ public class AdaptableNetworkInterfaceImpl extends MinimalEObjectImpl.Container
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__ENTITY_TYPE:
 				setEntityType((NetworkInterfaceType)null);
 				return;
@@ -219,6 +269,8 @@ public class AdaptableNetworkInterfaceImpl extends MinimalEObjectImpl.Container
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__NAME:
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfacePerformanceImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfacePerformanceImpl.java
index 13efb617334a59c6618c95a3f7e7c13ce2bc038e..68a185940465129b560af7afb5f41b76501a407b 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfacePerformanceImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNetworkInterfacePerformanceImpl.java
@@ -2,19 +2,28 @@
  */
 package tools.descartes.dni.dnimm3ap.impl;
 
+import java.util.Collection;
+import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
 import tools.descartes.dni.dnimm3.NetworkInterfacePerformanceType;
 
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterfacePerformance;
 import tools.descartes.dni.dnimm3ap.AlternativeVariable;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -25,6 +34,7 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfacePerformanceImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfacePerformanceImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfacePerformanceImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNetworkInterfacePerformanceImpl#getPacketProcessingTime <em>Packet Processing Time</em>}</li>
@@ -34,6 +44,16 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * @generated
  */
 public class AdaptableNetworkInterfacePerformanceImpl extends MinimalEObjectImpl.Container implements AdaptableNetworkInterfacePerformance {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -93,6 +113,18 @@ public class AdaptableNetworkInterfacePerformanceImpl extends MinimalEObjectImpl
 		return DNIAPPackage.Literals.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -241,6 +273,8 @@ public class AdaptableNetworkInterfacePerformanceImpl extends MinimalEObjectImpl
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__PACKET_PROCESSING_TIME:
 				return basicSetPacketProcessingTime(null, msgs);
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__INTERFACE_THROUGHPUT:
@@ -257,6 +291,8 @@ public class AdaptableNetworkInterfacePerformanceImpl extends MinimalEObjectImpl
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -275,9 +311,14 @@ public class AdaptableNetworkInterfacePerformanceImpl extends MinimalEObjectImpl
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((NetworkInterfacePerformanceType)newValue);
 				return;
@@ -299,6 +340,9 @@ public class AdaptableNetworkInterfacePerformanceImpl extends MinimalEObjectImpl
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((NetworkInterfacePerformanceType)null);
 				return;
@@ -320,6 +364,8 @@ public class AdaptableNetworkInterfacePerformanceImpl extends MinimalEObjectImpl
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__NAME:
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNodeImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNodeImpl.java
index e7e0a4bc164630f03210c78d13c270ddaa3a484b..4d61df7bce4bbcdb7d6dddc27d2eb65399b75e90 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNodeImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableNodeImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -16,7 +16,9 @@ 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.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.NodeType;
 
@@ -25,6 +27,7 @@ import tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterface;
 import tools.descartes.dni.dnimm3ap.AdaptableNode;
 import tools.descartes.dni.dnimm3ap.AdaptableSdnNodePerformance;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 import tools.descartes.dni.dnimm3ap.NodeAdaptationGroup;
 
@@ -36,6 +39,7 @@ import tools.descartes.dni.dnimm3ap.NodeAdaptationGroup;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNodeImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNodeImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNodeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableNodeImpl#getEndPerformance <em>End Performance</em>}</li>
@@ -48,6 +52,16 @@ import tools.descartes.dni.dnimm3ap.NodeAdaptationGroup;
  * @generated
  */
 public class AdaptableNodeImpl extends MinimalEObjectImpl.Container implements AdaptableNode {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -137,6 +151,18 @@ public class AdaptableNodeImpl extends MinimalEObjectImpl.Container implements A
 		return DNIAPPackage.Literals.ADAPTABLE_NODE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_NODE__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -323,6 +349,8 @@ public class AdaptableNodeImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NODE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
 			case DNIAPPackage.ADAPTABLE_NODE__ADAPTATION_GROUP:
 				return basicSetAdaptationGroup(null, msgs);
 		}
@@ -337,6 +365,8 @@ public class AdaptableNodeImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NODE__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_NODE__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -366,6 +396,10 @@ public class AdaptableNodeImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NODE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_NODE__ENTITY_TYPE:
 				setEntityType((NodeType)newValue);
 				return;
@@ -400,6 +434,9 @@ public class AdaptableNodeImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NODE__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_NODE__ENTITY_TYPE:
 				setEntityType((NodeType)null);
 				return;
@@ -430,6 +467,8 @@ public class AdaptableNodeImpl extends MinimalEObjectImpl.Container implements A
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_NODE__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_NODE__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_NODE__NAME:
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableSdnNodePerformanceImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableSdnNodePerformanceImpl.java
index 210835a73fbd7e202272f7e9d59ba93c7dfce3a0..6b13d01fff6c2c5b822244d0f7acde2e8eab1601 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableSdnNodePerformanceImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableSdnNodePerformanceImpl.java
@@ -3,9 +3,10 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
@@ -15,12 +16,15 @@ 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.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.SdnNodePerformanceType;
 
 import tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableSdnNodePerformance;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -31,6 +35,7 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableSdnNodePerformanceImpl#getCost <em>Cost</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableSdnNodePerformanceImpl#getEntityType <em>Entity Type</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableSdnNodePerformanceImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptableSdnNodePerformanceImpl#getSoftwareSwitchingPerformance <em>Software Switching Performance</em>}</li>
@@ -40,6 +45,16 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * @generated
  */
 public class AdaptableSdnNodePerformanceImpl extends MinimalEObjectImpl.Container implements AdaptableSdnNodePerformance {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
 	/**
 	 * The cached value of the '{@link #getEntityType() <em>Entity Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -99,6 +114,18 @@ public class AdaptableSdnNodePerformanceImpl extends MinimalEObjectImpl.Containe
 		return DNIAPPackage.Literals.ADAPTABLE_SDN_NODE_PERFORMANCE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__COST);
+		}
+		return cost;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -177,6 +204,20 @@ public class AdaptableSdnNodePerformanceImpl extends MinimalEObjectImpl.Containe
 		return hardwareSwitchingPerformance;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -185,6 +226,8 @@ public class AdaptableSdnNodePerformanceImpl extends MinimalEObjectImpl.Containe
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__COST:
+				return getCost();
 			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__ENTITY_TYPE:
 				if (resolve) return getEntityType();
 				return basicGetEntityType();
@@ -207,6 +250,10 @@ public class AdaptableSdnNodePerformanceImpl extends MinimalEObjectImpl.Containe
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
 			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((SdnNodePerformanceType)newValue);
 				return;
@@ -230,6 +277,9 @@ public class AdaptableSdnNodePerformanceImpl extends MinimalEObjectImpl.Containe
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__COST:
+				getCost().clear();
+				return;
 			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__ENTITY_TYPE:
 				setEntityType((SdnNodePerformanceType)null);
 				return;
@@ -251,6 +301,8 @@ public class AdaptableSdnNodePerformanceImpl extends MinimalEObjectImpl.Containe
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__COST:
+				return cost != null && !cost.isEmpty();
 			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__ENTITY_TYPE:
 				return entityType != null;
 			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__NAME:
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/AdaptableVariableImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e79b96eb4b3e26059a22fc4b28f1792521ca0cd8
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptableVariableImpl.java
@@ -0,0 +1,223 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import tools.descartes.dni.dnimm3.Variable;
+
+import tools.descartes.dni.dnimm3ap.AdaptableVariable;
+import tools.descartes.dni.dnimm3ap.Cost;
+import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptable 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#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AdaptableVariableImpl extends MinimalEObjectImpl.Container implements AdaptableVariable {
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> cost;
+
+	/**
+	 * 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() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DNIAPPackage.Literals.ADAPTABLE_VARIABLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<Cost> getCost() {
+		if (cost == null) {
+			cost = new EObjectContainmentEList<Cost>(Cost.class, this, DNIAPPackage.ADAPTABLE_VARIABLE__COST);
+		}
+		return cost;
+	}
+
+	/**
+	 * <!-- 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 -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+				return ((InternalEList<?>)getCost()).basicRemove(otherEnd, msgs);
+			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
+				return basicSetParameter(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+				return getCost();
+			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
+				return getParameter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+				getCost().clear();
+				getCost().addAll((Collection<? extends Cost>)newValue);
+				return;
+			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
+				setParameter((Variable)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+				getCost().clear();
+				return;
+			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
+				setParameter((Variable)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+				return cost != null && !cost.isEmpty();
+			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
+				return parameter != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //AdaptableVariableImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationGroupsImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationGroupsImpl.java
index 0ea709caa985b2bdd5fde259f60aaca7a89b44e4..905666270f28af208859440bc296c82faf8b29f3 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationGroupsImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationGroupsImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationPointsImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationPointsImpl.java
index 85d3249eca4dcc2a9c73ae960240d7fff2388d4a..b7267a247cb0836ff71d4f19e306442993550f9d 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationPointsImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationPointsImpl.java
@@ -4,14 +4,18 @@ package tools.descartes.dni.dnimm3ap.impl;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
 import tools.descartes.dni.dnimm3.NetworkInfrastructure;
+
 import tools.descartes.dni.dnimm3ap.AdaptationGroups;
 import tools.descartes.dni.dnimm3ap.AdaptationPoints;
-import tools.descartes.dni.dnimm3ap.AdaptationRepositories;
+import tools.descartes.dni.dnimm3ap.AdaptationRepository;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -38,7 +42,7 @@ public class AdaptationPointsImpl extends MinimalEObjectImpl.Container implement
 	 * @generated
 	 * @ordered
 	 */
-	protected AdaptationRepositories repositories;
+	protected AdaptationRepository repositories;
 
 	/**
 	 * The cached value of the '{@link #getGroups() <em>Groups</em>}' containment reference.
@@ -84,7 +88,7 @@ public class AdaptationPointsImpl extends MinimalEObjectImpl.Container implement
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AdaptationRepositories getRepositories() {
+	public AdaptationRepository getRepositories() {
 		return repositories;
 	}
 
@@ -93,8 +97,8 @@ public class AdaptationPointsImpl extends MinimalEObjectImpl.Container implement
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetRepositories(AdaptationRepositories newRepositories, NotificationChain msgs) {
-		AdaptationRepositories oldRepositories = repositories;
+	public NotificationChain basicSetRepositories(AdaptationRepository newRepositories, NotificationChain msgs) {
+		AdaptationRepository oldRepositories = repositories;
 		repositories = newRepositories;
 		if (eNotificationRequired()) {
 			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.ADAPTATION_POINTS__REPOSITORIES, oldRepositories, newRepositories);
@@ -108,7 +112,7 @@ public class AdaptationPointsImpl extends MinimalEObjectImpl.Container implement
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setRepositories(AdaptationRepositories newRepositories) {
+	public void setRepositories(AdaptationRepository newRepositories) {
 		if (newRepositories != repositories) {
 			NotificationChain msgs = null;
 			if (repositories != null)
@@ -243,12 +247,11 @@ public class AdaptationPointsImpl extends MinimalEObjectImpl.Container implement
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case DNIAPPackage.ADAPTATION_POINTS__REPOSITORIES:
-				setRepositories((AdaptationRepositories)newValue);
+				setRepositories((AdaptationRepository)newValue);
 				return;
 			case DNIAPPackage.ADAPTATION_POINTS__GROUPS:
 				setGroups((AdaptationGroups)newValue);
@@ -269,7 +272,7 @@ public class AdaptationPointsImpl extends MinimalEObjectImpl.Container implement
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case DNIAPPackage.ADAPTATION_POINTS__REPOSITORIES:
-				setRepositories((AdaptationRepositories)null);
+				setRepositories((AdaptationRepository)null);
 				return;
 			case DNIAPPackage.ADAPTATION_POINTS__GROUPS:
 				setGroups((AdaptationGroups)null);
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationRepositoriesImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationRepositoryImpl.java
similarity index 73%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationRepositoriesImpl.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationRepositoryImpl.java
index b40748cb4f6480194ee2823dba649e37302632a0..9c99eba3a47144ed9ebeae3163a4007d0234bfb0 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationRepositoriesImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AdaptationRepositoryImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
@@ -25,30 +25,30 @@ import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterface;
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterfacePerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableNode;
 import tools.descartes.dni.dnimm3ap.AdaptableSdnNodePerformance;
-import tools.descartes.dni.dnimm3ap.AdaptationRepositories;
+import tools.descartes.dni.dnimm3ap.AdaptationRepository;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Adaptation Repositories</b></em>'.
+ * An implementation of the model object '<em><b>Adaptation Repository</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getNodes <em>Nodes</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getEndPerformances <em>End Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getIntermediatePerformances <em>Intermediate Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getSdnNodePerformances <em>Sdn Node Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getNetworkInterfaces <em>Network Interfaces</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getNetworkInterfacePerformances <em>Network Interface Performances</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getLinks <em>Links</em>}</li>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoriesImpl#getLinkPerformances <em>Link Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getNodes <em>Nodes</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getEndPerformances <em>End Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getIntermediatePerformances <em>Intermediate Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getSdnNodePerformances <em>Sdn Node Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getNetworkInterfaces <em>Network Interfaces</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getNetworkInterfacePerformances <em>Network Interface Performances</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getLinks <em>Links</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AdaptationRepositoryImpl#getLinkPerformances <em>Link Performances</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container implements AdaptationRepositories {
+public class AdaptationRepositoryImpl extends MinimalEObjectImpl.Container implements AdaptationRepository {
 	/**
 	 * The cached value of the '{@link #getNodes() <em>Nodes</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -134,7 +134,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AdaptationRepositoriesImpl() {
+	protected AdaptationRepositoryImpl() {
 		super();
 	}
 
@@ -145,7 +145,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return DNIAPPackage.Literals.ADAPTATION_REPOSITORIES;
+		return DNIAPPackage.Literals.ADAPTATION_REPOSITORY;
 	}
 
 	/**
@@ -155,7 +155,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableNode> getNodes() {
 		if (nodes == null) {
-			nodes = new EObjectContainmentEList<AdaptableNode>(AdaptableNode.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__NODES);
+			nodes = new EObjectContainmentEList<AdaptableNode>(AdaptableNode.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__NODES);
 		}
 		return nodes;
 	}
@@ -167,7 +167,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableEndPerformance> getEndPerformances() {
 		if (endPerformances == null) {
-			endPerformances = new EObjectContainmentEList<AdaptableEndPerformance>(AdaptableEndPerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__END_PERFORMANCES);
+			endPerformances = new EObjectContainmentEList<AdaptableEndPerformance>(AdaptableEndPerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__END_PERFORMANCES);
 		}
 		return endPerformances;
 	}
@@ -179,7 +179,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableIntermediatePerformance> getIntermediatePerformances() {
 		if (intermediatePerformances == null) {
-			intermediatePerformances = new EObjectContainmentEList<AdaptableIntermediatePerformance>(AdaptableIntermediatePerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES);
+			intermediatePerformances = new EObjectContainmentEList<AdaptableIntermediatePerformance>(AdaptableIntermediatePerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES);
 		}
 		return intermediatePerformances;
 	}
@@ -191,7 +191,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableSdnNodePerformance> getSdnNodePerformances() {
 		if (sdnNodePerformances == null) {
-			sdnNodePerformances = new EObjectContainmentEList<AdaptableSdnNodePerformance>(AdaptableSdnNodePerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES);
+			sdnNodePerformances = new EObjectContainmentEList<AdaptableSdnNodePerformance>(AdaptableSdnNodePerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES);
 		}
 		return sdnNodePerformances;
 	}
@@ -203,7 +203,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableNetworkInterface> getNetworkInterfaces() {
 		if (networkInterfaces == null) {
-			networkInterfaces = new EObjectContainmentEList<AdaptableNetworkInterface>(AdaptableNetworkInterface.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES);
+			networkInterfaces = new EObjectContainmentEList<AdaptableNetworkInterface>(AdaptableNetworkInterface.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACES);
 		}
 		return networkInterfaces;
 	}
@@ -215,7 +215,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableNetworkInterfacePerformance> getNetworkInterfacePerformances() {
 		if (networkInterfacePerformances == null) {
-			networkInterfacePerformances = new EObjectContainmentEList<AdaptableNetworkInterfacePerformance>(AdaptableNetworkInterfacePerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES);
+			networkInterfacePerformances = new EObjectContainmentEList<AdaptableNetworkInterfacePerformance>(AdaptableNetworkInterfacePerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES);
 		}
 		return networkInterfacePerformances;
 	}
@@ -227,7 +227,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableLink> getLinks() {
 		if (links == null) {
-			links = new EObjectContainmentEList<AdaptableLink>(AdaptableLink.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__LINKS);
+			links = new EObjectContainmentEList<AdaptableLink>(AdaptableLink.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__LINKS);
 		}
 		return links;
 	}
@@ -239,7 +239,7 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	 */
 	public List<AdaptableLinkPerformance> getLinkPerformances() {
 		if (linkPerformances == null) {
-			linkPerformances = new EObjectContainmentEList<AdaptableLinkPerformance>(AdaptableLinkPerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES);
+			linkPerformances = new EObjectContainmentEList<AdaptableLinkPerformance>(AdaptableLinkPerformance.class, this, DNIAPPackage.ADAPTATION_REPOSITORY__LINK_PERFORMANCES);
 		}
 		return linkPerformances;
 	}
@@ -252,21 +252,21 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NODES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NODES:
 				return ((InternalEList<?>)getNodes()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__END_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__END_PERFORMANCES:
 				return ((InternalEList<?>)getEndPerformances()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES:
 				return ((InternalEList<?>)getIntermediatePerformances()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES:
 				return ((InternalEList<?>)getSdnNodePerformances()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACES:
 				return ((InternalEList<?>)getNetworkInterfaces()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES:
 				return ((InternalEList<?>)getNetworkInterfacePerformances()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINKS:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINKS:
 				return ((InternalEList<?>)getLinks()).basicRemove(otherEnd, msgs);
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINK_PERFORMANCES:
 				return ((InternalEList<?>)getLinkPerformances()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
@@ -280,21 +280,21 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NODES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NODES:
 				return getNodes();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__END_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__END_PERFORMANCES:
 				return getEndPerformances();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES:
 				return getIntermediatePerformances();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES:
 				return getSdnNodePerformances();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACES:
 				return getNetworkInterfaces();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES:
 				return getNetworkInterfacePerformances();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINKS:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINKS:
 				return getLinks();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINK_PERFORMANCES:
 				return getLinkPerformances();
 		}
 		return super.eGet(featureID, resolve, coreType);
@@ -309,35 +309,35 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NODES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NODES:
 				getNodes().clear();
 				getNodes().addAll((Collection<? extends AdaptableNode>)newValue);
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__END_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__END_PERFORMANCES:
 				getEndPerformances().clear();
 				getEndPerformances().addAll((Collection<? extends AdaptableEndPerformance>)newValue);
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES:
 				getIntermediatePerformances().clear();
 				getIntermediatePerformances().addAll((Collection<? extends AdaptableIntermediatePerformance>)newValue);
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES:
 				getSdnNodePerformances().clear();
 				getSdnNodePerformances().addAll((Collection<? extends AdaptableSdnNodePerformance>)newValue);
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACES:
 				getNetworkInterfaces().clear();
 				getNetworkInterfaces().addAll((Collection<? extends AdaptableNetworkInterface>)newValue);
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES:
 				getNetworkInterfacePerformances().clear();
 				getNetworkInterfacePerformances().addAll((Collection<? extends AdaptableNetworkInterfacePerformance>)newValue);
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINKS:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINKS:
 				getLinks().clear();
 				getLinks().addAll((Collection<? extends AdaptableLink>)newValue);
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINK_PERFORMANCES:
 				getLinkPerformances().clear();
 				getLinkPerformances().addAll((Collection<? extends AdaptableLinkPerformance>)newValue);
 				return;
@@ -353,28 +353,28 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NODES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NODES:
 				getNodes().clear();
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__END_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__END_PERFORMANCES:
 				getEndPerformances().clear();
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES:
 				getIntermediatePerformances().clear();
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES:
 				getSdnNodePerformances().clear();
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACES:
 				getNetworkInterfaces().clear();
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES:
 				getNetworkInterfacePerformances().clear();
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINKS:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINKS:
 				getLinks().clear();
 				return;
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINK_PERFORMANCES:
 				getLinkPerformances().clear();
 				return;
 		}
@@ -389,24 +389,24 @@ public class AdaptationRepositoriesImpl extends MinimalEObjectImpl.Container imp
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NODES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NODES:
 				return nodes != null && !nodes.isEmpty();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__END_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__END_PERFORMANCES:
 				return endPerformances != null && !endPerformances.isEmpty();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES:
 				return intermediatePerformances != null && !intermediatePerformances.isEmpty();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES:
 				return sdnNodePerformances != null && !sdnNodePerformances.isEmpty();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACES:
 				return networkInterfaces != null && !networkInterfaces.isEmpty();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES:
 				return networkInterfacePerformances != null && !networkInterfacePerformances.isEmpty();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINKS:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINKS:
 				return links != null && !links.isEmpty();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINK_PERFORMANCES:
 				return linkPerformances != null && !linkPerformances.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
-} //AdaptationRepositoriesImpl
+} //AdaptationRepositoryImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeConstantLongImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeConstantLongImpl.java
deleted file mode 100644
index 9fa8523cf191effc8c66340ccbf282bb24a82966..0000000000000000000000000000000000000000
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeConstantLongImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- */
-package tools.descartes.dni.dnimm3ap.impl;
-
-import org.eclipse.emf.ecore.EClass;
-
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
-import tools.descartes.dni.dnimm3ap.AlternativeConstantLong;
-import tools.descartes.dni.dnimm3ap.DNIAPPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Alternative Constant Long</b></em>'.
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public abstract class AlternativeConstantLongImpl extends MinimalEObjectImpl.Container implements AlternativeConstantLong {
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected AlternativeConstantLongImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return DNIAPPackage.Literals.ALTERNATIVE_CONSTANT_LONG;
-	}
-
-} //AlternativeConstantLongImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeConstantLongVariableSetImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeDependencySetImpl.java
similarity index 51%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeConstantLongVariableSetImpl.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeDependencySetImpl.java
index cc82de235eb15ae0017e3b500ecd97df0cec3701..e3cc870099c004a6899ee278e7162f70d101d1c6 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeConstantLongVariableSetImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeDependencySetImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
@@ -12,29 +12,29 @@ import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
-import tools.descartes.dni.dnimm3.ConstantLongVariable;
-
-import tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet;
-import tools.descartes.dni.dnimm3ap.AlternativeParameterSet;
+import tools.descartes.dni.dnimm3ap.AdaptableDependency;
+import tools.descartes.dni.dnimm3ap.AlternativeDependencySet;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Alternative Constant Long Variable Set</b></em>'.
+ * An implementation of the model object '<em><b>Alternative Dependency Set</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AlternativeConstantLongVariableSetImpl#getAlternative <em>Alternative</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.AlternativeDependencySetImpl#getAlternative <em>Alternative</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantLongImpl implements AlternativeConstantLongVariableSet {
+public class AlternativeDependencySetImpl extends MinimalEObjectImpl.Container implements AlternativeDependencySet {
 	/**
 	 * The cached value of the '{@link #getAlternative() <em>Alternative</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -43,14 +43,14 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<ConstantLongVariable> alternative;
+	protected EList<AdaptableDependency> alternative;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AlternativeConstantLongVariableSetImpl() {
+	protected AlternativeDependencySetImpl() {
 		super();
 	}
 
@@ -61,7 +61,7 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return DNIAPPackage.Literals.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET;
+		return DNIAPPackage.Literals.ALTERNATIVE_DEPENDENCY_SET;
 	}
 
 	/**
@@ -69,9 +69,9 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public List<ConstantLongVariable> getAlternative() {
+	public List<AdaptableDependency> getAlternative() {
 		if (alternative == null) {
-			alternative = new EObjectContainmentEList<ConstantLongVariable>(ConstantLongVariable.class, this, DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE);
+			alternative = new EObjectContainmentEList<AdaptableDependency>(AdaptableDependency.class, this, DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE);
 		}
 		return alternative;
 	}
@@ -84,7 +84,7 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE:
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE:
 				return ((InternalEList<?>)getAlternative()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
@@ -98,7 +98,7 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE:
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE:
 				return getAlternative();
 		}
 		return super.eGet(featureID, resolve, coreType);
@@ -113,9 +113,9 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE:
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE:
 				getAlternative().clear();
-				getAlternative().addAll((Collection<? extends ConstantLongVariable>)newValue);
+				getAlternative().addAll((Collection<? extends AdaptableDependency>)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -129,7 +129,7 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE:
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE:
 				getAlternative().clear();
 				return;
 		}
@@ -144,42 +144,10 @@ public class AlternativeConstantLongVariableSetImpl extends AlternativeConstantL
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE:
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE:
 				return alternative != null && !alternative.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
-		if (baseClass == AlternativeParameterSet.class) {
-			switch (derivedFeatureID) {
-				case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE: return DNIAPPackage.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE;
-				default: return -1;
-			}
-		}
-		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
-		if (baseClass == AlternativeParameterSet.class) {
-			switch (baseFeatureID) {
-				case DNIAPPackage.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE: return DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE;
-				default: return -1;
-			}
-		}
-		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
-	}
-
-} //AlternativeConstantLongVariableSetImpl
+} //AlternativeDependencySetImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeVariableSetImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeVariableSetImpl.java
index 4e9c13fa78804e10e88de5e7b835ebe672ac7870..7969a72cc015ecf30d6e57c4fbe11af757a6f329 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeVariableSetImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeVariableSetImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
@@ -12,12 +12,12 @@ import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
-import tools.descartes.dni.dnimm3.Variable;
-
-import tools.descartes.dni.dnimm3ap.AlternativeParameterSet;
+import tools.descartes.dni.dnimm3ap.AdaptableVariable;
 import tools.descartes.dni.dnimm3ap.AlternativeVariableSet;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
@@ -34,7 +34,7 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  *
  * @generated
  */
-public class AlternativeVariableSetImpl extends AlternativeVariableImpl implements AlternativeVariableSet {
+public class AlternativeVariableSetImpl extends MinimalEObjectImpl.Container implements AlternativeVariableSet {
 	/**
 	 * The cached value of the '{@link #getAlternative() <em>Alternative</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -43,7 +43,7 @@ public class AlternativeVariableSetImpl extends AlternativeVariableImpl implemen
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Variable> alternative;
+	protected EList<AdaptableVariable> alternative;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -69,9 +69,9 @@ public class AlternativeVariableSetImpl extends AlternativeVariableImpl implemen
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public List<Variable> getAlternative() {
+	public List<AdaptableVariable> getAlternative() {
 		if (alternative == null) {
-			alternative = new EObjectContainmentEList<Variable>(Variable.class, this, DNIAPPackage.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE);
+			alternative = new EObjectContainmentEList<AdaptableVariable>(AdaptableVariable.class, this, DNIAPPackage.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE);
 		}
 		return alternative;
 	}
@@ -115,7 +115,7 @@ public class AlternativeVariableSetImpl extends AlternativeVariableImpl implemen
 		switch (featureID) {
 			case DNIAPPackage.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE:
 				getAlternative().clear();
-				getAlternative().addAll((Collection<? extends Variable>)newValue);
+				getAlternative().addAll((Collection<? extends AdaptableVariable>)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -150,36 +150,4 @@ public class AlternativeVariableSetImpl extends AlternativeVariableImpl implemen
 		return super.eIsSet(featureID);
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
-		if (baseClass == AlternativeParameterSet.class) {
-			switch (derivedFeatureID) {
-				case DNIAPPackage.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE: return DNIAPPackage.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE;
-				default: return -1;
-			}
-		}
-		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
-		if (baseClass == AlternativeParameterSet.class) {
-			switch (baseFeatureID) {
-				case DNIAPPackage.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE: return DNIAPPackage.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE;
-				default: return -1;
-			}
-		}
-		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
-	}
-
 } //AlternativeVariableSetImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/CostImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/CostImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..525acbc981b81cbca0863e93133f2503b75f7fe4
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/CostImpl.java
@@ -0,0 +1,176 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import tools.descartes.dni.dnimm3ap.Cost;
+import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.ICostFunction;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cost</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.CostImpl#getCostFunction <em>Cost Function</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class CostImpl extends MinimalEObjectImpl.Container implements Cost {
+	/**
+	 * The cached value of the '{@link #getCostFunction() <em>Cost Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCostFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected ICostFunction costFunction;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CostImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DNIAPPackage.Literals.COST;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ICostFunction getCostFunction() {
+		return costFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCostFunction(ICostFunction newCostFunction, NotificationChain msgs) {
+		ICostFunction oldCostFunction = costFunction;
+		costFunction = newCostFunction;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DNIAPPackage.COST__COST_FUNCTION, oldCostFunction, newCostFunction);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCostFunction(ICostFunction newCostFunction) {
+		if (newCostFunction != costFunction) {
+			NotificationChain msgs = null;
+			if (costFunction != null)
+				msgs = ((InternalEObject)costFunction).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.COST__COST_FUNCTION, null, msgs);
+			if (newCostFunction != null)
+				msgs = ((InternalEObject)newCostFunction).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DNIAPPackage.COST__COST_FUNCTION, null, msgs);
+			msgs = basicSetCostFunction(newCostFunction, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.COST__COST_FUNCTION, newCostFunction, newCostFunction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DNIAPPackage.COST__COST_FUNCTION:
+				return basicSetCostFunction(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DNIAPPackage.COST__COST_FUNCTION:
+				return getCostFunction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DNIAPPackage.COST__COST_FUNCTION:
+				setCostFunction((ICostFunction)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.COST__COST_FUNCTION:
+				setCostFunction((ICostFunction)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.COST__COST_FUNCTION:
+				return costFunction != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CostImpl
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 8bbbd593106910e4d125ec81ac2e43f7ee42008e..f69f6dca7a151b5b1421141557d8b579ce8d5f38 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
@@ -57,7 +57,7 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 	public EObject create(EClass eClass) {
 		switch (eClass.getClassifierID()) {
 			case DNIAPPackage.ADAPTATION_POINTS: return createAdaptationPoints();
-			case DNIAPPackage.ADAPTATION_REPOSITORIES: return createAdaptationRepositories();
+			case DNIAPPackage.ADAPTATION_REPOSITORY: return createAdaptationRepository();
 			case DNIAPPackage.ADAPTABLE_NODE: return createAdaptableNode();
 			case DNIAPPackage.ADAPTABLE_LINK: return createAdaptableLink();
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE: return createAdaptableLinkPerformance();
@@ -69,8 +69,13 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 			case DNIAPPackage.ADAPTATION_GROUPS: return createAdaptationGroups();
 			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.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET: return createAlternativeConstantLongVariableSet();
+			case DNIAPPackage.ADAPTABLE_VARIABLE: return createAdaptableVariable();
+			case DNIAPPackage.INVESTMENT: return createInvestment();
+			case DNIAPPackage.HANDLING_TIME: return createHandlingTime();
+			case DNIAPPackage.FIXED_COST_FUNCTION: return createFixedCostFunction();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -91,9 +96,9 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AdaptationRepositories createAdaptationRepositories() {
-		AdaptationRepositoriesImpl adaptationRepositories = new AdaptationRepositoriesImpl();
-		return adaptationRepositories;
+	public AdaptationRepository createAdaptationRepository() {
+		AdaptationRepositoryImpl adaptationRepository = new AdaptationRepositoryImpl();
+		return adaptationRepository;
 	}
 
 	/**
@@ -206,6 +211,26 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 		return linkAdaptationGroup;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AlternativeDependencySet createAlternativeDependencySet() {
+		AlternativeDependencySetImpl alternativeDependencySet = new AlternativeDependencySetImpl();
+		return alternativeDependencySet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdaptableDependency createAdaptableDependency() {
+		AdaptableDependencyImpl adaptableDependency = new AdaptableDependencyImpl();
+		return adaptableDependency;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -221,9 +246,39 @@ public class DNIAPFactoryImpl extends EFactoryImpl implements DNIAPFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AlternativeConstantLongVariableSet createAlternativeConstantLongVariableSet() {
-		AlternativeConstantLongVariableSetImpl alternativeConstantLongVariableSet = new AlternativeConstantLongVariableSetImpl();
-		return alternativeConstantLongVariableSet;
+	public AdaptableVariable createAdaptableVariable() {
+		AdaptableVariableImpl adaptableVariable = new AdaptableVariableImpl();
+		return adaptableVariable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Investment createInvestment() {
+		InvestmentImpl investment = new InvestmentImpl();
+		return investment;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HandlingTime createHandlingTime() {
+		HandlingTimeImpl handlingTime = new HandlingTimeImpl();
+		return handlingTime;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FixedCostFunction createFixedCostFunction() {
+		FixedCostFunctionImpl fixedCostFunction = new FixedCostFunctionImpl();
+		return fixedCostFunction;
 	}
 
 	/**
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 6a026d93e2c225c886dcbcebb1ebe99105210bd3..b520acd197eb06b4c870d47af21f5a62d7035453 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,7 @@ import org.eclipse.emf.ecore.impl.EPackageImpl;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
 
+import tools.descartes.dni.dnimm3ap.AdaptableDependency;
 import tools.descartes.dni.dnimm3ap.AdaptableEndPerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableIntermediatePerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableLink;
@@ -22,19 +23,25 @@ import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterface;
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterfacePerformance;
 import tools.descartes.dni.dnimm3ap.AdaptableNode;
 import tools.descartes.dni.dnimm3ap.AdaptableSdnNodePerformance;
+import tools.descartes.dni.dnimm3ap.AdaptableVariable;
 import tools.descartes.dni.dnimm3ap.AdaptationGroups;
 import tools.descartes.dni.dnimm3ap.AdaptationPoints;
-import tools.descartes.dni.dnimm3ap.AdaptationRepositories;
-import tools.descartes.dni.dnimm3ap.AlternativeConstantLong;
-import tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet;
-import tools.descartes.dni.dnimm3ap.AlternativeParameterSet;
+import tools.descartes.dni.dnimm3ap.AdaptationRepository;
+import tools.descartes.dni.dnimm3ap.AlternativeDependency;
+import tools.descartes.dni.dnimm3ap.AlternativeDependencySet;
 import tools.descartes.dni.dnimm3ap.AlternativeVariable;
 import tools.descartes.dni.dnimm3ap.AlternativeVariableSet;
+import tools.descartes.dni.dnimm3ap.Cost;
 import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.FixedCostFunction;
+import tools.descartes.dni.dnimm3ap.HandlingTime;
 import tools.descartes.dni.dnimm3ap.IAdaptableEntity;
 import tools.descartes.dni.dnimm3ap.IAdaptableGroupableEntity;
 import tools.descartes.dni.dnimm3ap.IAdaptationGroup;
+import tools.descartes.dni.dnimm3ap.ICostFunction;
+import tools.descartes.dni.dnimm3ap.ICostable;
+import tools.descartes.dni.dnimm3ap.Investment;
 import tools.descartes.dni.dnimm3ap.LinkAdaptationGroup;
 import tools.descartes.dni.dnimm3ap.NodeAdaptationGroup;
 
@@ -57,7 +64,7 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass adaptationRepositoriesEClass = null;
+	private EClass adaptationRepositoryEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -162,7 +169,21 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass alternativeParameterSetEClass = null;
+	private EClass alternativeDependencyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass alternativeDependencySetEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptableDependencyEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -183,14 +204,49 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass alternativeConstantLongEClass = null;
+	private EClass adaptableVariableEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass iCostableEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass costEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass investmentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass handlingTimeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass iCostFunctionEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass alternativeConstantLongVariableSetEClass = null;
+	private EClass fixedCostFunctionEClass = null;
 
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
@@ -298,8 +354,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAdaptationRepositories() {
-		return adaptationRepositoriesEClass;
+	public EClass getAdaptationRepository() {
+		return adaptationRepositoryEClass;
 	}
 
 	/**
@@ -307,8 +363,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_Nodes() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(0);
+	public EReference getAdaptationRepository_Nodes() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -316,8 +372,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_EndPerformances() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(1);
+	public EReference getAdaptationRepository_EndPerformances() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -325,8 +381,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_IntermediatePerformances() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(2);
+	public EReference getAdaptationRepository_IntermediatePerformances() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -334,8 +390,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_SdnNodePerformances() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(3);
+	public EReference getAdaptationRepository_SdnNodePerformances() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -343,8 +399,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_NetworkInterfaces() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(4);
+	public EReference getAdaptationRepository_NetworkInterfaces() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -352,8 +408,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_NetworkInterfacePerformances() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(5);
+	public EReference getAdaptationRepository_NetworkInterfacePerformances() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -361,8 +417,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_Links() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(6);
+	public EReference getAdaptationRepository_Links() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -370,8 +426,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptationRepositories_LinkPerformances() {
-		return (EReference)adaptationRepositoriesEClass.getEStructuralFeatures().get(7);
+	public EReference getAdaptationRepository_LinkPerformances() {
+		return (EReference)adaptationRepositoryEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -604,7 +660,7 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptableIntermediatePerformance_SwitchingCapacityPPS() {
+	public EReference getAdaptableIntermediatePerformance_ForwardingBandwidthBPS() {
 		return (EReference)adaptableIntermediatePerformanceEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -613,7 +669,7 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAdaptableIntermediatePerformance_ForwardingBandwidthBPS() {
+	public EReference getAdaptableIntermediatePerformance_SwitchingCapacityPPS() {
 		return (EReference)adaptableIntermediatePerformanceEClass.getEStructuralFeatures().get(3);
 	}
 
@@ -793,8 +849,17 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAlternativeParameterSet() {
-		return alternativeParameterSetEClass;
+	public EClass getAlternativeDependency() {
+		return alternativeDependencyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAlternativeDependencySet() {
+		return alternativeDependencySetEClass;
 	}
 
 	/**
@@ -802,8 +867,26 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getAlternativeParameterSet_Alternative() {
-		return (EReference)alternativeParameterSetEClass.getEStructuralFeatures().get(0);
+	public EReference getAlternativeDependencySet_Alternative() {
+		return (EReference)alternativeDependencySetEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAdaptableDependency() {
+		return adaptableDependencyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAdaptableDependency_Parameter() {
+		return (EReference)adaptableDependencyEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -829,8 +912,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAlternativeConstantLong() {
-		return alternativeConstantLongEClass;
+	public EReference getAlternativeVariableSet_Alternative() {
+		return (EReference)alternativeVariableSetEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -838,8 +921,98 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getAlternativeConstantLongVariableSet() {
-		return alternativeConstantLongVariableSetEClass;
+	public EClass getAdaptableVariable() {
+		return adaptableVariableEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAdaptableVariable_Parameter() {
+		return (EReference)adaptableVariableEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getICostable() {
+		return iCostableEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getICostable_Cost() {
+		return (EReference)iCostableEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCost() {
+		return costEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCost_CostFunction() {
+		return (EReference)costEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getInvestment() {
+		return investmentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getHandlingTime() {
+		return handlingTimeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getICostFunction() {
+		return iCostFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFixedCostFunction() {
+		return fixedCostFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFixedCostFunction_Value() {
+		return (EAttribute)fixedCostFunctionEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -875,15 +1048,15 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		createEReference(adaptationPointsEClass, ADAPTATION_POINTS__GROUPS);
 		createEReference(adaptationPointsEClass, ADAPTATION_POINTS__NETWORK_INFRASTRUCTURE);
 
-		adaptationRepositoriesEClass = createEClass(ADAPTATION_REPOSITORIES);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__NODES);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__END_PERFORMANCES);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__NETWORK_INTERFACES);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__LINKS);
-		createEReference(adaptationRepositoriesEClass, ADAPTATION_REPOSITORIES__LINK_PERFORMANCES);
+		adaptationRepositoryEClass = createEClass(ADAPTATION_REPOSITORY);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__NODES);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__END_PERFORMANCES);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__NETWORK_INTERFACES);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__LINKS);
+		createEReference(adaptationRepositoryEClass, ADAPTATION_REPOSITORY__LINK_PERFORMANCES);
 
 		iAdaptableEntityEClass = createEClass(IADAPTABLE_ENTITY);
 		createEReference(iAdaptableEntityEClass, IADAPTABLE_ENTITY__ENTITY_TYPE);
@@ -916,8 +1089,8 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		adaptableIntermediatePerformanceEClass = createEClass(ADAPTABLE_INTERMEDIATE_PERFORMANCE);
 		createEAttribute(adaptableIntermediatePerformanceEClass, ADAPTABLE_INTERMEDIATE_PERFORMANCE__NAME);
 		createEReference(adaptableIntermediatePerformanceEClass, ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY);
-		createEReference(adaptableIntermediatePerformanceEClass, ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS);
 		createEReference(adaptableIntermediatePerformanceEClass, ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS);
+		createEReference(adaptableIntermediatePerformanceEClass, ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS);
 
 		adaptableSdnNodePerformanceEClass = createEClass(ADAPTABLE_SDN_NODE_PERFORMANCE);
 		createEAttribute(adaptableSdnNodePerformanceEClass, ADAPTABLE_SDN_NODE_PERFORMANCE__NAME);
@@ -945,16 +1118,36 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		linkAdaptationGroupEClass = createEClass(LINK_ADAPTATION_GROUP);
 		createEReference(linkAdaptationGroupEClass, LINK_ADAPTATION_GROUP__ITEMS);
 
-		alternativeParameterSetEClass = createEClass(ALTERNATIVE_PARAMETER_SET);
-		createEReference(alternativeParameterSetEClass, ALTERNATIVE_PARAMETER_SET__ALTERNATIVE);
+		alternativeDependencyEClass = createEClass(ALTERNATIVE_DEPENDENCY);
+
+		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);
+
+		adaptableVariableEClass = createEClass(ADAPTABLE_VARIABLE);
+		createEReference(adaptableVariableEClass, ADAPTABLE_VARIABLE__PARAMETER);
+
+		iCostableEClass = createEClass(ICOSTABLE);
+		createEReference(iCostableEClass, ICOSTABLE__COST);
+
+		costEClass = createEClass(COST);
+		createEReference(costEClass, COST__COST_FUNCTION);
+
+		investmentEClass = createEClass(INVESTMENT);
+
+		handlingTimeEClass = createEClass(HANDLING_TIME);
 
-		alternativeConstantLongEClass = createEClass(ALTERNATIVE_CONSTANT_LONG);
+		iCostFunctionEClass = createEClass(ICOST_FUNCTION);
 
-		alternativeConstantLongVariableSetEClass = createEClass(ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET);
+		fixedCostFunctionEClass = createEClass(FIXED_COST_FUNCTION);
+		createEAttribute(fixedCostFunctionEClass, FIXED_COST_FUNCTION__VALUE);
 	}
 
 	/**
@@ -986,13 +1179,13 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 
 		// Create type parameters
 		ETypeParameter iAdaptableEntityEClass_T = addETypeParameter(iAdaptableEntityEClass, "T");
-		ETypeParameter alternativeParameterSetEClass_P = addETypeParameter(alternativeParameterSetEClass, "P");
 
 		// Set bounds for type parameters
 		EGenericType g1 = createEGenericType(theDNIPackage.getITypedEntity());
 		iAdaptableEntityEClass_T.getEBounds().add(g1);
 
 		// Add supertypes to classes
+		iAdaptableEntityEClass.getESuperTypes().add(this.getICostable());
 		g1 = createEGenericType(this.getIAdaptableEntity());
 		EGenericType g2 = createEGenericType(theDNIPackage.getNodeType());
 		g1.getETypeArguments().add(g2);
@@ -1033,34 +1226,29 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		iAdaptationGroupEClass.getESuperTypes().add(theDNIPackage.getIdentifier());
 		nodeAdaptationGroupEClass.getESuperTypes().add(this.getIAdaptationGroup());
 		linkAdaptationGroupEClass.getESuperTypes().add(this.getIAdaptationGroup());
-		g1 = createEGenericType(this.getAlternativeVariable());
-		alternativeVariableSetEClass.getEGenericSuperTypes().add(g1);
-		g1 = createEGenericType(this.getAlternativeParameterSet());
-		g2 = createEGenericType(theDNIPackage.getVariable());
-		g1.getETypeArguments().add(g2);
-		alternativeVariableSetEClass.getEGenericSuperTypes().add(g1);
-		g1 = createEGenericType(this.getAlternativeConstantLong());
-		alternativeConstantLongVariableSetEClass.getEGenericSuperTypes().add(g1);
-		g1 = createEGenericType(this.getAlternativeParameterSet());
-		g2 = createEGenericType(theDNIPackage.getConstantLongVariable());
-		g1.getETypeArguments().add(g2);
-		alternativeConstantLongVariableSetEClass.getEGenericSuperTypes().add(g1);
+		alternativeDependencySetEClass.getESuperTypes().add(this.getAlternativeDependency());
+		adaptableDependencyEClass.getESuperTypes().add(this.getICostable());
+		alternativeVariableSetEClass.getESuperTypes().add(this.getAlternativeVariable());
+		adaptableVariableEClass.getESuperTypes().add(this.getICostable());
+		investmentEClass.getESuperTypes().add(this.getCost());
+		handlingTimeEClass.getESuperTypes().add(this.getCost());
+		fixedCostFunctionEClass.getESuperTypes().add(this.getICostFunction());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(adaptationPointsEClass, AdaptationPoints.class, "AdaptationPoints", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getAdaptationPoints_Repositories(), this.getAdaptationRepositories(), null, "repositories", null, 0, 1, AdaptationPoints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationPoints_Repositories(), this.getAdaptationRepository(), null, "repositories", null, 0, 1, AdaptationPoints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getAdaptationPoints_Groups(), this.getAdaptationGroups(), null, "groups", null, 0, 1, AdaptationPoints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getAdaptationPoints_NetworkInfrastructure(), theDNIPackage.getNetworkInfrastructure(), null, "networkInfrastructure", null, 0, 1, AdaptationPoints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(adaptationRepositoriesEClass, AdaptationRepositories.class, "AdaptationRepositories", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getAdaptationRepositories_Nodes(), this.getAdaptableNode(), null, "nodes", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptationRepositories_EndPerformances(), this.getAdaptableEndPerformance(), null, "endPerformances", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptationRepositories_IntermediatePerformances(), this.getAdaptableIntermediatePerformance(), null, "intermediatePerformances", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptationRepositories_SdnNodePerformances(), this.getAdaptableSdnNodePerformance(), null, "sdnNodePerformances", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptationRepositories_NetworkInterfaces(), this.getAdaptableNetworkInterface(), null, "networkInterfaces", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptationRepositories_NetworkInterfacePerformances(), this.getAdaptableNetworkInterfacePerformance(), null, "networkInterfacePerformances", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptationRepositories_Links(), this.getAdaptableLink(), null, "links", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptationRepositories_LinkPerformances(), this.getAdaptableLinkPerformance(), null, "linkPerformances", null, 0, -1, AdaptationRepositories.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(adaptationRepositoryEClass, AdaptationRepository.class, "AdaptationRepository", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getAdaptationRepository_Nodes(), this.getAdaptableNode(), null, "nodes", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationRepository_EndPerformances(), this.getAdaptableEndPerformance(), null, "endPerformances", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationRepository_IntermediatePerformances(), this.getAdaptableIntermediatePerformance(), null, "intermediatePerformances", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationRepository_SdnNodePerformances(), this.getAdaptableSdnNodePerformance(), null, "sdnNodePerformances", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationRepository_NetworkInterfaces(), this.getAdaptableNetworkInterface(), null, "networkInterfaces", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationRepository_NetworkInterfacePerformances(), this.getAdaptableNetworkInterfacePerformance(), null, "networkInterfacePerformances", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationRepository_Links(), this.getAdaptableLink(), null, "links", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptationRepository_LinkPerformances(), this.getAdaptableLinkPerformance(), null, "linkPerformances", null, 0, -1, AdaptationRepository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(iAdaptableEntityEClass, IAdaptableEntity.class, "IAdaptableEntity", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		g1 = createEGenericType(iAdaptableEntityEClass_T);
@@ -1093,9 +1281,9 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 
 		initEClass(adaptableIntermediatePerformanceEClass, AdaptableIntermediatePerformance.class, "AdaptableIntermediatePerformance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getAdaptableIntermediatePerformance_Name(), theEcorePackage.getEString(), "name", null, 0, 1, AdaptableIntermediatePerformance.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptableIntermediatePerformance_ForwardingLatency(), this.getAlternativeVariable(), null, "forwardingLatency", null, 0, 1, AdaptableIntermediatePerformance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptableIntermediatePerformance_SwitchingCapacityPPS(), this.getAlternativeVariable(), null, "switchingCapacityPPS", null, 0, 1, AdaptableIntermediatePerformance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getAdaptableIntermediatePerformance_ForwardingBandwidthBPS(), this.getAlternativeVariable(), null, "forwardingBandwidthBPS", null, 0, 1, AdaptableIntermediatePerformance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptableIntermediatePerformance_ForwardingLatency(), this.getAlternativeDependency(), null, "forwardingLatency", null, 0, 1, AdaptableIntermediatePerformance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptableIntermediatePerformance_ForwardingBandwidthBPS(), this.getAlternativeDependency(), null, "forwardingBandwidthBPS", null, 0, 1, AdaptableIntermediatePerformance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAdaptableIntermediatePerformance_SwitchingCapacityPPS(), this.getAlternativeDependency(), null, "switchingCapacityPPS", null, 0, 1, AdaptableIntermediatePerformance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(adaptableSdnNodePerformanceEClass, AdaptableSdnNodePerformance.class, "AdaptableSdnNodePerformance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getAdaptableSdnNodePerformance_Name(), theEcorePackage.getEString(), "name", null, 0, 1, AdaptableSdnNodePerformance.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
@@ -1123,17 +1311,36 @@ public class DNIAPPackageImpl extends EPackageImpl implements DNIAPPackage {
 		initEClass(linkAdaptationGroupEClass, LinkAdaptationGroup.class, "LinkAdaptationGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getLinkAdaptationGroup_Items(), this.getAdaptableLink(), this.getAdaptableLink_AdaptationGroup(), "items", null, 0, -1, LinkAdaptationGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(alternativeParameterSetEClass, AlternativeParameterSet.class, "AlternativeParameterSet", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		g1 = createEGenericType(alternativeParameterSetEClass_P);
-		initEReference(getAlternativeParameterSet_Alternative(), g1, null, "alternative", null, 0, -1, AlternativeParameterSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(alternativeDependencyEClass, AlternativeDependency.class, "AlternativeDependency", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		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(alternativeVariableEClass, AlternativeVariable.class, "AlternativeVariable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		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(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);
+
+		initEClass(costEClass, Cost.class, "Cost", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCost_CostFunction(), this.getICostFunction(), null, "costFunction", null, 1, 1, Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(investmentEClass, Investment.class, "Investment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(handlingTimeEClass, HandlingTime.class, "HandlingTime", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
-		initEClass(alternativeConstantLongEClass, AlternativeConstantLong.class, "AlternativeConstantLong", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEClass(iCostFunctionEClass, ICostFunction.class, "ICostFunction", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
-		initEClass(alternativeConstantLongVariableSetEClass, AlternativeConstantLongVariableSet.class, "AlternativeConstantLongVariableSet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEClass(fixedCostFunctionEClass, FixedCostFunction.class, "FixedCostFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFixedCostFunction_Value(), theEcorePackage.getEDouble(), "value", null, 0, 1, FixedCostFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		// Create resource
 		createResource(eNS_URI);
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/FixedCostFunctionImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/FixedCostFunctionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..618da02cc8575ac56366a0074e36fd5990507ac5
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/FixedCostFunctionImpl.java
@@ -0,0 +1,163 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.FixedCostFunction;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fixed Cost Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dni.dnimm3ap.impl.FixedCostFunctionImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FixedCostFunctionImpl extends MinimalEObjectImpl.Container implements FixedCostFunction {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double VALUE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected double value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FixedCostFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DNIAPPackage.Literals.FIXED_COST_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(double newValue) {
+		double oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIAPPackage.FIXED_COST_FUNCTION__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DNIAPPackage.FIXED_COST_FUNCTION__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DNIAPPackage.FIXED_COST_FUNCTION__VALUE:
+				setValue((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.FIXED_COST_FUNCTION__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DNIAPPackage.FIXED_COST_FUNCTION__VALUE:
+				return value != VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FixedCostFunctionImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeVariableImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/HandlingTimeImpl.java
similarity index 50%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeVariableImpl.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/HandlingTimeImpl.java
index a100ed1261bead265a6404ef597e589f5ceb7996..083c7c0affb75ba6801f11186afa922313544ace 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/AlternativeVariableImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/HandlingTimeImpl.java
@@ -4,25 +4,23 @@ package tools.descartes.dni.dnimm3ap.impl;
 
 import org.eclipse.emf.ecore.EClass;
 
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
-import tools.descartes.dni.dnimm3ap.AlternativeVariable;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.HandlingTime;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Alternative Variable</b></em>'.
+ * An implementation of the model object '<em><b>Handling Time</b></em>'.
  * <!-- end-user-doc -->
  *
  * @generated
  */
-public abstract class AlternativeVariableImpl extends MinimalEObjectImpl.Container implements AlternativeVariable {
+public class HandlingTimeImpl extends CostImpl implements HandlingTime {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AlternativeVariableImpl() {
+	protected HandlingTimeImpl() {
 		super();
 	}
 
@@ -33,7 +31,7 @@ public abstract class AlternativeVariableImpl extends MinimalEObjectImpl.Contain
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return DNIAPPackage.Literals.ALTERNATIVE_VARIABLE;
+		return DNIAPPackage.Literals.HANDLING_TIME;
 	}
 
-} //AlternativeVariableImpl
+} //HandlingTimeImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/InvestmentImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/InvestmentImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b362b50741f77ec2cc1955ca3dd7f44af8028aca
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/InvestmentImpl.java
@@ -0,0 +1,37 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.Investment;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Investment</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class InvestmentImpl extends CostImpl implements Investment {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InvestmentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DNIAPPackage.Literals.INVESTMENT;
+	}
+
+} //InvestmentImpl
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/LinkAdaptationGroupImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/LinkAdaptationGroupImpl.java
index 19851e8dc95f3983bdb9fcdeffeb92a1014105a0..5f6d225537836d320dfbc355e2cb8b560306066b 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/LinkAdaptationGroupImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/LinkAdaptationGroupImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -22,6 +22,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Identifier;
+
 import tools.descartes.dni.dnimm3ap.AdaptableLink;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 import tools.descartes.dni.dnimm3ap.LinkAdaptationGroup;
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/NodeAdaptationGroupImpl.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/NodeAdaptationGroupImpl.java
index b978a654c3770e53086501b67bcca59983bec99a..1c936689d23e690166eba9fae5e837c4380924c2 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/NodeAdaptationGroupImpl.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/impl/NodeAdaptationGroupImpl.java
@@ -3,8 +3,8 @@
 package tools.descartes.dni.dnimm3ap.impl;
 
 import java.util.Collection;
-
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -22,6 +22,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Identifier;
+
 import tools.descartes.dni.dnimm3ap.AdaptableNode;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 import tools.descartes.dni.dnimm3ap.NodeAdaptationGroup;
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/AdaptableDependencyItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f091176334e46684807b847827d52763b640f14
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableDependencyItemProvider.java
@@ -0,0 +1,202 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+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.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import tools.descartes.dni.dnimm3.DNIFactory;
+
+import tools.descartes.dni.dnimm3ap.AdaptableDependency;
+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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptableDependencyItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdaptableDependencyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_DEPENDENCY__PARAMETER);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns AdaptableDependency.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptableDependency"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AdaptableDependency_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(AdaptableDependency.class)) {
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__COST:
+			case DNIAPPackage.ADAPTABLE_DEPENDENCY__PARAMETER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(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()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return Dnimm3apEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableEndPerformanceItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableEndPerformanceItemProvider.java
index 0e7af09d2ccae484baa9819d4aa5cc97cbfc8a19..2eb2ff88d629d87572c3fc6db8ac5f9874a13cb8 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableEndPerformanceItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableEndPerformanceItemProvider.java
@@ -125,6 +125,7 @@ public class AdaptableEndPerformanceItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
 			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_END_PERFORMANCE__SOFTWARE_LAYERS_DELAY);
 		}
 		return childrenFeatures;
@@ -184,6 +185,7 @@ public class AdaptableEndPerformanceItemProvider
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__COST:
 			case DNIAPPackage.ADAPTABLE_END_PERFORMANCE__SOFTWARE_LAYERS_DELAY:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
@@ -202,6 +204,16 @@ public class AdaptableEndPerformanceItemProvider
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(DNIAPPackage.Literals.ADAPTABLE_END_PERFORMANCE__SOFTWARE_LAYERS_DELAY,
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableIntermediatePerformanceItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableIntermediatePerformanceItemProvider.java
index 2bc57c0f6c504d42b6925963bf2067a79cdb7aaa..4705a4bd1fdbe84264fbce44d0a44124aad8a3a0 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableIntermediatePerformanceItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableIntermediatePerformanceItemProvider.java
@@ -125,9 +125,10 @@ public class AdaptableIntermediatePerformanceItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
 			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS);
 			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS);
 		}
 		return childrenFeatures;
 	}
@@ -186,9 +187,10 @@ public class AdaptableIntermediatePerformanceItemProvider
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__COST:
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY:
-			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
 			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS:
+			case DNIAPPackage.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -208,18 +210,28 @@ public class AdaptableIntermediatePerformanceItemProvider
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY,
-				 DNIAPFactory.eINSTANCE.createAlternativeVariableSet()));
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS,
-				 DNIAPFactory.eINSTANCE.createAlternativeVariableSet()));
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY,
+				 DNIAPFactory.eINSTANCE.createAlternativeDependencySet()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS,
-				 DNIAPFactory.eINSTANCE.createAlternativeVariableSet()));
+				 DNIAPFactory.eINSTANCE.createAlternativeDependencySet()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS,
+				 DNIAPFactory.eINSTANCE.createAlternativeDependencySet()));
 	}
 
 	/**
@@ -235,8 +247,8 @@ public class AdaptableIntermediatePerformanceItemProvider
 
 		boolean qualify =
 			childFeature == DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_LATENCY ||
-			childFeature == DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS ||
-			childFeature == DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS;
+			childFeature == DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__FORWARDING_BANDWIDTH_BPS ||
+			childFeature == DNIAPPackage.Literals.ADAPTABLE_INTERMEDIATE_PERFORMANCE__SWITCHING_CAPACITY_PPS;
 
 		if (qualify) {
 			return getString
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkItemProvider.java
index 81cbd34c5f906648fec9948723fc64c27a2d41d2..11a6d46b94dc7153f5c3ae68ca1302fae19ce156 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkItemProvider.java
@@ -11,6 +11,8 @@ import org.eclipse.emf.common.notify.Notification;
 
 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;
@@ -23,6 +25,7 @@ import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3ap.AdaptableLink;
+import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -179,6 +182,36 @@ public class AdaptableLinkItemProvider
 				 null));
 	}
 
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
 	/**
 	 * This returns AdaptableLink.gif.
 	 * <!-- begin-user-doc -->
@@ -220,6 +253,9 @@ public class AdaptableLinkItemProvider
 			case DNIAPPackage.ADAPTABLE_LINK__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_LINK__COST:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
 		}
 		super.notifyChanged(notification);
 	}
@@ -234,6 +270,16 @@ public class AdaptableLinkItemProvider
 	@Override
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkPerformanceItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkPerformanceItemProvider.java
index a4a266bbb858a1b9b25d87765ed5d018026f4cec..3bd945063ccef819ecb124977e21b94af1136170 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkPerformanceItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableLinkPerformanceItemProvider.java
@@ -125,6 +125,7 @@ public class AdaptableLinkPerformanceItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
 			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_LINK_PERFORMANCE__PROPAGATION_DELAY);
 			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_LINK_PERFORMANCE__MAXIMAL_SUPPORTED_BANDWIDTH);
 		}
@@ -185,6 +186,7 @@ public class AdaptableLinkPerformanceItemProvider
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__COST:
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__PROPAGATION_DELAY:
 			case DNIAPPackage.ADAPTABLE_LINK_PERFORMANCE__MAXIMAL_SUPPORTED_BANDWIDTH:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -204,6 +206,16 @@ public class AdaptableLinkPerformanceItemProvider
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(DNIAPPackage.Literals.ADAPTABLE_LINK_PERFORMANCE__PROPAGATION_DELAY,
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfaceItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfaceItemProvider.java
index 8e3c19f99eb83822640fcfb45699b723490319df..704fc47b111954c0266eda2486f6262fcc5c579b 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfaceItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfaceItemProvider.java
@@ -11,6 +11,8 @@ import org.eclipse.emf.common.notify.Notification;
 
 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;
@@ -23,6 +25,7 @@ import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3ap.AdaptableNetworkInterface;
+import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -133,6 +136,36 @@ public class AdaptableNetworkInterfaceItemProvider
 				 null));
 	}
 
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
 	/**
 	 * This returns AdaptableNetworkInterface.gif.
 	 * <!-- begin-user-doc -->
@@ -174,6 +207,9 @@ public class AdaptableNetworkInterfaceItemProvider
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE__COST:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
 		}
 		super.notifyChanged(notification);
 	}
@@ -188,6 +224,16 @@ public class AdaptableNetworkInterfaceItemProvider
 	@Override
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfacePerformanceItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfacePerformanceItemProvider.java
index e7aa6a0d4fd393e708cb2e9baadbc0d7e13939df..b48942680b253c8b21ce8e1cea53b3f7e812c203 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfacePerformanceItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNetworkInterfacePerformanceItemProvider.java
@@ -125,6 +125,7 @@ public class AdaptableNetworkInterfacePerformanceItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
 			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__PACKET_PROCESSING_TIME);
 			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__INTERFACE_THROUGHPUT);
 		}
@@ -185,6 +186,7 @@ public class AdaptableNetworkInterfacePerformanceItemProvider
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__COST:
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__PACKET_PROCESSING_TIME:
 			case DNIAPPackage.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__INTERFACE_THROUGHPUT:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -204,6 +206,16 @@ public class AdaptableNetworkInterfacePerformanceItemProvider
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(DNIAPPackage.Literals.ADAPTABLE_NETWORK_INTERFACE_PERFORMANCE__PACKET_PROCESSING_TIME,
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNodeItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNodeItemProvider.java
index c9fb746fd38434a006e05bd24b30f3e4b446d1a1..9fdf6b88a80a1b5be1ad5bf076480c27c03a13ab 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNodeItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableNodeItemProvider.java
@@ -11,6 +11,8 @@ import org.eclipse.emf.common.notify.Notification;
 
 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;
@@ -23,6 +25,7 @@ import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3ap.AdaptableNode;
+import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -225,6 +228,36 @@ public class AdaptableNodeItemProvider
 				 null));
 	}
 
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
 	/**
 	 * This returns AdaptableNode.gif.
 	 * <!-- begin-user-doc -->
@@ -266,6 +299,9 @@ public class AdaptableNodeItemProvider
 			case DNIAPPackage.ADAPTABLE_NODE__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_NODE__COST:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
 		}
 		super.notifyChanged(notification);
 	}
@@ -280,6 +316,16 @@ public class AdaptableNodeItemProvider
 	@Override
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
 	}
 
 	/**
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableSdnNodePerformanceItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableSdnNodePerformanceItemProvider.java
index 6dffb36cb79c1684722a5c3eddf81e5282453e7e..a37210b19a93d17d286c61b8c73845217a2646c9 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableSdnNodePerformanceItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableSdnNodePerformanceItemProvider.java
@@ -11,6 +11,8 @@ import org.eclipse.emf.common.notify.Notification;
 
 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;
@@ -23,6 +25,7 @@ import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3ap.AdaptableSdnNodePerformance;
+import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 
 /**
@@ -156,6 +159,36 @@ public class AdaptableSdnNodePerformanceItemProvider
 				 null));
 	}
 
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
 	/**
 	 * This returns AdaptableSdnNodePerformance.gif.
 	 * <!-- begin-user-doc -->
@@ -197,6 +230,9 @@ public class AdaptableSdnNodePerformanceItemProvider
 			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case DNIAPPackage.ADAPTABLE_SDN_NODE_PERFORMANCE__COST:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
 		}
 		super.notifyChanged(notification);
 	}
@@ -211,6 +247,16 @@ public class AdaptableSdnNodePerformanceItemProvider
 	@Override
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createHandlingTime()));
 	}
 
 	/**
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/AdaptableVariableItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d8c91cbeb9b11cbad47a79240a33cb1eb2e33a28
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptableVariableItemProvider.java
@@ -0,0 +1,192 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+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.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import tools.descartes.dni.dnimm3.DNIFactory;
+
+import tools.descartes.dni.dnimm3ap.AdaptableVariable;
+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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptableVariableItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdaptableVariableItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ICOSTABLE__COST);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTABLE_VARIABLE__PARAMETER);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns AdaptableVariable.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptableVariable"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AdaptableVariable_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(AdaptableVariable.class)) {
+			case DNIAPPackage.ADAPTABLE_VARIABLE__COST:
+			case DNIAPPackage.ADAPTABLE_VARIABLE__PARAMETER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ICOSTABLE__COST,
+				 DNIAPFactory.eINSTANCE.createInvestment()));
+
+		newChildDescriptors.add
+			(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()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return Dnimm3apEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationPointsItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationPointsItemProvider.java
index 75e7750511ca86682343ac3fadd3b4063dcdf846..c3d59c5834e27898dbbd70e456487a6d1af354d5 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationPointsItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationPointsItemProvider.java
@@ -177,7 +177,7 @@ public class AdaptationPointsItemProvider
 		newChildDescriptors.add
 			(createChildParameter
 				(DNIAPPackage.Literals.ADAPTATION_POINTS__REPOSITORIES,
-				 DNIAPFactory.eINSTANCE.createAdaptationRepositories()));
+				 DNIAPFactory.eINSTANCE.createAdaptationRepository()));
 
 		newChildDescriptors.add
 			(createChildParameter
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationRepositoriesItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationRepositoryItemProvider.java
similarity index 76%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationRepositoriesItemProvider.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationRepositoryItemProvider.java
index a20ce8021e4658568c0c469beb8b1db98d9d4b13..41170d8eeff5c75993a12e62b719a36cc66e2ac8 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationRepositoriesItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AdaptationRepositoryItemProvider.java
@@ -22,17 +22,17 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
-import tools.descartes.dni.dnimm3ap.AdaptationRepositories;
+import tools.descartes.dni.dnimm3ap.AdaptationRepository;
 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.AdaptationRepositories} object.
+ * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptationRepository} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
  */
-public class AdaptationRepositoriesItemProvider 
+public class AdaptationRepositoryItemProvider 
 	extends ItemProviderAdapter
 	implements
 		IEditingDomainItemProvider,
@@ -46,7 +46,7 @@ public class AdaptationRepositoriesItemProvider
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AdaptationRepositoriesItemProvider(AdapterFactory adapterFactory) {
+	public AdaptationRepositoryItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -77,14 +77,14 @@ public class AdaptationRepositoriesItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__NODES);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__END_PERFORMANCES);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__LINKS);
-			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__NODES);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__END_PERFORMANCES);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__NETWORK_INTERFACES);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__LINKS);
+			childrenFeatures.add(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__LINK_PERFORMANCES);
 		}
 		return childrenFeatures;
 	}
@@ -103,14 +103,14 @@ public class AdaptationRepositoriesItemProvider
 	}
 
 	/**
-	 * This returns AdaptationRepositories.gif.
+	 * This returns AdaptationRepository.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
 	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationRepositories"));
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationRepository"));
 	}
 
 	/**
@@ -121,7 +121,7 @@ public class AdaptationRepositoriesItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_AdaptationRepositories_type");
+		return getString("_UI_AdaptationRepository_type");
 	}
 	
 
@@ -136,15 +136,15 @@ public class AdaptationRepositoriesItemProvider
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(AdaptationRepositories.class)) {
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NODES:
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__END_PERFORMANCES:
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES:
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES:
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES:
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES:
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINKS:
-			case DNIAPPackage.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES:
+		switch (notification.getFeatureID(AdaptationRepository.class)) {
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NODES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__END_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINKS:
+			case DNIAPPackage.ADAPTATION_REPOSITORY__LINK_PERFORMANCES:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -164,42 +164,42 @@ public class AdaptationRepositoriesItemProvider
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__NODES,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__NODES,
 				 DNIAPFactory.eINSTANCE.createAdaptableNode()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__END_PERFORMANCES,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__END_PERFORMANCES,
 				 DNIAPFactory.eINSTANCE.createAdaptableEndPerformance()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__INTERMEDIATE_PERFORMANCES,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__INTERMEDIATE_PERFORMANCES,
 				 DNIAPFactory.eINSTANCE.createAdaptableIntermediatePerformance()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__SDN_NODE_PERFORMANCES,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__SDN_NODE_PERFORMANCES,
 				 DNIAPFactory.eINSTANCE.createAdaptableSdnNodePerformance()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__NETWORK_INTERFACES,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__NETWORK_INTERFACES,
 				 DNIAPFactory.eINSTANCE.createAdaptableNetworkInterface()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__NETWORK_INTERFACE_PERFORMANCES,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__NETWORK_INTERFACE_PERFORMANCES,
 				 DNIAPFactory.eINSTANCE.createAdaptableNetworkInterfacePerformance()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__LINKS,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__LINKS,
 				 DNIAPFactory.eINSTANCE.createAdaptableLink()));
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ADAPTATION_REPOSITORIES__LINK_PERFORMANCES,
+				(DNIAPPackage.Literals.ADAPTATION_REPOSITORY__LINK_PERFORMANCES,
 				 DNIAPFactory.eINSTANCE.createAdaptableLinkPerformance()));
 	}
 
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeConstantLongVariableSetItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeConstantLongVariableSetItemProvider.java
deleted file mode 100644
index 70fe5a04d558c6a6a4786df9d351343f1878404f..0000000000000000000000000000000000000000
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeConstantLongVariableSetItemProvider.java
+++ /dev/null
@@ -1,591 +0,0 @@
-/**
- */
-package tools.descartes.dni.dnimm3ap.provider;
-
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcoreFactory;
-import org.eclipse.emf.ecore.EcorePackage;
-
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-
-import tools.descartes.dni.dnimm3.DNIFactory;
-
-import tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet;
-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.AlternativeConstantLongVariableSet} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class AlternativeConstantLongVariableSetItemProvider extends AlternativeConstantLongItemProvider {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public AlternativeConstantLongVariableSetItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
-	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
-	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
-		if (childrenFeatures == null) {
-			super.getChildrenFeatures(object);
-			childrenFeatures.add(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE);
-		}
-		return childrenFeatures;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EStructuralFeature getChildFeature(Object object, Object child) {
-		// Check the type of the specified child object and return the proper feature to use for
-		// adding (see {@link AddCommand}) it as a child.
-
-		return super.getChildFeature(object, child);
-	}
-
-	/**
-	 * This returns AlternativeConstantLongVariableSet.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/AlternativeConstantLongVariableSet"));
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		return getString("_UI_AlternativeConstantLongVariableSet_type");
-	}
-	
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-
-		switch (notification.getFeatureID(AlternativeConstantLongVariableSet.class)) {
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET__ALTERNATIVE:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
-				return;
-		}
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptationPoints()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptationRepositories()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableLink()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableLinkPerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableEndPerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableIntermediatePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableSdnNodePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableNetworkInterface()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableNetworkInterfacePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptationGroups()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createNodeAdaptationGroup()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createLinkAdaptationGroup()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAlternativeVariableSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAlternativeConstantLongVariableSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInfrastructure()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkStructure()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEnd()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createIntermediate()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLink()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInterface()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkTraffic()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createFlow()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnControlFlow()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createGenericFlowTraffic()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createCommunicatingApplication()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createTrafficSource()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkConfiguration()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createProtocolsRepository()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createProtocolStack()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createProtocolLayer()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkProtocol()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createRoutesRepository()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createDirection()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createFlowRoute()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createRoute()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createHop()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEntityAddress()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createGenericWorkload()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createBranchAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLoopAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSequenceAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createStartAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createStopAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createTransmitAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createWaitAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createPerformanceLink()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createPerformanceNetworkInterface()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnFlowRule()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnController()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnControllerApplication()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createCommon()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSDN()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createIntermediatePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEndPerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createPerformanceSdnNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSpeedUnit()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createDataUnit()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createTimeUnit()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createConstantDoubleVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createConstantLongVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createRandomVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createFloatCoordinate()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createDiscreteFunction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createExponentialFunction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEntityTypes()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNodeType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEndPerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createIntermediatePerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnNodePerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInterfaceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInterfacePerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLinkType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLinkPerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEObject()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEAttribute()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEAnnotation()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEClass()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEDataType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEEnum()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEEnumLiteral()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEFactory()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEOperation()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEPackage()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEParameter()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEReference()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.create(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY)));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEGenericType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createETypeParameter()));
-	}
-
-}
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
new file mode 100644
index 0000000000000000000000000000000000000000..de1654d503d9c1593ca34e088ba716306244780a
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeDependencySetItemProvider.java
@@ -0,0 +1,168 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+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.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import tools.descartes.dni.dnimm3ap.AlternativeDependencySet;
+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.AlternativeDependencySet} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AlternativeDependencySetItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AlternativeDependencySetItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns AlternativeDependencySet.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AlternativeDependencySet"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AlternativeDependencySet_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(AlternativeDependencySet.class)) {
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.ALTERNATIVE_DEPENDENCY_SET__ALTERNATIVE,
+				 DNIAPFactory.eINSTANCE.createAdaptableDependency()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return Dnimm3apEditPlugin.INSTANCE;
+	}
+
+}
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 1af4debebe27636a7ba940f95c863af255a091db..b7eeae3b924a424d713e125fb68c499559bcb976 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
@@ -9,15 +9,19 @@ import java.util.List;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.common.util.ResourceLocator;
+
 import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcoreFactory;
-import org.eclipse.emf.ecore.EcorePackage;
 
+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.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
-import tools.descartes.dni.dnimm3.DNIFactory;
-
 import tools.descartes.dni.dnimm3ap.AlternativeVariableSet;
 import tools.descartes.dni.dnimm3ap.DNIAPFactory;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
@@ -28,7 +32,14 @@ import tools.descartes.dni.dnimm3ap.DNIAPPackage;
  * <!-- end-user-doc -->
  * @generated
  */
-public class AlternativeVariableSetItemProvider extends AlternativeVariableItemProvider {
+public class AlternativeVariableSetItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -66,7 +77,7 @@ public class AlternativeVariableSetItemProvider extends AlternativeVariableItemP
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE);
+			childrenFeatures.add(DNIAPPackage.Literals.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE);
 		}
 		return childrenFeatures;
 	}
@@ -139,453 +150,19 @@ public class AlternativeVariableSetItemProvider extends AlternativeVariableItemP
 
 		newChildDescriptors.add
 			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptationPoints()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptationRepositories()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableLink()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableLinkPerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableEndPerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableIntermediatePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableSdnNodePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableNetworkInterface()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptableNetworkInterfacePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAdaptationGroups()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createNodeAdaptationGroup()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createLinkAdaptationGroup()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAlternativeVariableSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIAPFactory.eINSTANCE.createAlternativeConstantLongVariableSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInfrastructure()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkStructure()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEnd()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createIntermediate()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLink()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInterface()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkTraffic()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createFlow()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnControlFlow()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createGenericFlowTraffic()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createCommunicatingApplication()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createTrafficSource()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkConfiguration()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createProtocolsRepository()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createProtocolStack()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createProtocolLayer()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkProtocol()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createRoutesRepository()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createDirection()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createFlowRoute()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createRoute()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createHop()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEntityAddress()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createGenericWorkload()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createBranchAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLoopAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSequenceAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createStartAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createStopAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createTransmitAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createWaitAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createPerformanceLink()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createPerformanceNetworkInterface()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnFlowRule()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnController()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnControllerApplication()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createCommon()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSDN()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createIntermediatePerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEndPerformance()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createPerformanceSdnNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSpeedUnit()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createDataUnit()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createTimeUnit()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createConstantDoubleVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createConstantLongVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createRandomVariable()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createFloatCoordinate()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createDiscreteFunction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createExponentialFunction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEntityTypes()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNodeType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createEndPerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createIntermediatePerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createSdnNodePerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInterfaceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createNetworkInterfacePerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLinkType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 DNIFactory.eINSTANCE.createLinkPerformanceType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEObject()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEAttribute()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEAnnotation()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEClass()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEDataType()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEEnum()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEEnumLiteral()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEFactory()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEOperation()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEPackage()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEParameter()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEReference()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.create(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY)));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createEGenericType()));
+				(DNIAPPackage.Literals.ALTERNATIVE_VARIABLE_SET__ALTERNATIVE,
+				 DNIAPFactory.eINSTANCE.createAdaptableVariable()));
+	}
 
-		newChildDescriptors.add
-			(createChildParameter
-				(DNIAPPackage.Literals.ALTERNATIVE_PARAMETER_SET__ALTERNATIVE,
-				 EcoreFactory.eINSTANCE.createETypeParameter()));
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return Dnimm3apEditPlugin.INSTANCE;
 	}
 
 }
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/CostItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/CostItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..98f469ecc7d818fb7d2b449942be354fc7f870d6
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/CostItemProvider.java
@@ -0,0 +1,157 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+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.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import tools.descartes.dni.dnimm3ap.Cost;
+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.Cost} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CostItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CostItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DNIAPPackage.Literals.COST__COST_FUNCTION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Cost_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Cost.class)) {
+			case DNIAPPackage.COST__COST_FUNCTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DNIAPPackage.Literals.COST__COST_FUNCTION,
+				 DNIAPFactory.eINSTANCE.createFixedCostFunction()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return Dnimm3apEditPlugin.INSTANCE;
+	}
+
+}
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 c7e87f40a54f399ac311a31b363613a246d75b87..273ae5abf5188dd3de636047978bd2a50657633d 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
@@ -95,26 +95,26 @@ public class DNIAPItemProviderAdapterFactory extends DNIAPAdapterFactory impleme
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptationRepositories} instances.
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptationRepository} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AdaptationRepositoriesItemProvider adaptationRepositoriesItemProvider;
+	protected AdaptationRepositoryItemProvider adaptationRepositoryItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptationRepositories}.
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptationRepository}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createAdaptationRepositoriesAdapter() {
-		if (adaptationRepositoriesItemProvider == null) {
-			adaptationRepositoriesItemProvider = new AdaptationRepositoriesItemProvider(this);
+	public Adapter createAdaptationRepositoryAdapter() {
+		if (adaptationRepositoryItemProvider == null) {
+			adaptationRepositoryItemProvider = new AdaptationRepositoryItemProvider(this);
 		}
 
-		return adaptationRepositoriesItemProvider;
+		return adaptationRepositoryItemProvider;
 	}
 
 	/**
@@ -370,6 +370,52 @@ public class DNIAPItemProviderAdapterFactory extends DNIAPAdapterFactory impleme
 		return linkAdaptationGroupItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AlternativeDependencySet} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AlternativeDependencySetItemProvider alternativeDependencySetItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AlternativeDependencySet}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAlternativeDependencySetAdapter() {
+		if (alternativeDependencySetItemProvider == null) {
+			alternativeDependencySetItemProvider = new AlternativeDependencySetItemProvider(this);
+		}
+
+		return alternativeDependencySetItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptableDependency} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptableDependencyItemProvider adaptableDependencyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableDependency}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdaptableDependencyAdapter() {
+		if (adaptableDependencyItemProvider == null) {
+			adaptableDependencyItemProvider = new AdaptableDependencyItemProvider(this);
+		}
+
+		return adaptableDependencyItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AlternativeVariableSet} instances.
 	 * <!-- begin-user-doc -->
@@ -394,26 +440,95 @@ public class DNIAPItemProviderAdapterFactory extends DNIAPAdapterFactory impleme
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet} instances.
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.AdaptableVariable} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptableVariableItemProvider adaptableVariableItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AdaptableVariable}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdaptableVariableAdapter() {
+		if (adaptableVariableItemProvider == null) {
+			adaptableVariableItemProvider = new AdaptableVariableItemProvider(this);
+		}
+
+		return adaptableVariableItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.Investment} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InvestmentItemProvider investmentItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.Investment}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInvestmentAdapter() {
+		if (investmentItemProvider == null) {
+			investmentItemProvider = new InvestmentItemProvider(this);
+		}
+
+		return investmentItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.HandlingTime} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HandlingTimeItemProvider handlingTimeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.HandlingTime}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHandlingTimeAdapter() {
+		if (handlingTimeItemProvider == null) {
+			handlingTimeItemProvider = new HandlingTimeItemProvider(this);
+		}
+
+		return handlingTimeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dni.dnimm3ap.FixedCostFunction} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected AlternativeConstantLongVariableSetItemProvider alternativeConstantLongVariableSetItemProvider;
+	protected FixedCostFunctionItemProvider fixedCostFunctionItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet}.
+	 * This creates an adapter for a {@link tools.descartes.dni.dnimm3ap.FixedCostFunction}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createAlternativeConstantLongVariableSetAdapter() {
-		if (alternativeConstantLongVariableSetItemProvider == null) {
-			alternativeConstantLongVariableSetItemProvider = new AlternativeConstantLongVariableSetItemProvider(this);
+	public Adapter createFixedCostFunctionAdapter() {
+		if (fixedCostFunctionItemProvider == null) {
+			fixedCostFunctionItemProvider = new FixedCostFunctionItemProvider(this);
 		}
 
-		return alternativeConstantLongVariableSetItemProvider;
+		return fixedCostFunctionItemProvider;
 	}
 
 	/**
@@ -516,7 +631,7 @@ public class DNIAPItemProviderAdapterFactory extends DNIAPAdapterFactory impleme
 	 */
 	public void dispose() {
 		if (adaptationPointsItemProvider != null) adaptationPointsItemProvider.dispose();
-		if (adaptationRepositoriesItemProvider != null) adaptationRepositoriesItemProvider.dispose();
+		if (adaptationRepositoryItemProvider != null) adaptationRepositoryItemProvider.dispose();
 		if (adaptableNodeItemProvider != null) adaptableNodeItemProvider.dispose();
 		if (adaptableLinkItemProvider != null) adaptableLinkItemProvider.dispose();
 		if (adaptableLinkPerformanceItemProvider != null) adaptableLinkPerformanceItemProvider.dispose();
@@ -528,8 +643,13 @@ public class DNIAPItemProviderAdapterFactory extends DNIAPAdapterFactory impleme
 		if (adaptationGroupsItemProvider != null) adaptationGroupsItemProvider.dispose();
 		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 (alternativeConstantLongVariableSetItemProvider != null) alternativeConstantLongVariableSetItemProvider.dispose();
+		if (adaptableVariableItemProvider != null) adaptableVariableItemProvider.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/provider/FixedCostFunctionItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/FixedCostFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c35747f88723c0d22d283c1c995a7b006d3cd318
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/FixedCostFunctionItemProvider.java
@@ -0,0 +1,156 @@
+/**
+ */
+package tools.descartes.dni.dnimm3ap.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import tools.descartes.dni.dnimm3ap.DNIAPPackage;
+import tools.descartes.dni.dnimm3ap.FixedCostFunction;
+
+/**
+ * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.FixedCostFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FixedCostFunctionItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FixedCostFunctionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_FixedCostFunction_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_FixedCostFunction_value_feature", "_UI_FixedCostFunction_type"),
+				 DNIAPPackage.Literals.FIXED_COST_FUNCTION__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns FixedCostFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FixedCostFunction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		FixedCostFunction fixedCostFunction = (FixedCostFunction)object;
+		return getString("_UI_FixedCostFunction_type") + " " + fixedCostFunction.getValue();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(FixedCostFunction.class)) {
+			case DNIAPPackage.FIXED_COST_FUNCTION__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return Dnimm3apEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeVariableItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/HandlingTimeItemProvider.java
similarity index 67%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeVariableItemProvider.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/HandlingTimeItemProvider.java
index 419a0c66a3a4eed00c38c9b0a345028a74514cf2..7732c4e753140be37b94bb3fe0e2e0e9cc9ad494 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeVariableItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/HandlingTimeItemProvider.java
@@ -9,37 +9,22 @@ import java.util.List;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 
-import org.eclipse.emf.common.util.ResourceLocator;
-
-import org.eclipse.emf.edit.provider.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.ItemProviderAdapter;
 
 /**
- * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.AlternativeVariable} object.
+ * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.HandlingTime} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
  */
-public class AlternativeVariableItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+public class HandlingTimeItemProvider extends CostItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AlternativeVariableItemProvider(AdapterFactory adapterFactory) {
+	public HandlingTimeItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -58,6 +43,17 @@ public class AlternativeVariableItemProvider
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This returns HandlingTime.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HandlingTime"));
+	}
+
 	/**
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
@@ -66,7 +62,7 @@ public class AlternativeVariableItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_AlternativeVariable_type");
+		return getString("_UI_HandlingTime_type");
 	}
 	
 
@@ -95,15 +91,4 @@ public class AlternativeVariableItemProvider
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3apEditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeConstantLongItemProvider.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/InvestmentItemProvider.java
similarity index 67%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeConstantLongItemProvider.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/InvestmentItemProvider.java
index 7338667c9e9f63d2deb447f98332f3b2eafef1ab..697ddf88d71f44c736249afcdaf84c5e07323ca0 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/AlternativeConstantLongItemProvider.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/provider/InvestmentItemProvider.java
@@ -9,37 +9,22 @@ import java.util.List;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 
-import org.eclipse.emf.common.util.ResourceLocator;
-
-import org.eclipse.emf.edit.provider.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.ItemProviderAdapter;
 
 /**
- * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.AlternativeConstantLong} object.
+ * This is the item provider adapter for a {@link tools.descartes.dni.dnimm3ap.Investment} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
  */
-public class AlternativeConstantLongItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+public class InvestmentItemProvider extends CostItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public AlternativeConstantLongItemProvider(AdapterFactory adapterFactory) {
+	public InvestmentItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -58,6 +43,17 @@ public class AlternativeConstantLongItemProvider
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This returns Investment.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Investment"));
+	}
+
 	/**
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
@@ -66,7 +62,7 @@ public class AlternativeConstantLongItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_AlternativeConstantLong_type");
+		return getString("_UI_Investment_type");
 	}
 	
 
@@ -95,15 +91,4 @@ public class AlternativeConstantLongItemProvider
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3apEditPlugin.INSTANCE;
-	}
-
 }
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 19b28a8f8c6dd5084fdc3d058696b237ef889303..78a288096f29a33aaa7dd9f75b8dc4caa4e4e208 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
@@ -76,8 +76,8 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 				return createAdaptationPointsAdapter();
 			}
 			@Override
-			public Adapter caseAdaptationRepositories(AdaptationRepositories object) {
-				return createAdaptationRepositoriesAdapter();
+			public Adapter caseAdaptationRepository(AdaptationRepository object) {
+				return createAdaptationRepositoryAdapter();
 			}
 			@Override
 			public <T extends ITypedEntity> Adapter caseIAdaptableEntity(IAdaptableEntity<T> object) {
@@ -136,8 +136,16 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 				return createLinkAdaptationGroupAdapter();
 			}
 			@Override
-			public <P> Adapter caseAlternativeParameterSet(AlternativeParameterSet<P> object) {
-				return createAlternativeParameterSetAdapter();
+			public Adapter caseAlternativeDependency(AlternativeDependency object) {
+				return createAlternativeDependencyAdapter();
+			}
+			@Override
+			public Adapter caseAlternativeDependencySet(AlternativeDependencySet object) {
+				return createAlternativeDependencySetAdapter();
+			}
+			@Override
+			public Adapter caseAdaptableDependency(AdaptableDependency object) {
+				return createAdaptableDependencyAdapter();
 			}
 			@Override
 			public Adapter caseAlternativeVariable(AlternativeVariable object) {
@@ -148,12 +156,32 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 				return createAlternativeVariableSetAdapter();
 			}
 			@Override
-			public Adapter caseAlternativeConstantLong(AlternativeConstantLong object) {
-				return createAlternativeConstantLongAdapter();
+			public Adapter caseAdaptableVariable(AdaptableVariable object) {
+				return createAdaptableVariableAdapter();
+			}
+			@Override
+			public Adapter caseICostable(ICostable object) {
+				return createICostableAdapter();
+			}
+			@Override
+			public Adapter caseCost(Cost object) {
+				return createCostAdapter();
+			}
+			@Override
+			public Adapter caseInvestment(Investment object) {
+				return createInvestmentAdapter();
+			}
+			@Override
+			public Adapter caseHandlingTime(HandlingTime object) {
+				return createHandlingTimeAdapter();
 			}
 			@Override
-			public Adapter caseAlternativeConstantLongVariableSet(AlternativeConstantLongVariableSet object) {
-				return createAlternativeConstantLongVariableSetAdapter();
+			public Adapter caseICostFunction(ICostFunction object) {
+				return createICostFunctionAdapter();
+			}
+			@Override
+			public Adapter caseFixedCostFunction(FixedCostFunction object) {
+				return createFixedCostFunctionAdapter();
 			}
 			@Override
 			public Adapter caseNamedElement(NamedElement object) {
@@ -198,16 +226,16 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AdaptationRepositories <em>Adaptation Repositories</em>}'.
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AdaptationRepository <em>Adaptation Repository</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.AdaptationRepositories
+	 * @see tools.descartes.dni.dnimm3ap.AdaptationRepository
 	 * @generated
 	 */
-	public Adapter createAdaptationRepositoriesAdapter() {
+	public Adapter createAdaptationRepositoryAdapter() {
 		return null;
 	}
 
@@ -408,16 +436,44 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeParameterSet <em>Alternative Parameter Set</em>}'.
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeDependency <em>Alternative 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.AlternativeDependency
+	 * @generated
+	 */
+	public Adapter createAlternativeDependencyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeDependencySet <em>Alternative Dependency 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.AlternativeParameterSet
+	 * @see tools.descartes.dni.dnimm3ap.AlternativeDependencySet
 	 * @generated
 	 */
-	public Adapter createAlternativeParameterSetAdapter() {
+	public Adapter createAlternativeDependencySetAdapter() {
+		return null;
+	}
+
+	/**
+	 * 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.AdaptableDependency
+	 * @generated
+	 */
+	public Adapter createAdaptableDependencyAdapter() {
 		return null;
 	}
 
@@ -450,30 +506,100 @@ public class DNIAPAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeConstantLong <em>Alternative Constant Long</em>}'.
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AdaptableVariable <em>Adaptable 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.AdaptableVariable
+	 * @generated
+	 */
+	public Adapter createAdaptableVariableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.ICostable <em>ICostable</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.ICostable
+	 * @generated
+	 */
+	public Adapter createICostableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.Cost <em>Cost</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.Cost
+	 * @generated
+	 */
+	public Adapter createCostAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.Investment <em>Investment</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.Investment
+	 * @generated
+	 */
+	public Adapter createInvestmentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.HandlingTime <em>Handling Time</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.HandlingTime
+	 * @generated
+	 */
+	public Adapter createHandlingTimeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.ICostFunction <em>ICost Function</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.AlternativeConstantLong
+	 * @see tools.descartes.dni.dnimm3ap.ICostFunction
 	 * @generated
 	 */
-	public Adapter createAlternativeConstantLongAdapter() {
+	public Adapter createICostFunctionAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.AlternativeConstantLongVariableSet <em>Alternative Constant Long Variable Set</em>}'.
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dni.dnimm3ap.FixedCostFunction <em>Fixed Cost Function</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.AlternativeConstantLongVariableSet
+	 * @see tools.descartes.dni.dnimm3ap.FixedCostFunction
 	 * @generated
 	 */
-	public Adapter createAlternativeConstantLongVariableSetAdapter() {
+	public Adapter createFixedCostFunctionAdapter() {
 		return null;
 	}
 
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 9764434f14fdecab7404decffbbc8096c7b6fcfa..d014dde17c3525f95bc37561a2d434cd47b39c86 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
@@ -76,15 +76,16 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case DNIAPPackage.ADAPTATION_REPOSITORIES: {
-				AdaptationRepositories adaptationRepositories = (AdaptationRepositories)theEObject;
-				T1 result = caseAdaptationRepositories(adaptationRepositories);
+			case DNIAPPackage.ADAPTATION_REPOSITORY: {
+				AdaptationRepository adaptationRepository = (AdaptationRepository)theEObject;
+				T1 result = caseAdaptationRepository(adaptationRepository);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case DNIAPPackage.IADAPTABLE_ENTITY: {
 				IAdaptableEntity<?> iAdaptableEntity = (IAdaptableEntity<?>)theEObject;
 				T1 result = caseIAdaptableEntity(iAdaptableEntity);
+				if (result == null) result = caseICostable(iAdaptableEntity);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -99,6 +100,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				T1 result = caseAdaptableNode(adaptableNode);
 				if (result == null) result = caseIAdaptableEntity(adaptableNode);
 				if (result == null) result = caseIAdaptableGroupableEntity(adaptableNode);
+				if (result == null) result = caseICostable(adaptableNode);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -107,6 +109,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				T1 result = caseAdaptableLink(adaptableLink);
 				if (result == null) result = caseIAdaptableEntity(adaptableLink);
 				if (result == null) result = caseIAdaptableGroupableEntity(adaptableLink);
+				if (result == null) result = caseICostable(adaptableLink);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -114,6 +117,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				AdaptableLinkPerformance adaptableLinkPerformance = (AdaptableLinkPerformance)theEObject;
 				T1 result = caseAdaptableLinkPerformance(adaptableLinkPerformance);
 				if (result == null) result = caseIAdaptableEntity(adaptableLinkPerformance);
+				if (result == null) result = caseICostable(adaptableLinkPerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -121,6 +125,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				AdaptableEndPerformance adaptableEndPerformance = (AdaptableEndPerformance)theEObject;
 				T1 result = caseAdaptableEndPerformance(adaptableEndPerformance);
 				if (result == null) result = caseIAdaptableEntity(adaptableEndPerformance);
+				if (result == null) result = caseICostable(adaptableEndPerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -128,6 +133,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				AdaptableIntermediatePerformance adaptableIntermediatePerformance = (AdaptableIntermediatePerformance)theEObject;
 				T1 result = caseAdaptableIntermediatePerformance(adaptableIntermediatePerformance);
 				if (result == null) result = caseIAdaptableEntity(adaptableIntermediatePerformance);
+				if (result == null) result = caseICostable(adaptableIntermediatePerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -135,6 +141,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				AdaptableSdnNodePerformance adaptableSdnNodePerformance = (AdaptableSdnNodePerformance)theEObject;
 				T1 result = caseAdaptableSdnNodePerformance(adaptableSdnNodePerformance);
 				if (result == null) result = caseIAdaptableEntity(adaptableSdnNodePerformance);
+				if (result == null) result = caseICostable(adaptableSdnNodePerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -142,6 +149,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				AdaptableNetworkInterface adaptableNetworkInterface = (AdaptableNetworkInterface)theEObject;
 				T1 result = caseAdaptableNetworkInterface(adaptableNetworkInterface);
 				if (result == null) result = caseIAdaptableEntity(adaptableNetworkInterface);
+				if (result == null) result = caseICostable(adaptableNetworkInterface);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -149,6 +157,7 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				AdaptableNetworkInterfacePerformance adaptableNetworkInterfacePerformance = (AdaptableNetworkInterfacePerformance)theEObject;
 				T1 result = caseAdaptableNetworkInterfacePerformance(adaptableNetworkInterfacePerformance);
 				if (result == null) result = caseIAdaptableEntity(adaptableNetworkInterfacePerformance);
+				if (result == null) result = caseICostable(adaptableNetworkInterfacePerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -184,9 +193,23 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case DNIAPPackage.ALTERNATIVE_PARAMETER_SET: {
-				AlternativeParameterSet<?> alternativeParameterSet = (AlternativeParameterSet<?>)theEObject;
-				T1 result = caseAlternativeParameterSet(alternativeParameterSet);
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY: {
+				AlternativeDependency alternativeDependency = (AlternativeDependency)theEObject;
+				T1 result = caseAlternativeDependency(alternativeDependency);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DNIAPPackage.ALTERNATIVE_DEPENDENCY_SET: {
+				AlternativeDependencySet alternativeDependencySet = (AlternativeDependencySet)theEObject;
+				T1 result = caseAlternativeDependencySet(alternativeDependencySet);
+				if (result == null) result = caseAlternativeDependency(alternativeDependencySet);
+				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 = defaultCase(theEObject);
 				return result;
 			}
@@ -200,21 +223,52 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 				AlternativeVariableSet alternativeVariableSet = (AlternativeVariableSet)theEObject;
 				T1 result = caseAlternativeVariableSet(alternativeVariableSet);
 				if (result == null) result = caseAlternativeVariable(alternativeVariableSet);
-				if (result == null) result = caseAlternativeParameterSet(alternativeVariableSet);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG: {
-				AlternativeConstantLong alternativeConstantLong = (AlternativeConstantLong)theEObject;
-				T1 result = caseAlternativeConstantLong(alternativeConstantLong);
+			case DNIAPPackage.ADAPTABLE_VARIABLE: {
+				AdaptableVariable adaptableVariable = (AdaptableVariable)theEObject;
+				T1 result = caseAdaptableVariable(adaptableVariable);
+				if (result == null) result = caseICostable(adaptableVariable);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DNIAPPackage.ICOSTABLE: {
+				ICostable iCostable = (ICostable)theEObject;
+				T1 result = caseICostable(iCostable);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case DNIAPPackage.ALTERNATIVE_CONSTANT_LONG_VARIABLE_SET: {
-				AlternativeConstantLongVariableSet alternativeConstantLongVariableSet = (AlternativeConstantLongVariableSet)theEObject;
-				T1 result = caseAlternativeConstantLongVariableSet(alternativeConstantLongVariableSet);
-				if (result == null) result = caseAlternativeConstantLong(alternativeConstantLongVariableSet);
-				if (result == null) result = caseAlternativeParameterSet(alternativeConstantLongVariableSet);
+			case DNIAPPackage.COST: {
+				Cost cost = (Cost)theEObject;
+				T1 result = caseCost(cost);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DNIAPPackage.INVESTMENT: {
+				Investment investment = (Investment)theEObject;
+				T1 result = caseInvestment(investment);
+				if (result == null) result = caseCost(investment);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DNIAPPackage.HANDLING_TIME: {
+				HandlingTime handlingTime = (HandlingTime)theEObject;
+				T1 result = caseHandlingTime(handlingTime);
+				if (result == null) result = caseCost(handlingTime);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DNIAPPackage.ICOST_FUNCTION: {
+				ICostFunction iCostFunction = (ICostFunction)theEObject;
+				T1 result = caseICostFunction(iCostFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DNIAPPackage.FIXED_COST_FUNCTION: {
+				FixedCostFunction fixedCostFunction = (FixedCostFunction)theEObject;
+				T1 result = caseFixedCostFunction(fixedCostFunction);
+				if (result == null) result = caseICostFunction(fixedCostFunction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -238,17 +292,17 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Adaptation Repositories</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptation Repository</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>Adaptation Repositories</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptation Repository</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T1 caseAdaptationRepositories(AdaptationRepositories object) {
+	public T1 caseAdaptationRepository(AdaptationRepository object) {
 		return null;
 	}
 
@@ -463,17 +517,47 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Alternative Parameter Set</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Alternative 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 Parameter Set</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Alternative Dependency</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public <P> T1 caseAlternativeParameterSet(AlternativeParameterSet<P> object) {
+	public T1 caseAlternativeDependency(AlternativeDependency object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Alternative Dependency 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 Dependency Set</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseAlternativeDependencySet(AlternativeDependencySet object) {
+		return null;
+	}
+
+	/**
+	 * 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>Adaptable Dependency</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseAdaptableDependency(AdaptableDependency object) {
 		return null;
 	}
 
@@ -508,32 +592,107 @@ public class DNIAPSwitch<T1> extends Switch<T1> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Alternative Constant Long</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptable 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 Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseAdaptableVariable(AdaptableVariable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>ICostable</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>ICostable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseICostable(ICostable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cost</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>Cost</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseCost(Cost object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Investment</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>Investment</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseInvestment(Investment object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Handling Time</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>Handling Time</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseHandlingTime(HandlingTime object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>ICost Function</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 Constant Long</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>ICost Function</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T1 caseAlternativeConstantLong(AlternativeConstantLong object) {
+	public T1 caseICostFunction(ICostFunction object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Alternative Constant Long Variable Set</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Fixed Cost Function</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 Constant Long Variable Set</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Fixed Cost Function</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T1 caseAlternativeConstantLongVariableSet(AlternativeConstantLongVariableSet object) {
+	public T1 caseFixedCostFunction(FixedCostFunction object) {
 		return null;
 	}