diff --git a/de.hftstuttgart.energycomponents.application/META-INF/MANIFEST.MF b/de.hftstuttgart.energycomponents.application/META-INF/MANIFEST.MF
index 0a1dca74082e852bfcdc57ebad95293d8ae8aeae..69ef69fcfe40fd3d38b16ef0242d921a86f5b569 100644
--- a/de.hftstuttgart.energycomponents.application/META-INF/MANIFEST.MF
+++ b/de.hftstuttgart.energycomponents.application/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Energy Components Catalog App
 Bundle-SymbolicName: de.hftstuttgart.energycomponents.app;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.0
 Bundle-Vendor: HfT Stuttgart
 Require-Bundle: javax.inject;bundle-version="1.0.0",
  org.eclipse.core.runtime;bundle-version="[3.9.100,4.0.0)",
@@ -21,9 +21,10 @@ Require-Bundle: javax.inject;bundle-version="1.0.0",
  de.hftstuttgart.energycomponents.model;bundle-version="0.0.0",
  de.hftstuttgart.energycomponents.edit;bundle-version="0.0.0",
  de.hftstuttgart.energycomponents.viewmodel;bundle-version="0.0.0",
- de.hftstuttgart.indriya.osgiplugin;bundle-version="0.0.0",
- de.hftstuttgart.units;bundle-version="0.0.0",
- de.hftstuttgart.units.ui.renderer;bundle-version="0.0.0"
+ de.hftstuttgart.cityunits.model;bundle-version="1.0.1",
+ de.hftstuttgart.cityunits.model.edit;bundle-version="1.0.1",
+ de.hftstuttgart.cityunits.ui.renderer;bundle-version="1.0.1",
+ tech.units.indriya;bundle-version="2.1.1"
 Import-Package: javax.annotation;version="1.3.5"
 Automatic-Module-Name: de.hftstuttgart.energycomponents.app
 Export-Package: de.hftstuttgart.energycomponents.app.handlers,
diff --git a/de.hftstuttgart.energycomponents.edit/META-INF/MANIFEST.MF b/de.hftstuttgart.energycomponents.edit/META-INF/MANIFEST.MF
index 157fae0a19d35973d039f0bca99d94457adf4074..3da6ba77d75d04dd37df4999d0ba499864993f66 100644
--- a/de.hftstuttgart.energycomponents.edit/META-INF/MANIFEST.MF
+++ b/de.hftstuttgart.energycomponents.edit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: de.hftstuttgart.energycomponents.edit;singleton:=true
 Automatic-Module-Name: de.hftstuttgart.energycomponents.edit
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.0
 Bundle-ClassPath: .
 Bundle-Activator: de.hftstuttgart.energycomponents.provider.EnergyComponentsEditPlugin$Implementation
 Bundle-Vendor: %providerName
@@ -11,7 +11,9 @@ Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: de.hftstuttgart.energycomponents.provider
 Require-Bundle: org.eclipse.core.runtime,
+ de.hftstuttgart.energycomponents.model;visibility:=reexport,
  de.hftstuttgart.energycomponents.model;visibility:=reexport,
  org.eclipse.emf.edit;visibility:=reexport,
- de.hftstuttgart.units;bundle-version="1.0.0"
+ de.hftstuttgart.cityunits.model;bundle-version="1.0.1";visibility:=reexport,
+ de.hftstuttgart.cityunits.model.edit;visibility:=reexport
 Bundle-ActivationPolicy: lazy
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CombinedHeatPowerItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CombinedHeatPowerItemProvider.java
index dec1eb8a8305c10ad9cce051f9b0517a31789183..1ab3f2dbe6f7a486429328ba33e41a8325cf48e2 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CombinedHeatPowerItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CombinedHeatPowerItemProvider.java
@@ -13,6 +13,7 @@ import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EStructuralFeature;
+
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CostItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CostItemProvider.java
index 7241dba3f6a185673ea032f246db00e8ec1aa821..99c318057cb3a19ed45e60ddd7e3f4c4739b30c4 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CostItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CostItemProvider.java
@@ -11,8 +11,11 @@ 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.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -68,97 +71,50 @@ public class CostItemProvider extends ItemProviderAdapter implements IEditingDom
 	}
 
 	/**
-	 * This adds a property descriptor for the Personnel Hours feature.
+	 * This adds a property descriptor for the Component Name feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addPersonnelHoursPropertyDescriptor(Object object) {
+	protected void addComponentNamePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_Cost_personnelHours_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_Cost_personnelHours_feature",
+						getResourceLocator(), getString("_UI_Cost_componentName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_componentName_feature",
 								"_UI_Cost_type"),
-						EnCompPackage.Literals.COST__PERSONNEL_HOURS, true, false, false,
+						EnCompPackage.Literals.COST__COMPONENT_NAME, true, false, false,
 						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
 	}
 
 	/**
-	 * This adds a property descriptor for the Personnel Cost Share feature.
+	 * This adds a property descriptor for the Description feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addPersonnelCostSharePropertyDescriptor(Object object) {
+	protected void addDescriptionPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_Cost_personnelCostShare_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_Cost_personnelCostShare_feature",
+						getResourceLocator(), getString("_UI_Cost_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_description_feature",
 								"_UI_Cost_type"),
-						EnCompPackage.Literals.COST__PERSONNEL_COST_SHARE, true, false, false,
-						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Administration And Other Cost Share feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addAdministrationAndOtherCostSharePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add(createItemPropertyDescriptor(
-				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
-				getString("_UI_Cost_administrationAndOtherCostShare_feature"),
-				getString("_UI_PropertyDescriptor_description", "_UI_Cost_administrationAndOtherCostShare_feature",
-						"_UI_Cost_type"),
-				EnCompPackage.Literals.COST__ADMINISTRATION_AND_OTHER_COST_SHARE, true, false, false,
-				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+						EnCompPackage.Literals.COST__DESCRIPTION, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
 	}
 
 	/**
-	 * This adds a property descriptor for the Maintenance Cost Share feature.
+	 * This adds a property descriptor for the Heat Source feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addMaintenanceCostSharePropertyDescriptor(Object object) {
+	protected void addHeatSourcePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_Cost_maintenanceCostShare_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_Cost_maintenanceCostShare_feature",
-								"_UI_Cost_type"),
-						EnCompPackage.Literals.COST__MAINTENANCE_COST_SHARE, true, false, false,
-						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, 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(EnCompPackage.Literals.COST__INVESTMENT_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);
+						getResourceLocator(), getString("_UI_Cost_heatSource_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_heatSource_feature", "_UI_Cost_type"),
+						EnCompPackage.Literals.COST__HEAT_SOURCE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
 	}
 
 	/**
@@ -208,50 +164,97 @@ public class CostItemProvider extends ItemProviderAdapter implements IEditingDom
 	}
 
 	/**
-	 * This adds a property descriptor for the Component Name feature.
+	 * This adds a property descriptor for the Personnel Hours feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addComponentNamePropertyDescriptor(Object object) {
+	protected void addPersonnelHoursPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_Cost_componentName_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_Cost_componentName_feature",
+						getResourceLocator(), getString("_UI_Cost_personnelHours_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_personnelHours_feature",
 								"_UI_Cost_type"),
-						EnCompPackage.Literals.COST__COMPONENT_NAME, true, false, false,
+						EnCompPackage.Literals.COST__PERSONNEL_HOURS, true, false, false,
 						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
 	}
 
 	/**
-	 * This adds a property descriptor for the Description feature.
+	 * This adds a property descriptor for the Personnel Cost Share feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addDescriptionPropertyDescriptor(Object object) {
+	protected void addPersonnelCostSharePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_Cost_description_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_Cost_description_feature",
+						getResourceLocator(), getString("_UI_Cost_personnelCostShare_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_personnelCostShare_feature",
 								"_UI_Cost_type"),
-						EnCompPackage.Literals.COST__DESCRIPTION, true, false, false,
-						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+						EnCompPackage.Literals.COST__PERSONNEL_COST_SHARE, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
 	}
 
 	/**
-	 * This adds a property descriptor for the Heat Source feature.
+	 * This adds a property descriptor for the Administration And Other Cost Share feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addHeatSourcePropertyDescriptor(Object object) {
+	protected void addAdministrationAndOtherCostSharePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_Cost_administrationAndOtherCostShare_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Cost_administrationAndOtherCostShare_feature",
+						"_UI_Cost_type"),
+				EnCompPackage.Literals.COST__ADMINISTRATION_AND_OTHER_COST_SHARE, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Maintenance Cost Share feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaintenanceCostSharePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_Cost_heatSource_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_Cost_heatSource_feature", "_UI_Cost_type"),
-						EnCompPackage.Literals.COST__HEAT_SOURCE, true, false, false,
-						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+						getResourceLocator(), getString("_UI_Cost_maintenanceCostShare_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_maintenanceCostShare_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__MAINTENANCE_COST_SHARE, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, 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(EnCompPackage.Literals.COST__INVESTMENT_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);
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricityItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricityItemProvider.java
index 58fc33c6070c6f7742f224b63dddd896d78cfd03..e744311e65a99e3032c4713ba995358bf6c48d2d 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricityItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricityItemProvider.java
@@ -3,8 +3,8 @@
 package de.hftstuttgart.energycomponents.provider;
 
 import de.hftstuttgart.energycomponents.Electricity;
-
 import de.hftstuttgart.energycomponents.EnCompPackage;
+
 import java.util.Collection;
 import java.util.List;
 
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnCompItemProviderAdapterFactory.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnCompItemProviderAdapterFactory.java
index 7a6e60bd2a0554a78431ef4f0bfa9fd2b80e00e6..77370da64691fb603b498254408f721abccf60e6 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnCompItemProviderAdapterFactory.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnCompItemProviderAdapterFactory.java
@@ -72,6 +72,29 @@ public class EnCompItemProviderAdapterFactory extends EnCompAdapterFactory
 		supportedTypes.add(IItemPropertySource.class);
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentsCatalogItemProvider energyComponentsCatalogItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEnergyComponentsCatalogAdapter() {
+		if (energyComponentsCatalogItemProvider == null) {
+			energyComponentsCatalogItemProvider = new EnergyComponentsCatalogItemProvider(this);
+		}
+
+		return energyComponentsCatalogItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ThermalStorage} instances.
 	 * <!-- begin-user-doc -->
@@ -210,29 +233,6 @@ public class EnCompItemProviderAdapterFactory extends EnCompAdapterFactory
 		return solarThermalCollectorItemProvider;
 	}
 
-	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected EnergyComponentsCatalogItemProvider energyComponentsCatalogItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createEnergyComponentsCatalogAdapter() {
-		if (energyComponentsCatalogItemProvider == null) {
-			energyComponentsCatalogItemProvider = new EnergyComponentsCatalogItemProvider(this);
-		}
-
-		return energyComponentsCatalogItemProvider;
-	}
-
 	/**
 	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Electrolyzer} instances.
 	 * <!-- begin-user-doc -->
@@ -256,29 +256,6 @@ public class EnCompItemProviderAdapterFactory extends EnCompAdapterFactory
 		return electrolyzerItemProvider;
 	}
 
-	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.LinearFunction} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected LinearFunctionItemProvider linearFunctionItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.LinearFunction}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createLinearFunctionAdapter() {
-		if (linearFunctionItemProvider == null) {
-			linearFunctionItemProvider = new LinearFunctionItemProvider(this);
-		}
-
-		return linearFunctionItemProvider;
-	}
-
 	/**
 	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.HydrogenCompressor} instances.
 	 * <!-- begin-user-doc -->
@@ -349,532 +326,555 @@ public class EnCompItemProviderAdapterFactory extends EnCompAdapterFactory
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ExponentialFunction} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.FossilFuel} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected ExponentialFunctionItemProvider exponentialFunctionItemProvider;
+	protected FossilFuelItemProvider fossilFuelItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ExponentialFunction}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.FossilFuel}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createExponentialFunctionAdapter() {
-		if (exponentialFunctionItemProvider == null) {
-			exponentialFunctionItemProvider = new ExponentialFunctionItemProvider(this);
+	public Adapter createFossilFuelAdapter() {
+		if (fossilFuelItemProvider == null) {
+			fossilFuelItemProvider = new FossilFuelItemProvider(this);
 		}
 
-		return exponentialFunctionItemProvider;
+		return fossilFuelItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.TableCharacteristic} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Hydrogen} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected TableCharacteristicItemProvider tableCharacteristicItemProvider;
+	protected HydrogenItemProvider hydrogenItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.TableCharacteristic}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Hydrogen}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createTableCharacteristicAdapter() {
-		if (tableCharacteristicItemProvider == null) {
-			tableCharacteristicItemProvider = new TableCharacteristicItemProvider(this);
+	public Adapter createHydrogenAdapter() {
+		if (hydrogenItemProvider == null) {
+			hydrogenItemProvider = new HydrogenItemProvider(this);
 		}
 
-		return tableCharacteristicItemProvider;
+		return hydrogenItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.LinearCharacteristic} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.BioFuel} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected LinearCharacteristicItemProvider linearCharacteristicItemProvider;
+	protected BioFuelItemProvider bioFuelItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.LinearCharacteristic}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.BioFuel}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createLinearCharacteristicAdapter() {
-		if (linearCharacteristicItemProvider == null) {
-			linearCharacteristicItemProvider = new LinearCharacteristicItemProvider(this);
+	public Adapter createBioFuelAdapter() {
+		if (bioFuelItemProvider == null) {
+			bioFuelItemProvider = new BioFuelItemProvider(this);
 		}
 
-		return linearCharacteristicItemProvider;
+		return bioFuelItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.WindTurbine} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected ExponentionalCharacteristicItemProvider exponentionalCharacteristicItemProvider;
+	protected WindTurbineItemProvider windTurbineItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.WindTurbine}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createExponentionalCharacteristicAdapter() {
-		if (exponentionalCharacteristicItemProvider == null) {
-			exponentionalCharacteristicItemProvider = new ExponentionalCharacteristicItemProvider(this);
+	public Adapter createWindTurbineAdapter() {
+		if (windTurbineItemProvider == null) {
+			windTurbineItemProvider = new WindTurbineItemProvider(this);
 		}
 
-		return exponentionalCharacteristicItemProvider;
+		return windTurbineItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Manufacturer} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PhotovoltaicModule} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected ManufacturerItemProvider manufacturerItemProvider;
+	protected PhotovoltaicModuleItemProvider photovoltaicModuleItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Manufacturer}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PhotovoltaicModule}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createManufacturerAdapter() {
-		if (manufacturerItemProvider == null) {
-			manufacturerItemProvider = new ManufacturerItemProvider(this);
+	public Adapter createPhotovoltaicModuleAdapter() {
+		if (photovoltaicModuleItemProvider == null) {
+			photovoltaicModuleItemProvider = new PhotovoltaicModuleItemProvider(this);
 		}
 
-		return manufacturerItemProvider;
+		return photovoltaicModuleItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PolynomialCharacteristic} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Inverter} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PolynomialCharacteristicItemProvider polynomialCharacteristicItemProvider;
+	protected InverterItemProvider inverterItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PolynomialCharacteristic}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Inverter}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createPolynomialCharacteristicAdapter() {
-		if (polynomialCharacteristicItemProvider == null) {
-			polynomialCharacteristicItemProvider = new PolynomialCharacteristicItemProvider(this);
+	public Adapter createInverterAdapter() {
+		if (inverterItemProvider == null) {
+			inverterItemProvider = new InverterItemProvider(this);
 		}
 
-		return polynomialCharacteristicItemProvider;
+		return inverterItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PolynomialFunction} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.HeatExchanger} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PolynomialFunctionItemProvider polynomialFunctionItemProvider;
+	protected HeatExchangerItemProvider heatExchangerItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PolynomialFunction}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.HeatExchanger}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createPolynomialFunctionAdapter() {
-		if (polynomialFunctionItemProvider == null) {
-			polynomialFunctionItemProvider = new PolynomialFunctionItemProvider(this);
+	public Adapter createHeatExchangerAdapter() {
+		if (heatExchangerItemProvider == null) {
+			heatExchangerItemProvider = new HeatExchangerItemProvider(this);
 		}
 
-		return polynomialFunctionItemProvider;
+		return heatExchangerItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Material} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected MaterialItemProvider materialItemProvider;
+	protected GeothermalHeatExchangerItemProvider geothermalHeatExchangerItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Material}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createMaterialAdapter() {
-		if (materialItemProvider == null) {
-			materialItemProvider = new MaterialItemProvider(this);
+	public Adapter createGeothermalHeatExchangerAdapter() {
+		if (geothermalHeatExchangerItemProvider == null) {
+			geothermalHeatExchangerItemProvider = new GeothermalHeatExchangerItemProvider(this);
 		}
 
-		return materialItemProvider;
+		return geothermalHeatExchangerItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Medium} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected EnergyComponentsCostCatalogItemProvider energyComponentsCostCatalogItemProvider;
+	protected MediumItemProvider mediumItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Medium}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createEnergyComponentsCostCatalogAdapter() {
-		if (energyComponentsCostCatalogItemProvider == null) {
-			energyComponentsCostCatalogItemProvider = new EnergyComponentsCostCatalogItemProvider(this);
+	public Adapter createMediumAdapter() {
+		if (mediumItemProvider == null) {
+			mediumItemProvider = new MediumItemProvider(this);
 		}
 
-		return energyComponentsCostCatalogItemProvider;
+		return mediumItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Cost} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.LinearFunction} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected CostItemProvider costItemProvider;
+	protected LinearFunctionItemProvider linearFunctionItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Cost}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.LinearFunction}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createCostAdapter() {
-		if (costItemProvider == null) {
-			costItemProvider = new CostItemProvider(this);
+	public Adapter createLinearFunctionAdapter() {
+		if (linearFunctionItemProvider == null) {
+			linearFunctionItemProvider = new LinearFunctionItemProvider(this);
 		}
 
-		return costItemProvider;
+		return linearFunctionItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PowerCharacteristic} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.DataPoint} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PowerCharacteristicItemProvider powerCharacteristicItemProvider;
+	protected DataPointItemProvider dataPointItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PowerCharacteristic}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.DataPoint}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createPowerCharacteristicAdapter() {
-		if (powerCharacteristicItemProvider == null) {
-			powerCharacteristicItemProvider = new PowerCharacteristicItemProvider(this);
+	public Adapter createDataPointAdapter() {
+		if (dataPointItemProvider == null) {
+			dataPointItemProvider = new DataPointItemProvider(this);
 		}
 
-		return powerCharacteristicItemProvider;
+		return dataPointItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PowerFunction} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.TableFunction} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PowerFunctionItemProvider powerFunctionItemProvider;
+	protected TableFunctionItemProvider tableFunctionItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PowerFunction}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.TableFunction}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createPowerFunctionAdapter() {
-		if (powerFunctionItemProvider == null) {
-			powerFunctionItemProvider = new PowerFunctionItemProvider(this);
+	public Adapter createTableFunctionAdapter() {
+		if (tableFunctionItemProvider == null) {
+			tableFunctionItemProvider = new TableFunctionItemProvider(this);
 		}
 
-		return powerFunctionItemProvider;
+		return tableFunctionItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.FossilFuel} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ExponentialFunction} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected FossilFuelItemProvider fossilFuelItemProvider;
+	protected ExponentialFunctionItemProvider exponentialFunctionItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.FossilFuel}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ExponentialFunction}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createFossilFuelAdapter() {
-		if (fossilFuelItemProvider == null) {
-			fossilFuelItemProvider = new FossilFuelItemProvider(this);
+	public Adapter createExponentialFunctionAdapter() {
+		if (exponentialFunctionItemProvider == null) {
+			exponentialFunctionItemProvider = new ExponentialFunctionItemProvider(this);
 		}
 
-		return fossilFuelItemProvider;
+		return exponentialFunctionItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Hydrogen} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.TableCharacteristic} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected HydrogenItemProvider hydrogenItemProvider;
+	protected TableCharacteristicItemProvider tableCharacteristicItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Hydrogen}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.TableCharacteristic}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createHydrogenAdapter() {
-		if (hydrogenItemProvider == null) {
-			hydrogenItemProvider = new HydrogenItemProvider(this);
+	public Adapter createTableCharacteristicAdapter() {
+		if (tableCharacteristicItemProvider == null) {
+			tableCharacteristicItemProvider = new TableCharacteristicItemProvider(this);
 		}
 
-		return hydrogenItemProvider;
+		return tableCharacteristicItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.BioFuel} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.LinearCharacteristic} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected BioFuelItemProvider bioFuelItemProvider;
+	protected LinearCharacteristicItemProvider linearCharacteristicItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.BioFuel}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.LinearCharacteristic}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createBioFuelAdapter() {
-		if (bioFuelItemProvider == null) {
-			bioFuelItemProvider = new BioFuelItemProvider(this);
+	public Adapter createLinearCharacteristicAdapter() {
+		if (linearCharacteristicItemProvider == null) {
+			linearCharacteristicItemProvider = new LinearCharacteristicItemProvider(this);
 		}
 
-		return bioFuelItemProvider;
+		return linearCharacteristicItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.WindTurbine} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected WindTurbineItemProvider windTurbineItemProvider;
+	protected ExponentionalCharacteristicItemProvider exponentionalCharacteristicItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.WindTurbine}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createWindTurbineAdapter() {
-		if (windTurbineItemProvider == null) {
-			windTurbineItemProvider = new WindTurbineItemProvider(this);
+	public Adapter createExponentionalCharacteristicAdapter() {
+		if (exponentionalCharacteristicItemProvider == null) {
+			exponentionalCharacteristicItemProvider = new ExponentionalCharacteristicItemProvider(this);
 		}
 
-		return windTurbineItemProvider;
+		return exponentionalCharacteristicItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PhotovoltaicModule} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Manufacturer} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected PhotovoltaicModuleItemProvider photovoltaicModuleItemProvider;
+	protected ManufacturerItemProvider manufacturerItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PhotovoltaicModule}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Manufacturer}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createPhotovoltaicModuleAdapter() {
-		if (photovoltaicModuleItemProvider == null) {
-			photovoltaicModuleItemProvider = new PhotovoltaicModuleItemProvider(this);
+	public Adapter createManufacturerAdapter() {
+		if (manufacturerItemProvider == null) {
+			manufacturerItemProvider = new ManufacturerItemProvider(this);
 		}
 
-		return photovoltaicModuleItemProvider;
+		return manufacturerItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Inverter} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PolynomialCharacteristic} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected InverterItemProvider inverterItemProvider;
+	protected PolynomialCharacteristicItemProvider polynomialCharacteristicItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Inverter}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PolynomialCharacteristic}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createInverterAdapter() {
-		if (inverterItemProvider == null) {
-			inverterItemProvider = new InverterItemProvider(this);
+	public Adapter createPolynomialCharacteristicAdapter() {
+		if (polynomialCharacteristicItemProvider == null) {
+			polynomialCharacteristicItemProvider = new PolynomialCharacteristicItemProvider(this);
 		}
 
-		return inverterItemProvider;
+		return polynomialCharacteristicItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.HeatExchanger} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PolynomialFunction} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected HeatExchangerItemProvider heatExchangerItemProvider;
+	protected PolynomialFunctionItemProvider polynomialFunctionItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.HeatExchanger}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PolynomialFunction}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createHeatExchangerAdapter() {
-		if (heatExchangerItemProvider == null) {
-			heatExchangerItemProvider = new HeatExchangerItemProvider(this);
+	public Adapter createPolynomialFunctionAdapter() {
+		if (polynomialFunctionItemProvider == null) {
+			polynomialFunctionItemProvider = new PolynomialFunctionItemProvider(this);
 		}
 
-		return heatExchangerItemProvider;
+		return polynomialFunctionItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Material} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected GeothermalHeatExchangerItemProvider geothermalHeatExchangerItemProvider;
+	protected MaterialItemProvider materialItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Material}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createGeothermalHeatExchangerAdapter() {
-		if (geothermalHeatExchangerItemProvider == null) {
-			geothermalHeatExchangerItemProvider = new GeothermalHeatExchangerItemProvider(this);
+	public Adapter createMaterialAdapter() {
+		if (materialItemProvider == null) {
+			materialItemProvider = new MaterialItemProvider(this);
 		}
 
-		return geothermalHeatExchangerItemProvider;
+		return materialItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Medium} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected MediumItemProvider mediumItemProvider;
+	protected EnergyComponentsCostCatalogItemProvider energyComponentsCostCatalogItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Medium}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createMediumAdapter() {
-		if (mediumItemProvider == null) {
-			mediumItemProvider = new MediumItemProvider(this);
+	public Adapter createEnergyComponentsCostCatalogAdapter() {
+		if (energyComponentsCostCatalogItemProvider == null) {
+			energyComponentsCostCatalogItemProvider = new EnergyComponentsCostCatalogItemProvider(this);
 		}
 
-		return mediumItemProvider;
+		return energyComponentsCostCatalogItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.TableFunction} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Cost} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected TableFunctionItemProvider tableFunctionItemProvider;
+	protected CostItemProvider costItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.TableFunction}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Cost}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createTableFunctionAdapter() {
-		if (tableFunctionItemProvider == null) {
-			tableFunctionItemProvider = new TableFunctionItemProvider(this);
+	public Adapter createCostAdapter() {
+		if (costItemProvider == null) {
+			costItemProvider = new CostItemProvider(this);
 		}
 
-		return tableFunctionItemProvider;
+		return costItemProvider;
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.DataPoint} instances.
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PowerCharacteristic} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected DataPointItemProvider dataPointItemProvider;
+	protected PowerCharacteristicItemProvider powerCharacteristicItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.DataPoint}.
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PowerCharacteristic}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createDataPointAdapter() {
-		if (dataPointItemProvider == null) {
-			dataPointItemProvider = new DataPointItemProvider(this);
+	public Adapter createPowerCharacteristicAdapter() {
+		if (powerCharacteristicItemProvider == null) {
+			powerCharacteristicItemProvider = new PowerCharacteristicItemProvider(this);
 		}
 
-		return dataPointItemProvider;
+		return powerCharacteristicItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PowerFunction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PowerFunctionItemProvider powerFunctionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PowerFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPowerFunctionAdapter() {
+		if (powerFunctionItemProvider == null) {
+			powerFunctionItemProvider = new PowerFunctionItemProvider(this);
+		}
+
+		return powerFunctionItemProvider;
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsEditPlugin.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsEditPlugin.java
index 13a504d6f11f1b000a857ca2dbe43ecd664d473e..6a6dbd46d7a53ec982a1e1d3f2624fa58a254520 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsEditPlugin.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsEditPlugin.java
@@ -2,6 +2,8 @@
  */
 package de.hftstuttgart.energycomponents.provider;
 
+import de.hftstuttgart.cityunits.model.quantities.provider.QuantitiesEditPlugin;
+
 import org.eclipse.emf.common.EMFPlugin;
 
 import org.eclipse.emf.common.util.ResourceLocator;
@@ -36,7 +38,7 @@ public final class EnergyComponentsEditPlugin extends EMFPlugin {
 	 * @generated
 	 */
 	public EnergyComponentsEditPlugin() {
-		super(new ResourceLocator[] {});
+		super(new ResourceLocator[] { QuantitiesEditPlugin.INSTANCE, });
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentialFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentialFunctionItemProvider.java
index 61154ac44f6803f44e24ebf2045c458e78e7638c..707a4cb9bd1fbe2d5538983f7a31a77074fc7e5f 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentialFunctionItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentialFunctionItemProvider.java
@@ -4,6 +4,7 @@ package de.hftstuttgart.energycomponents.provider;
 
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.ExponentialFunction;
+
 import java.util.Collection;
 import java.util.List;
 
@@ -11,6 +12,7 @@ import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.ResourceLocator;
+
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -131,20 +133,13 @@ public class ExponentialFunctionItemProvider extends ItemProviderAdapter impleme
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated NOT
+	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		final ExponentialFunction exponentialFunction = (ExponentialFunction) object;
-		final StringBuilder txt = new StringBuilder("Parameter ");
-		txt.append(String.valueOf(exponentialFunction.getKey()));
-		txt.append(":  ");
-		txt.append(" y = ");
-		txt.append(String.valueOf(exponentialFunction.getParameterB()));
-		txt.append(" * ");
-		txt.append(String.valueOf(exponentialFunction.getParameterA()));
-		txt.append("^x");
-		return txt.toString();
+		String label = ((ExponentialFunction) object).getKey();
+		return label == null || label.length() == 0 ? getString("_UI_ExponentialFunction_type")
+				: getString("_UI_ExponentialFunction_type") + " " + label;
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FunctionItemProvider.java
deleted file mode 100644
index 1c1fc47678b6b33cc4840465b89d53666a4a1ae1..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FunctionItemProvider.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents.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.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 de.hftstuttgart.energycomponents.Function} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class FunctionItemProvider 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 FunctionItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This returns Function.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/Function"));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected boolean shouldComposeCreationImage() {
-		return true;
-	}
-
-	/**
-	 * 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_Function_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);
-		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 EnergyComponentsEditPlugin.INSTANCE;
-	}
-
-}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrocarbonItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrocarbonItemProvider.java
deleted file mode 100644
index 4a4d64fc55fc959ff9f1015f9b9b5d95bf5a5c1c..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrocarbonItemProvider.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents.provider;
-
-import de.hftstuttgart.energycomponents.Hydrocarbon;
-
-import de.hftstuttgart.units.NullableQuantity;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-
-/**
- * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Hydrocarbon} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class HydrocarbonItemProvider extends MediumItemProvider {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public HydrocarbonItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This returns Hydrocarbon.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/Hydrocarbon"));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected boolean shouldComposeCreationImage() {
-		return true;
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		NullableQuantity labelValue = ((Hydrocarbon) object).getDensity();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ? getString("_UI_Hydrocarbon_type")
-				: getString("_UI_Hydrocarbon_type") + " " + label;
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearFunctionItemProvider.java
index 53a68b94b58ebc96045e4a989630ac016a317ad6..fd407e8084af7a9d173a40ad606b89aebcabcde0 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearFunctionItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearFunctionItemProvider.java
@@ -4,12 +4,15 @@ package de.hftstuttgart.energycomponents.provider;
 
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.LinearFunction;
+
 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;
@@ -130,19 +133,13 @@ public class LinearFunctionItemProvider extends ItemProviderAdapter implements I
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated NOT
+	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		final LinearFunction linearFunction = (LinearFunction) object;
-		final StringBuilder txt = new StringBuilder("Parameter ");
-		txt.append(String.valueOf(linearFunction.getKey()));
-		txt.append(":  ");
-		txt.append(" y = ");
-		txt.append(String.valueOf(linearFunction.getParameterM()));
-		txt.append("*x + ");
-		txt.append(String.valueOf(linearFunction.getParameterC()));
-		return txt.toString();
+		String label = ((LinearFunction) object).getKey();
+		return label == null || label.length() == 0 ? getString("_UI_LinearFunction_type")
+				: getString("_UI_LinearFunction_type") + " " + label;
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MaterialItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MaterialItemProvider.java
index e90d5cbd7452c91ff3a6073ae4fbef7af9eadd85..8e1814f019c386e1051dd785a4aae5fb95f981e2 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MaterialItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MaterialItemProvider.java
@@ -4,6 +4,7 @@ package de.hftstuttgart.energycomponents.provider;
 
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.Material;
+
 import java.util.Collection;
 import java.util.List;
 
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MediumItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MediumItemProvider.java
index d632889c347657aaea8caf1d5a4adedf315c41aa..6bc8d408fc11ad046a416bd9ee9de627c4a07aeb 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MediumItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MediumItemProvider.java
@@ -4,6 +4,7 @@ package de.hftstuttgart.energycomponents.provider;
 
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.Medium;
+
 import java.util.Collection;
 import java.util.List;
 
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialFunctionItemProvider.java
index cfcf7f9180d5365294a79f49d47f0335f385cca5..15df7b44fca70b5fb913ac6f46a17d6f466ce5e1 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialFunctionItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialFunctionItemProvider.java
@@ -150,24 +150,13 @@ public class PolynomialFunctionItemProvider extends ItemProviderAdapter implemen
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated NOT
+	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		final PolynomialFunction polynomialFunction = (PolynomialFunction) object;
-		final StringBuilder txt = new StringBuilder("Parameter ");
-		txt.append(String.valueOf(polynomialFunction.getKey()));
-		txt.append(":  ");
-		txt.append(" y = ");
-		txt.append(String.valueOf(polynomialFunction.getParameterA()));
-		txt.append(" * ");
-		txt.append("x^2");
-		txt.append(" + ");
-		txt.append(String.valueOf(polynomialFunction.getParameterB()));
-		txt.append("x");
-		txt.append(" + ");
-		txt.append(String.valueOf(polynomialFunction.getParameterC()));
-		return txt.toString();
+		String label = ((PolynomialFunction) object).getKey();
+		return label == null || label.length() == 0 ? getString("_UI_PolynomialFunction_type")
+				: getString("_UI_PolynomialFunction_type") + " " + label;
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerFunctionItemProvider.java
index 33904f071c0b79c6596e16b290d7e2bcaa50ba11..9fc507e026121438e6a4e223db9ab5decf51f378 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerFunctionItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerFunctionItemProvider.java
@@ -133,22 +133,13 @@ public class PowerFunctionItemProvider extends ItemProviderAdapter implements IE
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated NOT
+	 * @generated
 	 */
 	@Override
-
 	public String getText(Object object) {
-		final PowerFunction powerFunction = (PowerFunction) object;
-		final StringBuilder txt = new StringBuilder("Parameter ");
-		txt.append(String.valueOf(powerFunction.getKey()));
-		txt.append(":  ");
-		txt.append(" y = ");
-		txt.append(String.valueOf(powerFunction.getParameterA()));
-		txt.append(" * ");
-		txt.append("x^");
-		txt.append(String.valueOf(powerFunction.getParameterB()));
-
-		return txt.toString();
+		String label = ((PowerFunction) object).getKey();
+		return label == null || label.length() == 0 ? getString("_UI_PowerFunction_type")
+				: getString("_UI_PowerFunction_type") + " " + label;
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/RegularFuelItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/RegularFuelItemProvider.java
deleted file mode 100644
index fb6190ac5e4e3838f3b9afb791125efa0a866600..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/RegularFuelItemProvider.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents.provider;
-
-import de.hftstuttgart.energycomponents.RegularFuel;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-
-/**
- * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.RegularFuel} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class RegularFuelItemProvider extends FuelItemProvider {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public RegularFuelItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This returns RegularFuel.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/RegularFuel"));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected boolean shouldComposeCreationImage() {
-		return true;
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		String label = ((RegularFuel) object).getName();
-		return label == null || label.length() == 0 ? getString("_UI_RegularFuel_type")
-				: getString("_UI_RegularFuel_type") + " " + label;
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SaltHydrateItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SaltHydrateItemProvider.java
deleted file mode 100644
index cc34a1ebcce0c8ac7777daf49788e173925b5b17..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SaltHydrateItemProvider.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents.provider;
-
-import de.hftstuttgart.energycomponents.SaltHydrate;
-
-import de.hftstuttgart.units.NullableQuantity;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-
-/**
- * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.SaltHydrate} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class SaltHydrateItemProvider extends MediumItemProvider {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SaltHydrateItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This returns SaltHydrate.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/SaltHydrate"));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected boolean shouldComposeCreationImage() {
-		return true;
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		NullableQuantity labelValue = ((SaltHydrate) object).getDensity();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ? getString("_UI_SaltHydrate_type")
-				: getString("_UI_SaltHydrate_type") + " " + label;
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableFunctionItemProvider.java
index 4a270545017ecf93c3b6d0bd786abcbf0ebe5b2b..99da011ebb801a3df8f62dcf8a8a57ecac8afa78 100644
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableFunctionItemProvider.java
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableFunctionItemProvider.java
@@ -2,7 +2,6 @@
  */
 package de.hftstuttgart.energycomponents.provider;
 
-import de.hftstuttgart.energycomponents.DataPoint;
 import de.hftstuttgart.energycomponents.EnCompFactory;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.TableFunction;
@@ -12,8 +11,9 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.common.util.ResourceLocator;
+
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
@@ -132,27 +132,13 @@ public class TableFunctionItemProvider extends ItemProviderAdapter implements IE
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated NOT
+	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		final TableFunction tableFunction = ((TableFunction) object);
-		final EList<DataPoint> dataPoints = tableFunction.getDatapoints();
-		final int maxDisplayed = 5;
-		final StringBuilder txt = new StringBuilder("Parameter ");
-		txt.append(String.valueOf(tableFunction.getKey()));
-		txt.append(":  ");
-		dataPoints.stream().limit(maxDisplayed).forEach(dp -> {
-			txt.append("(");
-			txt.append(String.valueOf(dp.getX()));
-			txt.append("|");
-			txt.append(String.valueOf(dp.getY()));
-			txt.append(") ");
-		});
-		if (dataPoints.size() > maxDisplayed) {
-			txt.append("...");
-		}
-		return txt.toString();
+		String label = ((TableFunction) object).getKey();
+		return label == null || label.length() == 0 ? getString("_UI_TableFunction_type")
+				: getString("_UI_TableFunction_type") + " " + label;
 	}
 
 	/**
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WaterItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WaterItemProvider.java
deleted file mode 100644
index 1a2cdb4cfbbf99857188592352080e51ac47c7c7..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WaterItemProvider.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents.provider;
-
-import de.hftstuttgart.energycomponents.Water;
-
-import de.hftstuttgart.units.NullableQuantity;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-
-/**
- * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Water} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class WaterItemProvider extends MediumItemProvider {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public WaterItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This returns Water.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/Water"));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected boolean shouldComposeCreationImage() {
-		return true;
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		NullableQuantity labelValue = ((Water) object).getDensity();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ? getString("_UI_Water_type")
-				: getString("_UI_Water_type") + " " + label;
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}
diff --git a/de.hftstuttgart.energycomponents.model/META-INF/MANIFEST.MF b/de.hftstuttgart.energycomponents.model/META-INF/MANIFEST.MF
index b6750b3e6acb7fb3d07be1da6cc2c3acd0249252..1f04e8dc49fd87d37bf5adf3c34d497a6c0264a5 100644
--- a/de.hftstuttgart.energycomponents.model/META-INF/MANIFEST.MF
+++ b/de.hftstuttgart.energycomponents.model/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: de.hftstuttgart.energycomponents.model;singleton:=true
-Automatic-Module-Name: de.hftstuttgart.energycomponents
-Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: de.hftstuttgart.energycomponents.model
+Bundle-Version: 1.0.0
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -13,5 +13,5 @@ Export-Package: de.hftstuttgart.energycomponents,
  de.hftstuttgart.energycomponents.util
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.emf.ecore;visibility:=reexport,
- de.hftstuttgart.units;bundle-version="1.0.0"
+ de.hftstuttgart.cityunits.model;bundle-version="1.0.1";visibility:=reexport
 Bundle-ActivationPolicy: lazy
diff --git a/de.hftstuttgart.energycomponents.model/model/EnergyComponents.aird b/de.hftstuttgart.energycomponents.model/model/EnergyComponents.aird
index 78c8bd60e25ad33db27046e1896ae56503db6734..1e4153ac615f85cadff5afb06d7c3b3e890fd27b 100644
--- a/de.hftstuttgart.energycomponents.model/model/EnergyComponents.aird
+++ b/de.hftstuttgart.energycomponents.model/model/EnergyComponents.aird
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
-  <viewpoint:DAnalysis uid="_xDanIFezEeq_N_dFIDFqhA" selectedViews="_xbAAsFezEeq_N_dFIDFqhA" version="14.3.0.201909031200">
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
+  <viewpoint:DAnalysis uid="_xDanIFezEeq_N_dFIDFqhA" selectedViews="_xbAAsFezEeq_N_dFIDFqhA" version="14.3.1.202003261200">
     <semanticResources>EnergyComponents.ecore</semanticResources>
     <semanticResources>EnergyComponents.genmodel</semanticResources>
     <ownedViews xmi:type="viewpoint:DView" uid="_xbAAsFezEeq_N_dFIDFqhA">
       <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
-      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_xgdIcFezEeq_N_dFIDFqhA" name="Energy Components Class Diagram" repPath="#_xdAy4FezEeq_N_dFIDFqhA" changeId="754a5fff-0989-4763-ba99-183e58dc0339">
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_xgdIcFezEeq_N_dFIDFqhA" name="Energy Components Class Diagram" repPath="#_xdAy4FezEeq_N_dFIDFqhA" changeId="10bbacab-2dcd-4fef-87ad-83918fb198bb">
         <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
         <target xmi:type="ecore:EPackage" href="EnergyComponents.ecore#/"/>
       </ownedRepresentationDescriptors>
@@ -760,32 +760,6 @@
           <styles xmi:type="notation:ShapeStyle" xmi:id="_Cdv0gLuHEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
           <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cdv0gbuHEeq7PM-WLoFu_w" x="830" y="1920" width="148" height="63"/>
         </children>
-        <children xmi:type="notation:Node" xmi:id="_OR4Xy8D3Eeq7PM-WLoFu_w" type="2003" element="_ORk1sMD3Eeq7PM-WLoFu_w">
-          <children xmi:type="notation:Node" xmi:id="_OR4XzsD3Eeq7PM-WLoFu_w" type="5007"/>
-          <children xmi:type="notation:Node" xmi:id="_OR4Xz8D3Eeq7PM-WLoFu_w" type="7004">
-            <children xmi:type="notation:Node" xmi:id="_OR4X0sD3Eeq7PM-WLoFu_w" type="3010" element="_ORunbMD3Eeq7PM-WLoFu_w">
-              <styles xmi:type="notation:FontStyle" xmi:id="_OR4X08D3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8" italic="true"/>
-              <layoutConstraint xmi:type="notation:Location" xmi:id="_OR4X1MD3Eeq7PM-WLoFu_w"/>
-            </children>
-            <styles xmi:type="notation:SortingStyle" xmi:id="_OR4X0MD3Eeq7PM-WLoFu_w"/>
-            <styles xmi:type="notation:FilteringStyle" xmi:id="_OR4X0cD3Eeq7PM-WLoFu_w"/>
-          </children>
-          <styles xmi:type="notation:ShapeStyle" xmi:id="_OR4XzMD3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OR4XzcD3Eeq7PM-WLoFu_w" x="318" y="738" width="153" height="63"/>
-        </children>
-        <children xmi:type="notation:Node" xmi:id="_biBZ08D3Eeq7PM-WLoFu_w" type="2003" element="_bht2EMD3Eeq7PM-WLoFu_w">
-          <children xmi:type="notation:Node" xmi:id="_biBZ1sD3Eeq7PM-WLoFu_w" type="5007"/>
-          <children xmi:type="notation:Node" xmi:id="_biBZ18D3Eeq7PM-WLoFu_w" type="7004">
-            <children xmi:type="notation:Node" xmi:id="_biBZ2sD3Eeq7PM-WLoFu_w" type="3010" element="_biBYbsD3Eeq7PM-WLoFu_w">
-              <styles xmi:type="notation:FontStyle" xmi:id="_biBZ28D3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8" italic="true"/>
-              <layoutConstraint xmi:type="notation:Location" xmi:id="_biBZ3MD3Eeq7PM-WLoFu_w"/>
-            </children>
-            <styles xmi:type="notation:SortingStyle" xmi:id="_biBZ2MD3Eeq7PM-WLoFu_w"/>
-            <styles xmi:type="notation:FilteringStyle" xmi:id="_biBZ2cD3Eeq7PM-WLoFu_w"/>
-          </children>
-          <styles xmi:type="notation:ShapeStyle" xmi:id="_biBZ1MD3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_biBZ1cD3Eeq7PM-WLoFu_w" x="318" y="668" width="153" height="63"/>
-        </children>
         <children xmi:type="notation:Node" xmi:id="_F6kJd8FBEeq7PM-WLoFu_w" type="2003" element="_F6aW0MFBEeq7PM-WLoFu_w">
           <children xmi:type="notation:Node" xmi:id="_F6kJesFBEeq7PM-WLoFu_w" type="5007"/>
           <children xmi:type="notation:Node" xmi:id="_F6kJe8FBEeq7PM-WLoFu_w" type="7004">
@@ -3671,52 +3645,6 @@
       </ownedStyle>
       <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
     </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_ORk1sMD3Eeq7PM-WLoFu_w" name="QuantityDouble" tooltipText="" width="14" height="5">
-      <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
-      <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
-      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
-      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
-      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
-      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ORk1scD3Eeq7PM-WLoFu_w" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="255,250,191">
-        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@style"/>
-      </ownedStyle>
-      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']"/>
-      <ownedElements xmi:type="diagram:DNodeListElement" uid="_ORunbMD3Eeq7PM-WLoFu_w" name="de.hftstuttgart.units.NullableQuantity" tooltipText="">
-        <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
-        <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
-        <decorations xmi:type="viewpoint:Decoration" uid="_ORunbsD3Eeq7PM-WLoFu_w">
-          <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
-        </decorations>
-        <ownedStyle xmi:type="diagram:BundledImage" uid="_ORunbcD3Eeq7PM-WLoFu_w" showIcon="false">
-          <labelFormat>italic</labelFormat>
-          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']/@style"/>
-        </ownedStyle>
-        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
-      </ownedElements>
-    </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_bht2EMD3Eeq7PM-WLoFu_w" name="QuantityLong" tooltipText="" width="14" height="5">
-      <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
-      <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
-      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
-      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
-      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
-      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_bht2EcD3Eeq7PM-WLoFu_w" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="255,250,191">
-        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@style"/>
-      </ownedStyle>
-      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']"/>
-      <ownedElements xmi:type="diagram:DNodeListElement" uid="_biBYbsD3Eeq7PM-WLoFu_w" name="de.hftstuttgart.units.NullableQuantity" tooltipText="">
-        <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
-        <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
-        <decorations xmi:type="viewpoint:Decoration" uid="_biBYcMD3Eeq7PM-WLoFu_w">
-          <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
-        </decorations>
-        <ownedStyle xmi:type="diagram:BundledImage" uid="_biBYb8D3Eeq7PM-WLoFu_w" showIcon="false">
-          <labelFormat>italic</labelFormat>
-          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']/@style"/>
-        </ownedStyle>
-        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
-      </ownedElements>
-    </ownedDiagramElements>
     <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vRjVtMEFEeq7PM-WLoFu_w" sourceNode="_1Ws8MFiuEeq_N_dFIDFqhA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
       <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalEnergyDevice"/>
       <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalEnergyDevice"/>
diff --git a/de.hftstuttgart.energycomponents.model/model/EnergyComponents.ecore b/de.hftstuttgart.energycomponents.model/model/EnergyComponents.ecore
index c006ed560e6a620683ade281ec23be87986f22bb..1cf756e3e28aee0829877aa29a423848db517df3 100644
--- a/de.hftstuttgart.energycomponents.model/model/EnergyComponents.ecore
+++ b/de.hftstuttgart.energycomponents.model/model/EnergyComponents.ecore
@@ -70,7 +70,7 @@
         eType="#//EnergyCarrier" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ThermalStorage" eSuperTypes="#//EnergyComponent">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="volume" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="volume" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="5 m³">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="m³"/>
@@ -78,20 +78,20 @@
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalStorageType" unique="false"
         eType="#//ThermalStorageTypes" transient="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxTemp" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxTemp" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="80 °C">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="degree Celsius"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tankThickness" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tankThickness" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="10 mm "/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="insulationThickness" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="insulationThickness" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="100 mm"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="usesMedium" lowerBound="1"
         eType="#//Medium"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="insulationMaterial" eType="#//Material"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="2 m"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="tankMaterial" eType="#//Material"/>
   </eClassifiers>
@@ -99,12 +99,13 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="electricalStorageType"
         lowerBound="1" eType="#//ElectricalStorageTypes"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryCapacity" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="A*h">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="A*h">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Ah&#xD;&#xA;&#xD;&#xA;The storage capacity of the battery is  represented in Ampere &#xD;&#xA;hour or Ah. If V is the battery voltage then the energy storage &#xD;&#xA;capacity of the  battery can  be Ah  x V  = Watt-hour.  Usually &#xD;&#xA;battery capacity will be specified for a given discharge/charge &#xD;&#xA;rating or C  rating. The  actual capacity depends  on operating &#xD;&#xA;conditions such as load, temperature, etc. "/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryVoltage" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryVoltage" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="V">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="V&#xD;&#xA;&#xD;&#xA;The terminal voltage during operating condition  is known as &#xD;&#xA;nominal  voltage  or  working  voltage.  This  voltage  will  be &#xD;&#xA;specified by manufactures. It may be 3V, 6V, 12V, 24Vetc "/>
@@ -127,7 +128,8 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryEffiency" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
         defaultValueLiteral="0.8"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="energyContent" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="5 kW*h"/>
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="5 kW*h"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CombinedHeatPower" eSuperTypes="#//ThermalEnergyDevice">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalEfficiency" lowerBound="1"
@@ -143,7 +145,8 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="installedElectricalPower"
-        lowerBound="1" eType="#//QuantityDouble" defaultValueLiteral="kW">
+        lowerBound="1" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="kW">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kW"/>
       </eAnnotations>
@@ -176,7 +179,8 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="collectorType" lowerBound="1"
         eType="#//CollectorTypes"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="apertureArea" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="m²">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="m²">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="m²"/>
       </eAnnotations>
@@ -204,7 +208,8 @@
   <eClassifiers xsi:type="ecore:EClass" name="Electrolyzer" eSuperTypes="#//EnergyComponent">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="cellType" eType="#//cellTypesElectrolyzer"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="cellArea" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="50 cm²">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="50 cm²">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="cm²"/>
       </eAnnotations>
@@ -212,24 +217,26 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="numberOfCells" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="5"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxOperatingCurrentDensity"
-        eType="#//QuantityDouble" defaultValueLiteral="3 A/cm²">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="3 A/cm²">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A/cm²"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="minOperatingCurrentDensity"
-        eType="#//QuantityDouble" defaultValueLiteral="0.3 A/cm²">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="0.3 A/cm²">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A/cm²"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="overloadCapacity" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="overloadCapacity" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="120 %">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="percent"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalCellVoltage" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalCellVoltage" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="1.94 V">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="V"/>
@@ -239,7 +246,8 @@
   <eClassifiers xsi:type="ecore:EClass" name="ThermalEnergyDevice" abstract="true"
       eSuperTypes="#//EnergyComponent">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="installedThermalPower"
-        lowerBound="1" eType="#//QuantityDouble" defaultValueLiteral="kW">
+        lowerBound="1" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="kW">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kW"/>
       </eAnnotations>
@@ -279,13 +287,13 @@
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermodynamicMode" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
         defaultValueLiteral="0"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxPressure" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxPressure" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="50 MPa">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="MPa"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxDeliveryRate" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxDeliveryRate" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="9 kg/h">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kg/h"/>
@@ -296,18 +304,20 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="numberOfCylinders" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="1"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="cylinderVolume" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="1.5 m³">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="1.5 m³">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="m³"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalPressure" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalPressure" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="25 MPa"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FuelCell" eSuperTypes="#//EnergyComponent"/>
   <eClassifiers xsi:type="ecore:EClass" name="EnergyCarrier" abstract="true">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="co2EmissionsFactor" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="t/MW*h"/>
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="t/MW*h"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="primaryEnergyFactor" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
@@ -345,19 +355,22 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Fuel" abstract="true" eSuperTypes="#//EnergyCarrier">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="netCalorificValue" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="(kW*h)/m³">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="(kW*h)/m³">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kWh/m³&#xD;&#xA;Heizwert"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="grossCalorificValue" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="(kW*h)/m³">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="(kW*h)/m³">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kWh/m³&#xD;&#xA;Brennwert"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="density" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="kg/m³">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="kg/m³">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kg/m³"/>
       </eAnnotations>
@@ -371,19 +384,22 @@
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEnumerator"
         transient="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalPower" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="W">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="W">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="W"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="mppVoltage" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="V">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="V">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="V"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="mppCurrent" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="A">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="A">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A"/>
       </eAnnotations>
@@ -395,7 +411,8 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="moduleArea" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="m²">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="m²">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="m²"/>
       </eAnnotations>
@@ -406,14 +423,15 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="heatRecoveryEfficiency"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.8"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalElectricityConsumption"
-        lowerBound="1" eType="#//QuantityDouble" defaultValueLiteral="W">
+        lowerBound="1" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="W">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Watt"/>
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="GeothermalHeatExchanger" eSuperTypes="#//EnergyComponent">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pipeDiameter" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pipeDiameter" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="1 cm"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="BoilerTypes">
@@ -426,24 +444,26 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Medium">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="density" lowerBound="1"
-        eType="#//QuantityDouble" defaultValueLiteral="g/cm³">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="g/cm³">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kg/m³"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="heatCapacity" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="heatCapacity" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="kJ/(kg*K)">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="kJ/kg*K"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="evaporationTemperature"
-        eType="#//QuantityDouble" defaultValueLiteral="°C">
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="°C">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="degree Celsius"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="meltingTemperature" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="meltingTemperature" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="°C">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="degree Celsius"/>
@@ -451,8 +471,6 @@
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EDataType" name="QuantityDouble" instanceClassName="de.hftstuttgart.units.NullableQuantity"/>
-  <eClassifiers xsi:type="ecore:EDataType" name="QuantityLong" instanceClassName="de.hftstuttgart.units.NullableQuantity"/>
   <eClassifiers xsi:type="ecore:EEnum" name="cellTypesElectrolyzer">
     <eLiterals name="PEM"/>
   </eClassifiers>
@@ -564,7 +582,7 @@
     </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Material">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalConductivity" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalConductivity" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral=" W/(m*K)">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value=" W/(m*K)"/>
@@ -595,7 +613,7 @@
         eType="#//Characteristic" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="otherInvestmentCost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
         defaultValueLiteral="0"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="personnelHours" eType="#//QuantityDouble"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="personnelHours" eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
         defaultValueLiteral="10 h"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="personnelCostShare" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="administrationAndOtherCostShare"
diff --git a/de.hftstuttgart.energycomponents.model/model/EnergyComponents.genmodel b/de.hftstuttgart.energycomponents.model/model/EnergyComponents.genmodel
index 724e2d048525b6abeaadad56ad726032461c2b9b..be20e63ecfc6a33211f3cbb7fd967298852d5dd4 100644
--- a/de.hftstuttgart.energycomponents.model/model/EnergyComponents.genmodel
+++ b/de.hftstuttgart.energycomponents.model/model/EnergyComponents.genmodel
@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
-    modelDirectory="/de.hftstuttgart.energycomponents/src-gen" creationIcons="false"
-    editDirectory="/de.hftstuttgart.energycomponents.edit/src-gen" editorDirectory="/de.hftstuttgart.energycomponents.editor/src-gen"
-    modelPluginID="de.hftstuttgart.energycomponents" modelName="EnergyComponents"
-    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" codeFormatting="true"
-    importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+    modelDirectory="/de.hftstuttgart.energycomponents.model/src-gen"
+    creationIcons="false" editDirectory="/de.hftstuttgart.energycomponents.edit/src-gen"
+    editorDirectory="/de.hftstuttgart.energycomponents.editor/src-gen" modelPluginID="de.hftstuttgart.energycomponents.model"
+    modelName="EnergyComponents" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0"
+    copyrightFields="false" usedGenPackages="../../de.hftstuttgart.cityunits.model/model/Quantities.genmodel#//quantities"
     operationReflection="true" importOrganizing="true">
   <foreignModel>EnergyComponents.ecore</foreignModel>
   <testsDirectory xsi:nil="true"/>
@@ -64,10 +65,6 @@
       <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/soil"/>
       <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/none"/>
     </genEnums>
-    <genDataTypes ecoreDataType="EnergyComponents.ecore#//QuantityDouble" create="return de.hftstuttgart.units.NullableQuantity.create(it);"
-        convert="return it == null ? null : it.toString();"/>
-    <genDataTypes ecoreDataType="EnergyComponents.ecore#//QuantityLong" create="return de.hftstuttgart.units.NullableQuantity.create(it);"
-        convert="return it == null ? null : it.toString();"/>
     <genClasses ecoreClass="EnergyComponents.ecore#//EnergyComponent">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponent/description"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponent/modelName"/>
@@ -238,7 +235,7 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//TableFunction/key"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//TableFunction/datapoints"/>
     </genClasses>
-    <genClasses documentation="y = ParameterA * ParameterB ^ x" ecoreClass="EnergyComponents.ecore#//ExponentialFunction">
+    <genClasses ecoreClass="EnergyComponents.ecore#//ExponentialFunction">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ExponentialFunction/key"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ExponentialFunction/parameterA"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ExponentialFunction/parameterB"/>
@@ -265,8 +262,7 @@
     <genClasses ecoreClass="EnergyComponents.ecore#//PolynomialCharacteristic">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//PolynomialCharacteristic/functions"/>
     </genClasses>
-    <genClasses documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
-        ecoreClass="EnergyComponents.ecore#//PolynomialFunction">
+    <genClasses ecoreClass="EnergyComponents.ecore#//PolynomialFunction">
       <genFeatures documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
           createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PolynomialFunction/key"/>
       <genFeatures documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/AllFuelTypes.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/AllFuelTypes.java
deleted file mode 100644
index 5d57482ac7f5b823cb334f067de46bdd75ce6ef3..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/AllFuelTypes.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.common.util.Enumerator;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the literals of the enumeration '<em><b>All Fuel Types</b></em>',
- * and utility methods for working with them.
- * <!-- end-user-doc -->
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getAllFuelTypes()
- * @model
- * @generated
- */
-public enum AllFuelTypes implements Enumerator {
-	/**
-	 * The '<em><b>Natural Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NATURAL_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	NATURAL_GAS(0, "naturalGas", "naturalGas"),
-
-	/**
-	 * The '<em><b>Oil</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OIL_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	OIL(1, "oil", "oil"),
-
-	/**
-	 * The '<em><b>Diesel</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DIESEL_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	DIESEL(2, "diesel", "diesel"),
-
-	/**
-	 * The '<em><b>Bio Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #BIO_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	BIO_GAS(0, "bioGas", "bioGas"),
-
-	/**
-	 * The '<em><b>Synthetic Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SYNTHETIC_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
-
-	/**
-	 * The '<em><b>Wood Pellets</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_PELLETS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
-
-	/**
-	 * The '<em><b>Wood Chips</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_CHIPS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	WOOD_CHIPS(3, "woodChips", "woodChips"),
-
-	/**
-	 * The '<em><b>Sewage Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEWAGE_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	SEWAGE_GAS(4, "sewageGas", "sewageGas");
-
-	/**
-	 * The '<em><b>Natural Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NATURAL_GAS
-	 * @model name="naturalGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int NATURAL_GAS_VALUE = 0;
-
-	/**
-	 * The '<em><b>Oil</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OIL
-	 * @model name="oil"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int OIL_VALUE = 1;
-
-	/**
-	 * The '<em><b>Diesel</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DIESEL
-	 * @model name="diesel"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int DIESEL_VALUE = 2;
-
-	/**
-	 * The '<em><b>Bio Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #BIO_GAS
-	 * @model name="bioGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int BIO_GAS_VALUE = 0;
-
-	/**
-	 * The '<em><b>Synthetic Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SYNTHETIC_GAS
-	 * @model name="syntheticGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int SYNTHETIC_GAS_VALUE = 1;
-
-	/**
-	 * The '<em><b>Wood Pellets</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_PELLETS
-	 * @model name="woodPellets"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int WOOD_PELLETS_VALUE = 2;
-
-	/**
-	 * The '<em><b>Wood Chips</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_CHIPS
-	 * @model name="woodChips"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int WOOD_CHIPS_VALUE = 3;
-
-	/**
-	 * The '<em><b>Sewage Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEWAGE_GAS
-	 * @model name="sewageGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int SEWAGE_GAS_VALUE = 4;
-
-	/**
-	 * An array of all the '<em><b>All Fuel Types</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private static final AllFuelTypes[] VALUES_ARRAY = new AllFuelTypes[] { NATURAL_GAS, OIL, DIESEL, BIO_GAS,
-			SYNTHETIC_GAS, WOOD_PELLETS, WOOD_CHIPS, SEWAGE_GAS, };
-
-	/**
-	 * A public read-only list of all the '<em><b>All Fuel Types</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static final List<AllFuelTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
-
-	/**
-	 * Returns the '<em><b>All Fuel Types</b></em>' literal with the specified literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param literal the literal.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static AllFuelTypes get(String literal) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			AllFuelTypes result = VALUES_ARRAY[i];
-			if (result.toString().equals(literal)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>All Fuel Types</b></em>' literal with the specified name.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param name the name.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static AllFuelTypes getByName(String name) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			AllFuelTypes result = VALUES_ARRAY[i];
-			if (result.getName().equals(name)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>All Fuel Types</b></em>' literal with the specified integer value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the integer value.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static AllFuelTypes get(int value) {
-		switch (value) {
-		case NATURAL_GAS_VALUE:
-			return NATURAL_GAS;
-		case OIL_VALUE:
-			return OIL;
-		case DIESEL_VALUE:
-			return DIESEL;
-		case WOOD_CHIPS_VALUE:
-			return WOOD_CHIPS;
-		case SEWAGE_GAS_VALUE:
-			return SEWAGE_GAS;
-		}
-		return null;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final int value;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String name;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String literal;
-
-	/**
-	 * Only this class can construct instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private AllFuelTypes(int value, String name, String literal) {
-		this.value = value;
-		this.name = name;
-		this.literal = literal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getLiteral() {
-		return literal;
-	}
-
-	/**
-	 * Returns the literal value of the enumerator, which is its string representation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		return literal;
-	}
-
-} //AllFuelTypes
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/BioFuelTypes.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/BioFuelTypes.java
deleted file mode 100644
index 73be31abd88f168f8c6138448eda273e9bedde56..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/BioFuelTypes.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.common.util.Enumerator;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the literals of the enumeration '<em><b>Bio Fuel Types</b></em>',
- * and utility methods for working with them.
- * <!-- end-user-doc -->
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getBioFuelTypes()
- * @model
- * @generated
- */
-public enum BioFuelTypes implements Enumerator {
-	/**
-	 * The '<em><b>Bio Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #BIO_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	BIO_GAS(0, "bioGas", "bioGas"),
-
-	/**
-	 * The '<em><b>Synthetic Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SYNTHETIC_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
-
-	/**
-	 * The '<em><b>Wood Pellets</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_PELLETS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
-
-	/**
-	 * The '<em><b>Wood Chips</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_CHIPS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	WOOD_CHIPS(3, "woodChips", "woodChips"),
-
-	/**
-	 * The '<em><b>Sewage Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEWAGE_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	SEWAGE_GAS(4, "sewageGas", "sewageGas");
-
-	/**
-	 * The '<em><b>Bio Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #BIO_GAS
-	 * @model name="bioGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int BIO_GAS_VALUE = 0;
-
-	/**
-	 * The '<em><b>Synthetic Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SYNTHETIC_GAS
-	 * @model name="syntheticGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int SYNTHETIC_GAS_VALUE = 1;
-
-	/**
-	 * The '<em><b>Wood Pellets</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_PELLETS
-	 * @model name="woodPellets"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int WOOD_PELLETS_VALUE = 2;
-
-	/**
-	 * The '<em><b>Wood Chips</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_CHIPS
-	 * @model name="woodChips"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int WOOD_CHIPS_VALUE = 3;
-
-	/**
-	 * The '<em><b>Sewage Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEWAGE_GAS
-	 * @model name="sewageGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int SEWAGE_GAS_VALUE = 4;
-
-	/**
-	 * An array of all the '<em><b>Bio Fuel Types</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private static final BioFuelTypes[] VALUES_ARRAY = new BioFuelTypes[] { BIO_GAS, SYNTHETIC_GAS, WOOD_PELLETS,
-			WOOD_CHIPS, SEWAGE_GAS, };
-
-	/**
-	 * A public read-only list of all the '<em><b>Bio Fuel Types</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static final List<BioFuelTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
-
-	/**
-	 * Returns the '<em><b>Bio Fuel Types</b></em>' literal with the specified literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param literal the literal.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static BioFuelTypes get(String literal) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			BioFuelTypes result = VALUES_ARRAY[i];
-			if (result.toString().equals(literal)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Bio Fuel Types</b></em>' literal with the specified name.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param name the name.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static BioFuelTypes getByName(String name) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			BioFuelTypes result = VALUES_ARRAY[i];
-			if (result.getName().equals(name)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Bio Fuel Types</b></em>' literal with the specified integer value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the integer value.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static BioFuelTypes get(int value) {
-		switch (value) {
-		case BIO_GAS_VALUE:
-			return BIO_GAS;
-		case SYNTHETIC_GAS_VALUE:
-			return SYNTHETIC_GAS;
-		case WOOD_PELLETS_VALUE:
-			return WOOD_PELLETS;
-		case WOOD_CHIPS_VALUE:
-			return WOOD_CHIPS;
-		case SEWAGE_GAS_VALUE:
-			return SEWAGE_GAS;
-		}
-		return null;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final int value;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String name;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String literal;
-
-	/**
-	 * Only this class can construct instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private BioFuelTypes(int value, String name, String literal) {
-		this.value = value;
-		this.name = name;
-		this.literal = literal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getLiteral() {
-		return literal;
-	}
-
-	/**
-	 * Returns the literal value of the enumerator, which is its string representation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		return literal;
-	}
-
-} //BioFuelTypes
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/BoilerTypes.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/BoilerTypes.java
index 9ec8c3d39a3a5bce4e7145e300ea0b42ba4ed029..c792c7316ae2c6c5cd2970217442d65d77897ce0 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/BoilerTypes.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/BoilerTypes.java
@@ -27,10 +27,11 @@ public enum BoilerTypes implements Enumerator {
 	 * @ordered
 	 */
 	CONDENSING_BOILER(0, "condensingBoiler", "condensingBoiler"),
+
 	/**
 	 * The '<em><b>Lowtemperature Boiler</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #LOWTEMPERATURE_BOILER_VALUE
 	 * @generated
 	 * @ordered
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ChemicalEnergyDevice.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ChemicalEnergyDevice.java
deleted file mode 100644
index 70526cff7669e0dc711074dfa5fe8b62295d7286..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ChemicalEnergyDevice.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import de.hftstuttgart.units.NullableQuantity;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Chemical Energy Device</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}</li>
- *   <li>{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getUsesFuel <em>Uses Fuel</em>}</li>
- *   <li>{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getModulationRange <em>Modulation Range</em>}</li>
- * </ul>
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice()
- * @model abstract="true"
- * @generated
- */
-public interface ChemicalEnergyDevice extends EnergyComponent {
-	/**
-	 * Returns the value of the '<em><b>Installed Thermal Power</b></em>' attribute.
-	 * The default value is <code>"kW"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * <!-- begin-model-doc -->
-	 * kW
-	 * <!-- end-model-doc -->
-	 * @return the value of the '<em>Installed Thermal Power</em>' attribute.
-	 * @see #setInstalledThermalPower(NullableQuantity)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice_InstalledThermalPower()
-	 * @model default="kW" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
-	 * @generated
-	 */
-	NullableQuantity getInstalledThermalPower();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Installed Thermal Power</em>' attribute.
-	 * @see #getInstalledThermalPower()
-	 * @generated
-	 */
-	void setInstalledThermalPower(NullableQuantity value);
-
-	/**
-	 * Returns the value of the '<em><b>Uses Fuel</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Uses Fuel</em>' reference.
-	 * @see #setUsesFuel(Fuel)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice_UsesFuel()
-	 * @model
-	 * @generated
-	 */
-	Fuel getUsesFuel();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getUsesFuel <em>Uses Fuel</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Uses Fuel</em>' reference.
-	 * @see #getUsesFuel()
-	 * @generated
-	 */
-	void setUsesFuel(Fuel value);
-
-	/**
-	 * Returns the value of the '<em><b>Modulation Range</b></em>' attribute.
-	 * The default value is <code>"0.5"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * <!-- begin-model-doc -->
-	 * share
-	 * <!-- end-model-doc -->
-	 * @return the value of the '<em>Modulation Range</em>' attribute.
-	 * @see #setModulationRange(double)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice_ModulationRange()
-	 * @model default="0.5"
-	 * @generated
-	 */
-	double getModulationRange();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getModulationRange <em>Modulation Range</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Modulation Range</em>' attribute.
-	 * @see #getModulationRange()
-	 * @generated
-	 */
-	void setModulationRange(double value);
-
-} // ChemicalEnergyDevice
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/CombinedHeatPower.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/CombinedHeatPower.java
index 82ab8250fe99341619d6c34aba3c147d94ecd33a..193fc7924781e4dba40287f33cdb8517400a61bd 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/CombinedHeatPower.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/CombinedHeatPower.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -88,7 +88,7 @@ public interface CombinedHeatPower extends ThermalEnergyDevice {
 	 * @return the value of the '<em>Installed Electrical Power</em>' attribute.
 	 * @see #setInstalledElectricalPower(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCombinedHeatPower_InstalledElectricalPower()
-	 * @model default="kW" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="kW" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getInstalledElectricalPower();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Cost.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Cost.java
index 822e56b2a82ae58ec246e39227a846b04472429d..000c59afe21684a46000594748b0ddc4c8138253 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Cost.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Cost.java
@@ -2,7 +2,8 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -31,6 +32,78 @@ import org.eclipse.emf.ecore.EObject;
  * @generated
  */
 public interface Cost extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Component Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Component Name</em>' attribute.
+	 * @see #setComponentName(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_ComponentName()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getComponentName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Component Name</em>' attribute.
+	 * @see #getComponentName()
+	 * @generated
+	 */
+	void setComponentName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * i.e. what is included in which cost category
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_Description()
+	 * @model
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Heat Source</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.TypeOfHeatSource}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Heat Source</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+	 * @see #setHeatSource(TypeOfHeatSource)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_HeatSource()
+	 * @model
+	 * @generated
+	 */
+	TypeOfHeatSource getHeatSource();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Heat Source</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+	 * @see #getHeatSource()
+	 * @generated
+	 */
+	void setHeatSource(TypeOfHeatSource value);
+
 	/**
 	 * Returns the value of the '<em><b>Datasource</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -106,7 +179,7 @@ public interface Cost extends EObject {
 	 * @return the value of the '<em>Personnel Hours</em>' attribute.
 	 * @see #setPersonnelHours(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_PersonnelHours()
-	 * @model default="10 h" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="10 h" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getPersonnelHours();
@@ -195,76 +268,4 @@ public interface Cost extends EObject {
 	 */
 	void setMaintenanceCostShare(double value);
 
-	/**
-	 * Returns the value of the '<em><b>Component Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Component Name</em>' attribute.
-	 * @see #setComponentName(String)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_ComponentName()
-	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
-	 * @generated
-	 */
-	String getComponentName();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Component Name</em>' attribute.
-	 * @see #getComponentName()
-	 * @generated
-	 */
-	void setComponentName(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * <!-- begin-model-doc -->
-	 * i.e. what is included in which cost category
-	 * <!-- end-model-doc -->
-	 * @return the value of the '<em>Description</em>' attribute.
-	 * @see #setDescription(String)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_Description()
-	 * @model
-	 * @generated
-	 */
-	String getDescription();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Description</em>' attribute.
-	 * @see #getDescription()
-	 * @generated
-	 */
-	void setDescription(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Heat Source</b></em>' attribute.
-	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.TypeOfHeatSource}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Heat Source</em>' attribute.
-	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
-	 * @see #setHeatSource(TypeOfHeatSource)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_HeatSource()
-	 * @model
-	 * @generated
-	 */
-	TypeOfHeatSource getHeatSource();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Heat Source</em>' attribute.
-	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
-	 * @see #getHeatSource()
-	 * @generated
-	 */
-	void setHeatSource(TypeOfHeatSource value);
-
 } // Cost
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ElectricalStorage.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ElectricalStorage.java
index 050848c4dd0e84542eefdf1cada3ab704389a91a..5d174c0b3ed2f590b10097d7dad40821b784334b 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ElectricalStorage.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ElectricalStorage.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -71,7 +71,7 @@ public interface ElectricalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Battery Capacity</em>' attribute.
 	 * @see #setBatteryCapacity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_BatteryCapacity()
-	 * @model default="A*h" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="A*h" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getBatteryCapacity();
@@ -101,7 +101,7 @@ public interface ElectricalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Battery Voltage</em>' attribute.
 	 * @see #setBatteryVoltage(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_BatteryVoltage()
-	 * @model default="V" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="V" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getBatteryVoltage();
@@ -232,7 +232,7 @@ public interface ElectricalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Energy Content</em>' attribute.
 	 * @see #setEnergyContent(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_EnergyContent()
-	 * @model default="5 kW*h" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="5 kW*h" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getEnergyContent();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electricity.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electricity.java
index 594ee831a0ae5ed5b05397c2e5853633568a760e..37f23c5016996b98d0343a0a8e4ce5d0fc2e9fc4 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electricity.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electricity.java
@@ -19,7 +19,6 @@ package de.hftstuttgart.energycomponents;
  * @generated
  */
 public interface Electricity extends EnergyCarrier {
-
 	/**
 	 * Returns the value of the '<em><b>Renewable Share</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -41,4 +40,5 @@ public interface Electricity extends EnergyCarrier {
 	 * @generated
 	 */
 	void setRenewableShare(double value);
+
 } // Electricity
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electrolyzer.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electrolyzer.java
index 0f971052ca9244a8ced5c65ff35f279b05cc4a48..daa10e29b9ca87c3ded080a273d72163a8e60d59 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electrolyzer.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Electrolyzer.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -63,7 +63,7 @@ public interface Electrolyzer extends EnergyComponent {
 	 * @return the value of the '<em>Cell Area</em>' attribute.
 	 * @see #setCellArea(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_CellArea()
-	 * @model default="50 cm\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="50 cm\u00b2" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getCellArea();
@@ -112,7 +112,7 @@ public interface Electrolyzer extends EnergyComponent {
 	 * @return the value of the '<em>Max Operating Current Density</em>' attribute.
 	 * @see #setMaxOperatingCurrentDensity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_MaxOperatingCurrentDensity()
-	 * @model default="3 A/cm\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="3 A/cm\u00b2" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getMaxOperatingCurrentDensity();
@@ -138,7 +138,7 @@ public interface Electrolyzer extends EnergyComponent {
 	 * @return the value of the '<em>Min Operating Current Density</em>' attribute.
 	 * @see #setMinOperatingCurrentDensity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_MinOperatingCurrentDensity()
-	 * @model default="0.3 A/cm\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="0.3 A/cm\u00b2" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getMinOperatingCurrentDensity();
@@ -164,7 +164,7 @@ public interface Electrolyzer extends EnergyComponent {
 	 * @return the value of the '<em>Overload Capacity</em>' attribute.
 	 * @see #setOverloadCapacity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_OverloadCapacity()
-	 * @model default="120 %" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="120 %" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getOverloadCapacity();
@@ -190,7 +190,7 @@ public interface Electrolyzer extends EnergyComponent {
 	 * @return the value of the '<em>Nominal Cell Voltage</em>' attribute.
 	 * @see #setNominalCellVoltage(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_NominalCellVoltage()
-	 * @model default="1.94 V" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="1.94 V" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getNominalCellVoltage();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnCompPackage.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnCompPackage.java
index 392ea7bca6f629ca68f5bb9498e4f5c47b2971dc..b35dd8d3e4615d7fd6503e2c915ac5be8bab8e6d 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnCompPackage.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnCompPackage.java
@@ -4,7 +4,6 @@ package de.hftstuttgart.energycomponents;
 
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EOperation;
 import org.eclipse.emf.ecore.EPackage;
@@ -3705,26 +3704,6 @@ public interface EnCompPackage extends EPackage {
 	 */
 	int THERMAL_STORAGE_TYPES = 45;
 
-	/**
-	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}' enum.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see de.hftstuttgart.energycomponents.FuelTypes
-	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelTypes()
-	 * @generated
-	 */
-	int FUEL_TYPES = 47;
-
-	/**
-	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}' enum.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
-	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTypeOfHeatSource()
-	 * @generated
-	 */
-	int TYPE_OF_HEAT_SOURCE = 48;
-
 	/**
 	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.cellTypesElectrolyzer <em>cell Types Electrolyzer</em>}' enum.
 	 * <!-- begin-user-doc -->
@@ -3736,24 +3715,24 @@ public interface EnCompPackage extends EPackage {
 	int CELL_TYPES_ELECTROLYZER = 46;
 
 	/**
-	 * The meta object id for the '<em>Quantity Double</em>' data type.
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see de.hftstuttgart.units.NullableQuantity
-	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityDouble()
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelTypes()
 	 * @generated
 	 */
-	int QUANTITY_DOUBLE = 49;
+	int FUEL_TYPES = 47;
 
 	/**
-	 * The meta object id for the '<em>Quantity Long</em>' data type.
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see de.hftstuttgart.units.NullableQuantity
-	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityLong()
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTypeOfHeatSource()
 	 * @generated
 	 */
-	int QUANTITY_LONG = 50;
+	int TYPE_OF_HEAT_SOURCE = 48;
 
 	/**
 	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.EnergyComponent <em>Energy Component</em>}'.
@@ -4376,6 +4355,17 @@ public interface EnCompPackage extends EPackage {
 	 */
 	EAttribute getHeatPump_HeatSource();
 
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Coefficient Of Performance</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance()
+	 * @see #getHeatPump()
+	 * @generated
+	 */
+	EReference getHeatPump_CoefficientOfPerformance();
+
 	/**
 	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.HeatPump#getPowerInput <em>Power Input</em>}'.
 	 * <!-- begin-user-doc -->
@@ -4398,17 +4388,6 @@ public interface EnCompPackage extends EPackage {
 	 */
 	EReference getHeatPump_HeatOutput();
 
-	/**
-	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Coefficient Of Performance</em>'.
-	 * @see de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance()
-	 * @see #getHeatPump()
-	 * @generated
-	 */
-	EReference getHeatPump_CoefficientOfPerformance();
-
 	/**
 	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Boiler <em>Boiler</em>}'.
 	 * <!-- begin-user-doc -->
@@ -5638,6 +5617,39 @@ public interface EnCompPackage extends EPackage {
 	 */
 	EClass getCost();
 
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Component Name</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getComponentName()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_ComponentName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getDescription()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Heat Source</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getHeatSource()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_HeatSource();
+
 	/**
 	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getDatasource <em>Datasource</em>}'.
 	 * <!-- begin-user-doc -->
@@ -5789,39 +5801,6 @@ public interface EnCompPackage extends EPackage {
 	 */
 	EOperation getPowerFunction__Powerfunction__double();
 
-	/**
-	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Component Name</em>'.
-	 * @see de.hftstuttgart.energycomponents.Cost#getComponentName()
-	 * @see #getCost()
-	 * @generated
-	 */
-	EAttribute getCost_ComponentName();
-
-	/**
-	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see de.hftstuttgart.energycomponents.Cost#getDescription()
-	 * @see #getCost()
-	 * @generated
-	 */
-	EAttribute getCost_Description();
-
-	/**
-	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Heat Source</em>'.
-	 * @see de.hftstuttgart.energycomponents.Cost#getHeatSource()
-	 * @see #getCost()
-	 * @generated
-	 */
-	EAttribute getCost_HeatSource();
-
 	/**
 	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.HeatSources <em>Heat Sources</em>}'.
 	 * <!-- begin-user-doc -->
@@ -5872,26 +5851,6 @@ public interface EnCompPackage extends EPackage {
 	 */
 	EEnum getThermalStorageTypes();
 
-	/**
-	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for enum '<em>Fuel Types</em>'.
-	 * @see de.hftstuttgart.energycomponents.FuelTypes
-	 * @generated
-	 */
-	EEnum getFuelTypes();
-
-	/**
-	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for enum '<em>Type Of Heat Source</em>'.
-	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
-	 * @generated
-	 */
-	EEnum getTypeOfHeatSource();
-
 	/**
 	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.cellTypesElectrolyzer <em>cell Types Electrolyzer</em>}'.
 	 * <!-- begin-user-doc -->
@@ -5903,26 +5862,24 @@ public interface EnCompPackage extends EPackage {
 	EEnum getcellTypesElectrolyzer();
 
 	/**
-	 * Returns the meta object for data type '{@link de.hftstuttgart.units.NullableQuantity <em>Quantity Double</em>}'.
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for data type '<em>Quantity Double</em>'.
-	 * @see de.hftstuttgart.units.NullableQuantity
-	 * @model instanceClass="de.hftstuttgart.units.NullableQuantity"
+	 * @return the meta object for enum '<em>Fuel Types</em>'.
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
 	 * @generated
 	 */
-	EDataType getQuantityDouble();
+	EEnum getFuelTypes();
 
 	/**
-	 * Returns the meta object for data type '{@link de.hftstuttgart.units.NullableQuantity <em>Quantity Long</em>}'.
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for data type '<em>Quantity Long</em>'.
-	 * @see de.hftstuttgart.units.NullableQuantity
-	 * @model instanceClass="de.hftstuttgart.units.NullableQuantity"
+	 * @return the meta object for enum '<em>Type Of Heat Source</em>'.
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
 	 * @generated
 	 */
-	EDataType getQuantityLong();
+	EEnum getTypeOfHeatSource();
 
 	/**
 	 * Returns the factory that creates the instances of the model.
@@ -6426,28 +6383,28 @@ public interface EnCompPackage extends EPackage {
 		EAttribute HEAT_PUMP__HEAT_SOURCE = eINSTANCE.getHeatPump_HeatSource();
 
 		/**
-		 * The meta object literal for the '<em><b>Power Input</b></em>' containment reference feature.
+		 * The meta object literal for the '<em><b>Coefficient Of Performance</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference HEAT_PUMP__POWER_INPUT = eINSTANCE.getHeatPump_PowerInput();
+		EReference HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE = eINSTANCE.getHeatPump_CoefficientOfPerformance();
 
 		/**
-		 * The meta object literal for the '<em><b>Heat Output</b></em>' containment reference feature.
+		 * The meta object literal for the '<em><b>Power Input</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference HEAT_PUMP__HEAT_OUTPUT = eINSTANCE.getHeatPump_HeatOutput();
+		EReference HEAT_PUMP__POWER_INPUT = eINSTANCE.getHeatPump_PowerInput();
 
 		/**
-		 * The meta object literal for the '<em><b>Coefficient Of Performance</b></em>' containment reference feature.
+		 * The meta object literal for the '<em><b>Heat Output</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE = eINSTANCE.getHeatPump_CoefficientOfPerformance();
+		EReference HEAT_PUMP__HEAT_OUTPUT = eINSTANCE.getHeatPump_HeatOutput();
 
 		/**
 		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.BoilerImpl <em>Boiler</em>}' class.
@@ -7444,6 +7401,30 @@ public interface EnCompPackage extends EPackage {
 		 */
 		EClass COST = eINSTANCE.getCost();
 
+		/**
+		 * The meta object literal for the '<em><b>Component Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__COMPONENT_NAME = eINSTANCE.getCost_ComponentName();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__DESCRIPTION = eINSTANCE.getCost_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Source</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__HEAT_SOURCE = eINSTANCE.getCost_HeatSource();
+
 		/**
 		 * The meta object literal for the '<em><b>Datasource</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
@@ -7560,30 +7541,6 @@ public interface EnCompPackage extends EPackage {
 		 */
 		EOperation POWER_FUNCTION___POWERFUNCTION__DOUBLE = eINSTANCE.getPowerFunction__Powerfunction__double();
 
-		/**
-		 * The meta object literal for the '<em><b>Component Name</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute COST__COMPONENT_NAME = eINSTANCE.getCost_ComponentName();
-
-		/**
-		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute COST__DESCRIPTION = eINSTANCE.getCost_Description();
-
-		/**
-		 * The meta object literal for the '<em><b>Heat Source</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute COST__HEAT_SOURCE = eINSTANCE.getCost_HeatSource();
-
 		/**
 		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.HeatSources <em>Heat Sources</em>}' enum.
 		 * <!-- begin-user-doc -->
@@ -7634,26 +7591,6 @@ public interface EnCompPackage extends EPackage {
 		 */
 		EEnum THERMAL_STORAGE_TYPES = eINSTANCE.getThermalStorageTypes();
 
-		/**
-		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}' enum.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see de.hftstuttgart.energycomponents.FuelTypes
-		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelTypes()
-		 * @generated
-		 */
-		EEnum FUEL_TYPES = eINSTANCE.getFuelTypes();
-
-		/**
-		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}' enum.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
-		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTypeOfHeatSource()
-		 * @generated
-		 */
-		EEnum TYPE_OF_HEAT_SOURCE = eINSTANCE.getTypeOfHeatSource();
-
 		/**
 		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.cellTypesElectrolyzer <em>cell Types Electrolyzer</em>}' enum.
 		 * <!-- begin-user-doc -->
@@ -7665,24 +7602,24 @@ public interface EnCompPackage extends EPackage {
 		EEnum CELL_TYPES_ELECTROLYZER = eINSTANCE.getcellTypesElectrolyzer();
 
 		/**
-		 * The meta object literal for the '<em>Quantity Double</em>' data type.
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see de.hftstuttgart.units.NullableQuantity
-		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityDouble()
+		 * @see de.hftstuttgart.energycomponents.FuelTypes
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelTypes()
 		 * @generated
 		 */
-		EDataType QUANTITY_DOUBLE = eINSTANCE.getQuantityDouble();
+		EEnum FUEL_TYPES = eINSTANCE.getFuelTypes();
 
 		/**
-		 * The meta object literal for the '<em>Quantity Long</em>' data type.
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see de.hftstuttgart.units.NullableQuantity
-		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityLong()
+		 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTypeOfHeatSource()
 		 * @generated
 		 */
-		EDataType QUANTITY_LONG = eINSTANCE.getQuantityLong();
+		EEnum TYPE_OF_HEAT_SOURCE = eINSTANCE.getTypeOfHeatSource();
 
 	}
 
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnergyCarrier.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnergyCarrier.java
index 9bbcefe81a1a90c07c141bcad45ea6532fee1d87..2b42ec659685b02af75dd84a6687eff591cf07d1 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnergyCarrier.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnergyCarrier.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 import org.eclipse.emf.ecore.EObject;
 
@@ -34,7 +34,7 @@ public interface EnergyCarrier extends EObject {
 	 * @return the value of the '<em>Co2 Emissions Factor</em>' attribute.
 	 * @see #setCo2EmissionsFactor(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyCarrier_Co2EmissionsFactor()
-	 * @model default="t/MW*h" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="t/MW*h" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getCo2EmissionsFactor();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnergyCarriers.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnergyCarriers.java
deleted file mode 100644
index 8b66b04eed16938feefd05e99ad4c33eaf168b53..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/EnergyCarriers.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.common.util.Enumerator;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the literals of the enumeration '<em><b>Energy Carriers</b></em>',
- * and utility methods for working with them.
- * <!-- end-user-doc -->
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyCarriers()
- * @model
- * @generated
- */
-public enum EnergyCarriers implements Enumerator {
-	/**
-	 * The '<em><b>Natural Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NATURAL_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	NATURAL_GAS(0, "naturalGas", "naturalGas"),
-
-	/**
-	 * The '<em><b>Oil</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OIL_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	OIL(1, "oil", "oil"),
-
-	/**
-	 * The '<em><b>Diesel</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DIESEL_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	DIESEL(2, "diesel", "diesel"),
-
-	/**
-	 * The '<em><b>Bio Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #BIO_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	BIO_GAS(0, "bioGas", "bioGas"),
-
-	/**
-	 * The '<em><b>Synthetic Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SYNTHETIC_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
-
-	/**
-	 * The '<em><b>Wood Pellets</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_PELLETS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
-
-	/**
-	 * The '<em><b>Wood Chips</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_CHIPS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	WOOD_CHIPS(3, "woodChips", "woodChips"),
-
-	/**
-	 * The '<em><b>Sewage Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEWAGE_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	SEWAGE_GAS(4, "sewageGas", "sewageGas"),
-
-	/**
-	 * The '<em><b>Electricity</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ELECTRICITY_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	ELECTRICITY(8, "electricity", "electricity"),
-
-	/**
-	 * The '<em><b>Hydrogen</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #HYDROGEN_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	HYDROGEN(9, "hydrogen", "hydrogen");
-
-	/**
-	 * The '<em><b>Natural Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NATURAL_GAS
-	 * @model name="naturalGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int NATURAL_GAS_VALUE = 0;
-
-	/**
-	 * The '<em><b>Oil</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OIL
-	 * @model name="oil"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int OIL_VALUE = 1;
-
-	/**
-	 * The '<em><b>Diesel</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DIESEL
-	 * @model name="diesel"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int DIESEL_VALUE = 2;
-
-	/**
-	 * The '<em><b>Bio Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #BIO_GAS
-	 * @model name="bioGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int BIO_GAS_VALUE = 0;
-
-	/**
-	 * The '<em><b>Synthetic Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SYNTHETIC_GAS
-	 * @model name="syntheticGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int SYNTHETIC_GAS_VALUE = 1;
-
-	/**
-	 * The '<em><b>Wood Pellets</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_PELLETS
-	 * @model name="woodPellets"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int WOOD_PELLETS_VALUE = 2;
-
-	/**
-	 * The '<em><b>Wood Chips</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #WOOD_CHIPS
-	 * @model name="woodChips"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int WOOD_CHIPS_VALUE = 3;
-
-	/**
-	 * The '<em><b>Sewage Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEWAGE_GAS
-	 * @model name="sewageGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int SEWAGE_GAS_VALUE = 4;
-
-	/**
-	 * The '<em><b>Electricity</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ELECTRICITY
-	 * @model name="electricity"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int ELECTRICITY_VALUE = 8;
-
-	/**
-	 * The '<em><b>Hydrogen</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #HYDROGEN
-	 * @model name="hydrogen"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int HYDROGEN_VALUE = 9;
-
-	/**
-	 * An array of all the '<em><b>Energy Carriers</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private static final EnergyCarriers[] VALUES_ARRAY = new EnergyCarriers[] { NATURAL_GAS, OIL, DIESEL, BIO_GAS,
-			SYNTHETIC_GAS, WOOD_PELLETS, WOOD_CHIPS, SEWAGE_GAS, ELECTRICITY, HYDROGEN, };
-
-	/**
-	 * A public read-only list of all the '<em><b>Energy Carriers</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static final List<EnergyCarriers> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
-
-	/**
-	 * Returns the '<em><b>Energy Carriers</b></em>' literal with the specified literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param literal the literal.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static EnergyCarriers get(String literal) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			EnergyCarriers result = VALUES_ARRAY[i];
-			if (result.toString().equals(literal)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Energy Carriers</b></em>' literal with the specified name.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param name the name.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static EnergyCarriers getByName(String name) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			EnergyCarriers result = VALUES_ARRAY[i];
-			if (result.getName().equals(name)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Energy Carriers</b></em>' literal with the specified integer value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the integer value.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static EnergyCarriers get(int value) {
-		switch (value) {
-		case NATURAL_GAS_VALUE:
-			return NATURAL_GAS;
-		case OIL_VALUE:
-			return OIL;
-		case DIESEL_VALUE:
-			return DIESEL;
-		case WOOD_CHIPS_VALUE:
-			return WOOD_CHIPS;
-		case SEWAGE_GAS_VALUE:
-			return SEWAGE_GAS;
-		case ELECTRICITY_VALUE:
-			return ELECTRICITY;
-		case HYDROGEN_VALUE:
-			return HYDROGEN;
-		}
-		return null;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final int value;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String name;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String literal;
-
-	/**
-	 * Only this class can construct instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EnergyCarriers(int value, String name, String literal) {
-		this.value = value;
-		this.name = name;
-		this.literal = literal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getLiteral() {
-		return literal;
-	}
-
-	/**
-	 * Returns the literal value of the enumerator, which is its string representation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		return literal;
-	}
-
-} //EnergyCarriers
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/FossilFuelTypes.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/FossilFuelTypes.java
deleted file mode 100644
index eb90beb8f5a8cd2002ecdc0cf3e0d9275757aacf..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/FossilFuelTypes.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.common.util.Enumerator;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the literals of the enumeration '<em><b>Fossil Fuel Types</b></em>',
- * and utility methods for working with them.
- * <!-- end-user-doc -->
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getFossilFuelTypes()
- * @model
- * @generated
- */
-public enum FossilFuelTypes implements Enumerator {
-	/**
-	 * The '<em><b>Natural Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NATURAL_GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	NATURAL_GAS(0, "naturalGas", "naturalGas"),
-
-	/**
-	 * The '<em><b>Oil</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OIL_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	OIL(1, "oil", "oil"),
-
-	/**
-	 * The '<em><b>Diesel</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DIESEL_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	DIESEL(2, "diesel", "diesel"),
-	/**
-	 * The '<em><b>LNG</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
-	 * @see #LNG_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	LNG(3, "LNG", "LNG"),
-	/**
-	 * The '<em><b>CNG</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
-	 * @see #CNG_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	CNG(4, "CNG", "CNG");
-
-	/**
-	 * The '<em><b>Natural Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NATURAL_GAS
-	 * @model name="naturalGas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int NATURAL_GAS_VALUE = 0;
-
-	/**
-	 * The '<em><b>Oil</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OIL
-	 * @model name="oil"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int OIL_VALUE = 1;
-
-	/**
-	 * The '<em><b>Diesel</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DIESEL
-	 * @model name="diesel"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int DIESEL_VALUE = 2;
-
-	/**
-	 * The '<em><b>LNG</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #LNG
-	 * @model
-	 * @generated
-	 * @ordered
-	 */
-	public static final int LNG_VALUE = 3;
-
-	/**
-	 * The '<em><b>CNG</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CNG
-	 * @model
-	 * @generated
-	 * @ordered
-	 */
-	public static final int CNG_VALUE = 4;
-
-	/**
-	 * An array of all the '<em><b>Fossil Fuel Types</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private static final FossilFuelTypes[] VALUES_ARRAY = new FossilFuelTypes[] { NATURAL_GAS, OIL, DIESEL, LNG, CNG, };
-
-	/**
-	 * A public read-only list of all the '<em><b>Fossil Fuel Types</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static final List<FossilFuelTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
-
-	/**
-	 * Returns the '<em><b>Fossil Fuel Types</b></em>' literal with the specified literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param literal the literal.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static FossilFuelTypes get(String literal) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			FossilFuelTypes result = VALUES_ARRAY[i];
-			if (result.toString().equals(literal)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Fossil Fuel Types</b></em>' literal with the specified name.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param name the name.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static FossilFuelTypes getByName(String name) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			FossilFuelTypes result = VALUES_ARRAY[i];
-			if (result.getName().equals(name)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Fossil Fuel Types</b></em>' literal with the specified integer value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the integer value.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static FossilFuelTypes get(int value) {
-		switch (value) {
-		case NATURAL_GAS_VALUE:
-			return NATURAL_GAS;
-		case OIL_VALUE:
-			return OIL;
-		case DIESEL_VALUE:
-			return DIESEL;
-		case LNG_VALUE:
-			return LNG;
-		case CNG_VALUE:
-			return CNG;
-		}
-		return null;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final int value;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String name;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String literal;
-
-	/**
-	 * Only this class can construct instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private FossilFuelTypes(int value, String name, String literal) {
-		this.value = value;
-		this.name = name;
-		this.literal = literal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getLiteral() {
-		return literal;
-	}
-
-	/**
-	 * Returns the literal value of the enumerator, which is its string representation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		return literal;
-	}
-
-} //FossilFuelTypes
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Fuel.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Fuel.java
index b922afa2fbb055dde1186d689d1a51e9a5375337..c187a9454c9a28bb600f94c577416ad540ddbaf3 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Fuel.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Fuel.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -36,7 +36,7 @@ public interface Fuel extends EnergyCarrier {
 	 * @return the value of the '<em>Net Calorific Value</em>' attribute.
 	 * @see #setNetCalorificValue(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel_NetCalorificValue()
-	 * @model default="(kW*h)/m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="(kW*h)/m\u00b3" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getNetCalorificValue();
@@ -63,7 +63,7 @@ public interface Fuel extends EnergyCarrier {
 	 * @return the value of the '<em>Gross Calorific Value</em>' attribute.
 	 * @see #setGrossCalorificValue(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel_GrossCalorificValue()
-	 * @model default="(kW*h)/m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="(kW*h)/m\u00b3" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getGrossCalorificValue();
@@ -89,7 +89,7 @@ public interface Fuel extends EnergyCarrier {
 	 * @return the value of the '<em>Density</em>' attribute.
 	 * @see #setDensity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel_Density()
-	 * @model default="kg/m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="kg/m\u00b3" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getDensity();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/FuelTypes.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/FuelTypes.java
index 3d8a3d105c216bc836c4d6e5b87e407be93953eb..5a26ed0c612f8d2de56aca4152d80c8b0a50ab11 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/FuelTypes.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/FuelTypes.java
@@ -27,73 +27,81 @@ public enum FuelTypes implements Enumerator {
 	 * @ordered
 	 */
 	NATURAL_GAS(0, "naturalGas", "naturalGas"),
+
 	/**
 	 * The '<em><b>Oil</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #OIL_VALUE
 	 * @generated
 	 * @ordered
 	 */
 	OIL(1, "oil", "oil"),
+
 	/**
 	 * The '<em><b>Diesel</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #DIESEL_VALUE
 	 * @generated
 	 * @ordered
 	 */
 	DIESEL(2, "diesel", "diesel"),
+
 	/**
 	 * The '<em><b>Bio Gas</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #BIO_GAS_VALUE
 	 * @generated
 	 * @ordered
 	 */
 	BIO_GAS(0, "bioGas", "bioGas"),
+
 	/**
 	 * The '<em><b>Synthetic Gas</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #SYNTHETIC_GAS_VALUE
 	 * @generated
 	 * @ordered
 	 */
 	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
+
 	/**
 	 * The '<em><b>Wood Pellets</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #WOOD_PELLETS_VALUE
 	 * @generated
 	 * @ordered
 	 */
 	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
+
 	/**
 	 * The '<em><b>Wood Chips</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #WOOD_CHIPS_VALUE
 	 * @generated
 	 * @ordered
 	 */
 	WOOD_CHIPS(3, "woodChips", "woodChips"),
+
 	/**
 	 * The '<em><b>Sewage Gas</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #SEWAGE_GAS_VALUE
 	 * @generated
 	 * @ordered
 	 */
 	SEWAGE_GAS(4, "sewageGas", "sewageGas"),
+
 	/**
 	 * The '<em><b>Electricity</b></em>' literal object.
 	 * <!-- begin-user-doc -->
-	* <!-- end-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #ELECTRICITY_VALUE
 	 * @generated
 	 * @ordered
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/GeothermalHeatExchanger.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/GeothermalHeatExchanger.java
index 37fc2162556b7cc3fe0b47ae5419a5271f8ecdfe..4ca75f010cca5fc2d5b192c9a11a880c47046267 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/GeothermalHeatExchanger.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/GeothermalHeatExchanger.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -29,7 +29,7 @@ public interface GeothermalHeatExchanger extends EnergyComponent {
 	 * @return the value of the '<em>Pipe Diameter</em>' attribute.
 	 * @see #setPipeDiameter(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getGeothermalHeatExchanger_PipeDiameter()
-	 * @model default="1 cm" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="1 cm" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getPipeDiameter();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatExchanger.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatExchanger.java
index f60aed823a740ae905ee9bd722d9c41eef80dc48..5646603f6d760551f1941771ba45de75bee0821f 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatExchanger.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatExchanger.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -56,7 +56,7 @@ public interface HeatExchanger extends EnergyComponent {
 	 * @return the value of the '<em>Nominal Electricity Consumption</em>' attribute.
 	 * @see #setNominalElectricityConsumption(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatExchanger_NominalElectricityConsumption()
-	 * @model default="W" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="W" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getNominalElectricityConsumption();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatPump.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatPump.java
index 8b4c57d6d0e6ff8e84cec60eb0e0e486215b7e19..c04c11da9c15beebc877dd68eb468615150d30cf 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatPump.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HeatPump.java
@@ -47,6 +47,28 @@ public interface HeatPump extends ThermalEnergyDevice {
 	 */
 	void setHeatSource(HeatSources value);
 
+	/**
+	 * Returns the value of the '<em><b>Coefficient Of Performance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Coefficient Of Performance</em>' containment reference.
+	 * @see #setCoefficientOfPerformance(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_CoefficientOfPerformance()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Characteristic getCoefficientOfPerformance();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Coefficient Of Performance</em>' containment reference.
+	 * @see #getCoefficientOfPerformance()
+	 * @generated
+	 */
+	void setCoefficientOfPerformance(Characteristic value);
+
 	/**
 	 * Returns the value of the '<em><b>Power Input</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -91,26 +113,4 @@ public interface HeatPump extends ThermalEnergyDevice {
 	 */
 	void setHeatOutput(Characteristic value);
 
-	/**
-	 * Returns the value of the '<em><b>Coefficient Of Performance</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Coefficient Of Performance</em>' containment reference.
-	 * @see #setCoefficientOfPerformance(Characteristic)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_CoefficientOfPerformance()
-	 * @model containment="true" required="true"
-	 * @generated
-	 */
-	Characteristic getCoefficientOfPerformance();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Coefficient Of Performance</em>' containment reference.
-	 * @see #getCoefficientOfPerformance()
-	 * @generated
-	 */
-	void setCoefficientOfPerformance(Characteristic value);
-
 } // HeatPump
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Hydrocarbon.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Hydrocarbon.java
deleted file mode 100644
index 2ec7a02b11c4f5adb14cf0e229ebbb8b70421c46..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Hydrocarbon.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Hydrocarbon</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrocarbon()
- * @model
- * @generated
- */
-public interface Hydrocarbon extends Medium {
-} // Hydrocarbon
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenCompressor.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenCompressor.java
index aaaf886c2a0ed12d80da33a278890d6871c5bee0..928eb6f9de16b717ea136a1d379ba6d3c6de588b 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenCompressor.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenCompressor.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -84,7 +84,7 @@ public interface HydrogenCompressor extends EnergyComponent {
 	 * @return the value of the '<em>Max Pressure</em>' attribute.
 	 * @see #setMaxPressure(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenCompressor_MaxPressure()
-	 * @model default="50 MPa" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="50 MPa" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getMaxPressure();
@@ -110,7 +110,7 @@ public interface HydrogenCompressor extends EnergyComponent {
 	 * @return the value of the '<em>Max Delivery Rate</em>' attribute.
 	 * @see #setMaxDeliveryRate(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenCompressor_MaxDeliveryRate()
-	 * @model default="9 kg/h" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="9 kg/h" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getMaxDeliveryRate();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenStorage.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenStorage.java
index 946268165e5c5f294aa6cb05356e54792a29bfba..731ad72da86663e8d9df687b80de20c3799016fd 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenStorage.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/HydrogenStorage.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -57,7 +57,7 @@ public interface HydrogenStorage extends EnergyComponent {
 	 * @return the value of the '<em>Cylinder Volume</em>' attribute.
 	 * @see #setCylinderVolume(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenStorage_CylinderVolume()
-	 * @model default="1.5 m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="1.5 m\u00b3" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getCylinderVolume();
@@ -80,7 +80,7 @@ public interface HydrogenStorage extends EnergyComponent {
 	 * @return the value of the '<em>Nominal Pressure</em>' attribute.
 	 * @see #setNominalPressure(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenStorage_NominalPressure()
-	 * @model default="25 MPa" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="25 MPa" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getNominalPressure();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/InvestmentCost.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/InvestmentCost.java
deleted file mode 100644
index 24a352798300c2640feb54fedb01e2f9ea489f16..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/InvestmentCost.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Investment Cost</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link de.hftstuttgart.energycomponents.InvestmentCost#getOtherInvestmentCost <em>Other Investment Cost</em>}</li>
- *   <li>{@link de.hftstuttgart.energycomponents.InvestmentCost#getInvestmentCost <em>Investment Cost</em>}</li>
- * </ul>
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getInvestmentCost()
- * @model abstract="true"
- * @generated
- */
-public interface InvestmentCost extends EObject {
-	/**
-	 * Returns the value of the '<em><b>Other Investment Cost</b></em>' attribute.
-	 * The default value is <code>"0"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Other Investment Cost</em>' attribute.
-	 * @see #setOtherInvestmentCost(double)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getInvestmentCost_OtherInvestmentCost()
-	 * @model default="0"
-	 * @generated
-	 */
-	double getOtherInvestmentCost();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.InvestmentCost#getOtherInvestmentCost <em>Other Investment Cost</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Other Investment Cost</em>' attribute.
-	 * @see #getOtherInvestmentCost()
-	 * @generated
-	 */
-	void setOtherInvestmentCost(double value);
-
-	/**
-	 * Returns the value of the '<em><b>Investment Cost</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Investment Cost</em>' containment reference.
-	 * @see #setInvestmentCost(Characteristic)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getInvestmentCost_InvestmentCost()
-	 * @model containment="true" required="true"
-	 * @generated
-	 */
-	Characteristic getInvestmentCost();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.InvestmentCost#getInvestmentCost <em>Investment Cost</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Investment Cost</em>' containment reference.
-	 * @see #getInvestmentCost()
-	 * @generated
-	 */
-	void setInvestmentCost(Characteristic value);
-
-} // InvestmentCost
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Material.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Material.java
index 6d5b89ef9baaae4911064ed11401e7fad6381379..6181f3f07242c87ea1a0284ecab510549c24e8c6 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Material.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Material.java
@@ -2,7 +2,8 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -34,7 +35,7 @@ public interface Material extends EObject {
 	 * @return the value of the '<em>Thermal Conductivity</em>' attribute.
 	 * @see #setThermalConductivity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMaterial_ThermalConductivity()
-	 * @model default=" W/(m*K)" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default=" W/(m*K)" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getThermalConductivity();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Medium.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Medium.java
index aa73ba0da242462e4710da27202ed2c734a429fb..63381bfd8c388962a38a4584262c3d4765b9fb35 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Medium.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Medium.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 import org.eclipse.emf.ecore.EObject;
 
@@ -38,7 +38,7 @@ public interface Medium extends EObject {
 	 * @return the value of the '<em>Density</em>' attribute.
 	 * @see #setDensity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_Density()
-	 * @model default="g/cm\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="g/cm\u00b3" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getDensity();
@@ -64,7 +64,7 @@ public interface Medium extends EObject {
 	 * @return the value of the '<em>Heat Capacity</em>' attribute.
 	 * @see #setHeatCapacity(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_HeatCapacity()
-	 * @model default="kJ/(kg*K)" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="kJ/(kg*K)" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getHeatCapacity();
@@ -90,7 +90,7 @@ public interface Medium extends EObject {
 	 * @return the value of the '<em>Evaporation Temperature</em>' attribute.
 	 * @see #setEvaporationTemperature(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_EvaporationTemperature()
-	 * @model default="\u00b0C" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="\u00b0C" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getEvaporationTemperature();
@@ -116,7 +116,7 @@ public interface Medium extends EObject {
 	 * @return the value of the '<em>Melting Temperature</em>' attribute.
 	 * @see #setMeltingTemperature(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_MeltingTemperature()
-	 * @model default="\u00b0C" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="\u00b0C" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getMeltingTemperature();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/NewEClass40.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/NewEClass40.java
deleted file mode 100644
index bd6610e28ad493df26ac1bf675121347294d16c3..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/NewEClass40.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import org.eclipse.emf.common.util.EList;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>New EClass40</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link de.hftstuttgart.energycomponents.NewEClass40#getOtherCost <em>Other Cost</em>}</li>
- *   <li>{@link de.hftstuttgart.energycomponents.NewEClass40#getMaintenanceCost <em>Maintenance Cost</em>}</li>
- *   <li>{@link de.hftstuttgart.energycomponents.NewEClass40#getInvestmentCost <em>Investment Cost</em>}</li>
- * </ul>
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40()
- * @model
- * @generated
- */
-public interface NewEClass40 extends EnergyComponentsCostCatalog {
-	/**
-	 * Returns the value of the '<em><b>Other Cost</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Other Cost</em>' attribute.
-	 * @see #setOtherCost(double)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40_OtherCost()
-	 * @model
-	 * @generated
-	 */
-	double getOtherCost();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.NewEClass40#getOtherCost <em>Other Cost</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Other Cost</em>' attribute.
-	 * @see #getOtherCost()
-	 * @generated
-	 */
-	void setOtherCost(double value);
-
-	/**
-	 * Returns the value of the '<em><b>Maintenance Cost</b></em>' attribute.
-	 * The default value is <code>"0.015"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * <!-- begin-model-doc -->
-	 * percentage of total investment cost
-	 * <!-- end-model-doc -->
-	 * @return the value of the '<em>Maintenance Cost</em>' attribute.
-	 * @see #setMaintenanceCost(double)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40_MaintenanceCost()
-	 * @model default="0.015"
-	 * @generated
-	 */
-	double getMaintenanceCost();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.NewEClass40#getMaintenanceCost <em>Maintenance Cost</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Maintenance Cost</em>' attribute.
-	 * @see #getMaintenanceCost()
-	 * @generated
-	 */
-	void setMaintenanceCost(double value);
-
-	/**
-	 * Returns the value of the '<em><b>Investment Cost</b></em>' containment reference list.
-	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Characteristic}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Investment Cost</em>' containment reference list.
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40_InvestmentCost()
-	 * @model containment="true"
-	 * @generated
-	 */
-	EList<Characteristic> getInvestmentCost();
-
-} // NewEClass40
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PersonnelCost.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PersonnelCost.java
deleted file mode 100644
index bef3c6ecbb7688e2440a5bc3e73b73217c5b74b1..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PersonnelCost.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import de.hftstuttgart.units.NullableQuantity;
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Personnel Cost</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelHours <em>Personnel Hours</em>}</li>
- *   <li>{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelCostShare <em>Personnel Cost Share</em>}</li>
- * </ul>
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getPersonnelCost()
- * @model abstract="true"
- * @generated
- */
-public interface PersonnelCost extends EObject {
-	/**
-	 * Returns the value of the '<em><b>Personnel Hours</b></em>' attribute.
-	 * The default value is <code>"10 h"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Personnel Hours</em>' attribute.
-	 * @see #setPersonnelHours(NullableQuantity)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPersonnelCost_PersonnelHours()
-	 * @model default="10 h" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
-	 * @generated
-	 */
-	NullableQuantity getPersonnelHours();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelHours <em>Personnel Hours</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Personnel Hours</em>' attribute.
-	 * @see #getPersonnelHours()
-	 * @generated
-	 */
-	void setPersonnelHours(NullableQuantity value);
-
-	/**
-	 * Returns the value of the '<em><b>Personnel Cost Share</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Personnel Cost Share</em>' attribute.
-	 * @see #setPersonnelCostShare(double)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPersonnelCost_PersonnelCostShare()
-	 * @model
-	 * @generated
-	 */
-	double getPersonnelCostShare();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelCostShare <em>Personnel Cost Share</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Personnel Cost Share</em>' attribute.
-	 * @see #getPersonnelCostShare()
-	 * @generated
-	 */
-	void setPersonnelCostShare(double value);
-
-} // PersonnelCost
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PhotovoltaicModule.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PhotovoltaicModule.java
index 146be7b37c2cac70c17015db69762959ded20254..8b5e79abbe4b8135fb8704e5b4e7246750e6f325 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PhotovoltaicModule.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PhotovoltaicModule.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 import org.eclipse.emf.common.util.Enumerator;
 
@@ -61,7 +61,7 @@ public interface PhotovoltaicModule extends EnergyComponent {
 	 * @return the value of the '<em>Nominal Power</em>' attribute.
 	 * @see #setNominalPower(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_NominalPower()
-	 * @model default="W" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="W" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getNominalPower();
@@ -87,7 +87,7 @@ public interface PhotovoltaicModule extends EnergyComponent {
 	 * @return the value of the '<em>Mpp Voltage</em>' attribute.
 	 * @see #setMppVoltage(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_MppVoltage()
-	 * @model default="V" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="V" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getMppVoltage();
@@ -113,7 +113,7 @@ public interface PhotovoltaicModule extends EnergyComponent {
 	 * @return the value of the '<em>Mpp Current</em>' attribute.
 	 * @see #setMppCurrent(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_MppCurrent()
-	 * @model default="A" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="A" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getMppCurrent();
@@ -165,7 +165,7 @@ public interface PhotovoltaicModule extends EnergyComponent {
 	 * @return the value of the '<em>Module Area</em>' attribute.
 	 * @see #setModuleArea(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_ModuleArea()
-	 * @model default="m\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="m\u00b2" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getModuleArea();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PolynomialFunction.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PolynomialFunction.java
index 71065cf67cf4a08048f423bd8fa916b54e4558a4..26ea53820a1954b4655d7459b7be84a3b74bc37b 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PolynomialFunction.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PolynomialFunction.java
@@ -9,10 +9,6 @@ import org.eclipse.emf.ecore.EObject;
  * A representation of the model object '<em><b>Polynomial Function</b></em>'.
  * <!-- end-user-doc -->
  *
- * <!-- begin-model-doc -->
- * y = ParameterA * x^2 + ParameterB * x + ParameterC
- * <!-- end-model-doc -->
- *
  * <p>
  * The following features are supported:
  * </p>
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PowerSources.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PowerSources.java
deleted file mode 100644
index 601b9643efae0877441e519489327d8014bb8a36..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/PowerSources.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.common.util.Enumerator;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the literals of the enumeration '<em><b>Power Sources</b></em>',
- * and utility methods for working with them.
- * <!-- end-user-doc -->
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerSources()
- * @model
- * @generated
- */
-public enum PowerSources implements Enumerator {
-	/**
-	 * The '<em><b>Electricity</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ELECTRICITY_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	ELECTRICITY(0, "electricity", "electricity"),
-
-	/**
-	 * The '<em><b>Gas</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #GAS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	GAS(1, "gas", "gas");
-
-	/**
-	 * The '<em><b>Electricity</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ELECTRICITY
-	 * @model name="electricity"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int ELECTRICITY_VALUE = 0;
-
-	/**
-	 * The '<em><b>Gas</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #GAS
-	 * @model name="gas"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int GAS_VALUE = 1;
-
-	/**
-	 * An array of all the '<em><b>Power Sources</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private static final PowerSources[] VALUES_ARRAY = new PowerSources[] { ELECTRICITY, GAS, };
-
-	/**
-	 * A public read-only list of all the '<em><b>Power Sources</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static final List<PowerSources> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
-
-	/**
-	 * Returns the '<em><b>Power Sources</b></em>' literal with the specified literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param literal the literal.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static PowerSources get(String literal) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			PowerSources result = VALUES_ARRAY[i];
-			if (result.toString().equals(literal)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Power Sources</b></em>' literal with the specified name.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param name the name.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static PowerSources getByName(String name) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			PowerSources result = VALUES_ARRAY[i];
-			if (result.getName().equals(name)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Power Sources</b></em>' literal with the specified integer value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the integer value.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static PowerSources get(int value) {
-		switch (value) {
-		case ELECTRICITY_VALUE:
-			return ELECTRICITY;
-		case GAS_VALUE:
-			return GAS;
-		}
-		return null;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final int value;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String name;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private final String literal;
-
-	/**
-	 * Only this class can construct instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private PowerSources(int value, String name, String literal) {
-		this.value = value;
-		this.name = name;
-		this.literal = literal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getLiteral() {
-		return literal;
-	}
-
-	/**
-	 * Returns the literal value of the enumerator, which is its string representation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		return literal;
-	}
-
-} //PowerSources
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/RegularFuel.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/RegularFuel.java
deleted file mode 100644
index 608c32a4ee16ab3503f87b1d4fec96e62d7b1930..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/RegularFuel.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Regular Fuel</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getRegularFuel()
- * @model abstract="true"
- * @generated
- */
-public interface RegularFuel extends Fuel {
-} // RegularFuel
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/SaltHydrate.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/SaltHydrate.java
deleted file mode 100644
index e55a6580777d618410271d142015c98c392d4d06..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/SaltHydrate.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Salt Hydrate</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getSaltHydrate()
- * @model
- * @generated
- */
-public interface SaltHydrate extends Medium {
-} // SaltHydrate
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/SolarThermalCollector.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/SolarThermalCollector.java
index 595f3dd35342be7844093560a18d74afccae93d4..39bf90f36b2853b1d84a22bb8b9b2b773c9197e2 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/SolarThermalCollector.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/SolarThermalCollector.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -61,7 +61,7 @@ public interface SolarThermalCollector extends EnergyComponent {
 	 * @return the value of the '<em>Aperture Area</em>' attribute.
 	 * @see #setApertureArea(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getSolarThermalCollector_ApertureArea()
-	 * @model default="m\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="m\u00b2" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getApertureArea();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalEnergyDevice.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalEnergyDevice.java
index c8fcb5c5eb5bcbfbc58118926f3352036601dd86..78802fa1870b2eb6efe9b92d44c208e07adc5dbd 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalEnergyDevice.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalEnergyDevice.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -34,7 +34,7 @@ public interface ThermalEnergyDevice extends EnergyComponent {
 	 * @return the value of the '<em>Installed Thermal Power</em>' attribute.
 	 * @see #setInstalledThermalPower(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalEnergyDevice_InstalledThermalPower()
-	 * @model default="kW" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @model default="kW" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
 	 * @generated
 	 */
 	NullableQuantity getInstalledThermalPower();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalStorage.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalStorage.java
index a999bac03aa0f0948896c4417ff811f073199b58..fb6df127f7b3f98f9d23a95313fc8f88322ceda4 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalStorage.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/ThermalStorage.java
@@ -2,7 +2,7 @@
  */
 package de.hftstuttgart.energycomponents;
 
-import de.hftstuttgart.units.NullableQuantity;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
 
 /**
  * <!-- begin-user-doc -->
@@ -40,7 +40,7 @@ public interface ThermalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Volume</em>' attribute.
 	 * @see #setVolume(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_Volume()
-	 * @model default="5 m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="5 m\u00b3" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getVolume();
@@ -91,7 +91,7 @@ public interface ThermalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Max Temp</em>' attribute.
 	 * @see #setMaxTemp(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_MaxTemp()
-	 * @model default="80 \u00b0C" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="80 \u00b0C" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getMaxTemp();
@@ -114,7 +114,7 @@ public interface ThermalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Tank Thickness</em>' attribute.
 	 * @see #setTankThickness(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_TankThickness()
-	 * @model default="10 mm " dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="10 mm " dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getTankThickness();
@@ -137,7 +137,7 @@ public interface ThermalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Insulation Thickness</em>' attribute.
 	 * @see #setInsulationThickness(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_InsulationThickness()
-	 * @model default="100 mm" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="100 mm" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getInsulationThickness();
@@ -204,7 +204,7 @@ public interface ThermalStorage extends EnergyComponent {
 	 * @return the value of the '<em>Height</em>' attribute.
 	 * @see #setHeight(NullableQuantity)
 	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_Height()
-	 * @model default="2 m" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @model default="2 m" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble"
 	 * @generated
 	 */
 	NullableQuantity getHeight();
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Water.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Water.java
deleted file mode 100644
index ca4ee0e3c79590230e961e1fa86e85a2690e4ac7..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/Water.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Water</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getWater()
- * @model
- * @generated
- */
-public interface Water extends Medium {
-} // Water
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CombinedHeatPowerImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CombinedHeatPowerImpl.java
index c0977f44e3a03ca1a26110c9735a8d93934e44eb..254e8707bf89757e705f9b9f0f54404a07de85f1 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CombinedHeatPowerImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CombinedHeatPowerImpl.java
@@ -2,19 +2,21 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.Characteristic;
 import de.hftstuttgart.energycomponents.CombinedHeatPower;
-import de.hftstuttgart.energycomponents.EnCompFactory;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 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.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
@@ -83,8 +85,8 @@ public class CombinedHeatPowerImpl extends ThermalEnergyDeviceImpl implements Co
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity INSTALLED_ELECTRICAL_POWER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kW");
+	protected static final NullableQuantity INSTALLED_ELECTRICAL_POWER_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "kW");
 
 	/**
 	 * The cached value of the '{@link #getInstalledElectricalPower() <em>Installed Electrical Power</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CostImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CostImpl.java
index 26e9d1b8c47ed3b4cbaee44364d3c30d1343918f..d55002d25e5c38bc39f196166f4aa80bf9a79a64 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CostImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/CostImpl.java
@@ -2,16 +2,22 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.Characteristic;
 import de.hftstuttgart.energycomponents.Cost;
-import de.hftstuttgart.energycomponents.EnCompFactory;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.TypeOfHeatSource;
-import de.hftstuttgart.units.NullableQuantity;
+
 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;
 
@@ -156,8 +162,8 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity PERSONNEL_HOURS_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "10 h");
+	protected static final NullableQuantity PERSONNEL_HOURS_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "10 h");
 
 	/**
 	 * The cached value of the '{@link #getPersonnelHours() <em>Personnel Hours</em>}' attribute.
@@ -254,32 +260,8 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public NullableQuantity getPersonnelHours() {
-		return personnelHours;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setPersonnelHours(NullableQuantity newPersonnelHours) {
-		NullableQuantity oldPersonnelHours = personnelHours;
-		personnelHours = newPersonnelHours;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__PERSONNEL_HOURS,
-					oldPersonnelHours, personnelHours));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public double getPersonnelCostShare() {
-		return personnelCostShare;
+	public String getComponentName() {
+		return componentName;
 	}
 
 	/**
@@ -288,12 +270,12 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public void setPersonnelCostShare(double newPersonnelCostShare) {
-		double oldPersonnelCostShare = personnelCostShare;
-		personnelCostShare = newPersonnelCostShare;
+	public void setComponentName(String newComponentName) {
+		String oldComponentName = componentName;
+		componentName = newComponentName;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__PERSONNEL_COST_SHARE,
-					oldPersonnelCostShare, personnelCostShare));
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__COMPONENT_NAME, oldComponentName,
+					componentName));
 	}
 
 	/**
@@ -302,8 +284,8 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public double getAdministrationAndOtherCostShare() {
-		return administrationAndOtherCostShare;
+	public String getDescription() {
+		return description;
 	}
 
 	/**
@@ -312,13 +294,12 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public void setAdministrationAndOtherCostShare(double newAdministrationAndOtherCostShare) {
-		double oldAdministrationAndOtherCostShare = administrationAndOtherCostShare;
-		administrationAndOtherCostShare = newAdministrationAndOtherCostShare;
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET,
-					EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE, oldAdministrationAndOtherCostShare,
-					administrationAndOtherCostShare));
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__DESCRIPTION, oldDescription,
+					description));
 	}
 
 	/**
@@ -327,8 +308,8 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public double getMaintenanceCostShare() {
-		return maintenanceCostShare;
+	public TypeOfHeatSource getHeatSource() {
+		return heatSource;
 	}
 
 	/**
@@ -337,26 +318,12 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public void setMaintenanceCostShare(double newMaintenanceCostShare) {
-		double oldMaintenanceCostShare = maintenanceCostShare;
-		maintenanceCostShare = newMaintenanceCostShare;
+	public void setHeatSource(TypeOfHeatSource newHeatSource) {
+		TypeOfHeatSource oldHeatSource = heatSource;
+		heatSource = newHeatSource == null ? HEAT_SOURCE_EDEFAULT : newHeatSource;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__MAINTENANCE_COST_SHARE,
-					oldMaintenanceCostShare, maintenanceCostShare));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-		case EnCompPackage.COST__INVESTMENT_COST:
-			return basicSetInvestmentCost(null, msgs);
-		}
-		return super.eInverseRemove(otherEnd, featureID, msgs);
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__HEAT_SOURCE, oldHeatSource,
+					heatSource));
 	}
 
 	/**
@@ -465,8 +432,8 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public String getComponentName() {
-		return componentName;
+	public NullableQuantity getPersonnelHours() {
+		return personnelHours;
 	}
 
 	/**
@@ -475,12 +442,12 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public void setComponentName(String newComponentName) {
-		String oldComponentName = componentName;
-		componentName = newComponentName;
+	public void setPersonnelHours(NullableQuantity newPersonnelHours) {
+		NullableQuantity oldPersonnelHours = personnelHours;
+		personnelHours = newPersonnelHours;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__COMPONENT_NAME, oldComponentName,
-					componentName));
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__PERSONNEL_HOURS,
+					oldPersonnelHours, personnelHours));
 	}
 
 	/**
@@ -489,8 +456,8 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public String getDescription() {
-		return description;
+	public double getPersonnelCostShare() {
+		return personnelCostShare;
 	}
 
 	/**
@@ -499,12 +466,12 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public void setDescription(String newDescription) {
-		String oldDescription = description;
-		description = newDescription;
+	public void setPersonnelCostShare(double newPersonnelCostShare) {
+		double oldPersonnelCostShare = personnelCostShare;
+		personnelCostShare = newPersonnelCostShare;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__DESCRIPTION, oldDescription,
-					description));
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__PERSONNEL_COST_SHARE,
+					oldPersonnelCostShare, personnelCostShare));
 	}
 
 	/**
@@ -513,8 +480,8 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public TypeOfHeatSource getHeatSource() {
-		return heatSource;
+	public double getAdministrationAndOtherCostShare() {
+		return administrationAndOtherCostShare;
 	}
 
 	/**
@@ -523,12 +490,51 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * @generated
 	 */
 	@Override
-	public void setHeatSource(TypeOfHeatSource newHeatSource) {
-		TypeOfHeatSource oldHeatSource = heatSource;
-		heatSource = newHeatSource == null ? HEAT_SOURCE_EDEFAULT : newHeatSource;
+	public void setAdministrationAndOtherCostShare(double newAdministrationAndOtherCostShare) {
+		double oldAdministrationAndOtherCostShare = administrationAndOtherCostShare;
+		administrationAndOtherCostShare = newAdministrationAndOtherCostShare;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__HEAT_SOURCE, oldHeatSource,
-					heatSource));
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE, oldAdministrationAndOtherCostShare,
+					administrationAndOtherCostShare));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMaintenanceCostShare() {
+		return maintenanceCostShare;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaintenanceCostShare(double newMaintenanceCostShare) {
+		double oldMaintenanceCostShare = maintenanceCostShare;
+		maintenanceCostShare = newMaintenanceCostShare;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__MAINTENANCE_COST_SHARE,
+					oldMaintenanceCostShare, maintenanceCostShare));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.COST__INVESTMENT_COST:
+			return basicSetInvestmentCost(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
 
 	/**
@@ -568,7 +574,6 @@ public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricalStorageImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricalStorageImpl.java
index 429461d03c49effd8a475a407b6d7132d4f5911c..d52b2e19344c8d084d9a7eab89b8fc4b885c837b 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricalStorageImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricalStorageImpl.java
@@ -2,13 +2,15 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.ElectricalStorage;
 import de.hftstuttgart.energycomponents.ElectricalStorageTypes;
-import de.hftstuttgart.energycomponents.EnCompFactory;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -64,8 +66,8 @@ public class ElectricalStorageImpl extends EnergyComponentImpl implements Electr
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity BATTERY_CAPACITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "A*h");
+	protected static final NullableQuantity BATTERY_CAPACITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "A*h");
 
 	/**
 	 * The cached value of the '{@link #getBatteryCapacity() <em>Battery Capacity</em>}' attribute.
@@ -85,8 +87,8 @@ public class ElectricalStorageImpl extends EnergyComponentImpl implements Electr
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity BATTERY_VOLTAGE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "V");
+	protected static final NullableQuantity BATTERY_VOLTAGE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "V");
 
 	/**
 	 * The cached value of the '{@link #getBatteryVoltage() <em>Battery Voltage</em>}' attribute.
@@ -186,8 +188,8 @@ public class ElectricalStorageImpl extends EnergyComponentImpl implements Electr
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity ENERGY_CONTENT_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "5 kW*h");
+	protected static final NullableQuantity ENERGY_CONTENT_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "5 kW*h");
 
 	/**
 	 * The cached value of the '{@link #getEnergyContent() <em>Energy Content</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricityImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricityImpl.java
index 9fa21bef05d7fcdce94034259cdc9638bf8a9e40..bf8da56672f4639268c7d307c64f00a0f7591d1b 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricityImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectricityImpl.java
@@ -6,7 +6,9 @@ import de.hftstuttgart.energycomponents.Electricity;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 
 import org.eclipse.emf.common.notify.Notification;
+
 import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
@@ -32,6 +34,7 @@ public abstract class ElectricityImpl extends EnergyCarrierImpl implements Elect
 	 * @ordered
 	 */
 	protected static final double RENEWABLE_SHARE_EDEFAULT = 0.0;
+
 	/**
 	 * The cached value of the '{@link #getRenewableShare() <em>Renewable Share</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectrolyzerImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectrolyzerImpl.java
index b1e1f7fe328a2148d5596fbbd4067944aab151a0..f556ed2e4f85c9df4f317ff7e18a88a99531ef13 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectrolyzerImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ElectrolyzerImpl.java
@@ -2,13 +2,15 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.Electrolyzer;
-import de.hftstuttgart.energycomponents.EnCompFactory;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.cellTypesElectrolyzer;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -63,8 +65,8 @@ public class ElectrolyzerImpl extends EnergyComponentImpl implements Electrolyze
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity CELL_AREA_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "50 cm\u00b2");
+	protected static final NullableQuantity CELL_AREA_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "50 cm\u00b2");
 
 	/**
 	 * The cached value of the '{@link #getCellArea() <em>Cell Area</em>}' attribute.
@@ -104,8 +106,8 @@ public class ElectrolyzerImpl extends EnergyComponentImpl implements Electrolyze
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MAX_OPERATING_CURRENT_DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "3 A/cm\u00b2");
+	protected static final NullableQuantity MAX_OPERATING_CURRENT_DENSITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "3 A/cm\u00b2");
 
 	/**
 	 * The cached value of the '{@link #getMaxOperatingCurrentDensity() <em>Max Operating Current Density</em>}' attribute.
@@ -125,8 +127,8 @@ public class ElectrolyzerImpl extends EnergyComponentImpl implements Electrolyze
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MIN_OPERATING_CURRENT_DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "0.3 A/cm\u00b2");
+	protected static final NullableQuantity MIN_OPERATING_CURRENT_DENSITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "0.3 A/cm\u00b2");
 
 	/**
 	 * The cached value of the '{@link #getMinOperatingCurrentDensity() <em>Min Operating Current Density</em>}' attribute.
@@ -146,8 +148,8 @@ public class ElectrolyzerImpl extends EnergyComponentImpl implements Electrolyze
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity OVERLOAD_CAPACITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "120 %");
+	protected static final NullableQuantity OVERLOAD_CAPACITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "120 %");
 
 	/**
 	 * The cached value of the '{@link #getOverloadCapacity() <em>Overload Capacity</em>}' attribute.
@@ -167,8 +169,8 @@ public class ElectrolyzerImpl extends EnergyComponentImpl implements Electrolyze
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity NOMINAL_CELL_VOLTAGE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "1.94 V");
+	protected static final NullableQuantity NOMINAL_CELL_VOLTAGE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "1.94 V");
 
 	/**
 	 * The cached value of the '{@link #getNominalCellVoltage() <em>Nominal Cell Voltage</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompFactoryImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompFactoryImpl.java
index 96ea01b704fc84d11e1d023cf10dc33d3d47f1aa..5d91dc64fb4d3d8e424a1fe9b074ff67ec2a8c51 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompFactoryImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompFactoryImpl.java
@@ -4,8 +4,6 @@ package de.hftstuttgart.energycomponents.impl;
 
 import de.hftstuttgart.energycomponents.*;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EObject;
@@ -158,10 +156,6 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 			return createFuelTypesFromString(eDataType, initialValue);
 		case EnCompPackage.TYPE_OF_HEAT_SOURCE:
 			return createTypeOfHeatSourceFromString(eDataType, initialValue);
-		case EnCompPackage.QUANTITY_DOUBLE:
-			return createQuantityDoubleFromString(eDataType, initialValue);
-		case EnCompPackage.QUANTITY_LONG:
-			return createQuantityLongFromString(eDataType, initialValue);
 		default:
 			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -191,10 +185,6 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 			return convertFuelTypesToString(eDataType, instanceValue);
 		case EnCompPackage.TYPE_OF_HEAT_SOURCE:
 			return convertTypeOfHeatSourceToString(eDataType, instanceValue);
-		case EnCompPackage.QUANTITY_DOUBLE:
-			return convertQuantityDoubleToString(eDataType, instanceValue);
-		case EnCompPackage.QUANTITY_LONG:
-			return convertQuantityLongToString(eDataType, instanceValue);
 		default:
 			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -700,8 +690,8 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public FuelTypes createFuelTypesFromString(EDataType eDataType, String initialValue) {
-		FuelTypes result = FuelTypes.get(initialValue);
+	public cellTypesElectrolyzer createcellTypesElectrolyzerFromString(EDataType eDataType, String initialValue) {
+		cellTypesElectrolyzer result = cellTypesElectrolyzer.get(initialValue);
 		if (result == null)
 			throw new IllegalArgumentException(
 					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
@@ -713,7 +703,7 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public String convertFuelTypesToString(EDataType eDataType, Object instanceValue) {
+	public String convertcellTypesElectrolyzerToString(EDataType eDataType, Object instanceValue) {
 		return instanceValue == null ? null : instanceValue.toString();
 	}
 
@@ -722,8 +712,8 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public TypeOfHeatSource createTypeOfHeatSourceFromString(EDataType eDataType, String initialValue) {
-		TypeOfHeatSource result = TypeOfHeatSource.get(initialValue);
+	public FuelTypes createFuelTypesFromString(EDataType eDataType, String initialValue) {
+		FuelTypes result = FuelTypes.get(initialValue);
 		if (result == null)
 			throw new IllegalArgumentException(
 					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
@@ -735,7 +725,7 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public String convertTypeOfHeatSourceToString(EDataType eDataType, Object instanceValue) {
+	public String convertFuelTypesToString(EDataType eDataType, Object instanceValue) {
 		return instanceValue == null ? null : instanceValue.toString();
 	}
 
@@ -744,8 +734,8 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public cellTypesElectrolyzer createcellTypesElectrolyzerFromString(EDataType eDataType, String initialValue) {
-		cellTypesElectrolyzer result = cellTypesElectrolyzer.get(initialValue);
+	public TypeOfHeatSource createTypeOfHeatSourceFromString(EDataType eDataType, String initialValue) {
+		TypeOfHeatSource result = TypeOfHeatSource.get(initialValue);
 		if (result == null)
 			throw new IllegalArgumentException(
 					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
@@ -757,82 +747,10 @@ public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public String convertcellTypesElectrolyzerToString(EDataType eDataType, Object instanceValue) {
+	public String convertTypeOfHeatSourceToString(EDataType eDataType, Object instanceValue) {
 		return instanceValue == null ? null : instanceValue.toString();
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NullableQuantity createQuantityDouble(final String it) {
-		return de.hftstuttgart.units.NullableQuantity.create(it);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NullableQuantity createQuantityDoubleFromString(EDataType eDataType, String initialValue) {
-		return createQuantityDouble(initialValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String convertQuantityDouble(final NullableQuantity it) {
-		return it == null ? null : it.toString();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String convertQuantityDoubleToString(EDataType eDataType, Object instanceValue) {
-		return convertQuantityDouble((NullableQuantity) instanceValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NullableQuantity createQuantityLong(final String it) {
-		return de.hftstuttgart.units.NullableQuantity.create(it);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NullableQuantity createQuantityLongFromString(EDataType eDataType, String initialValue) {
-		return createQuantityLong(initialValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String convertQuantityLong(final NullableQuantity it) {
-		return it == null ? null : it.toString();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String convertQuantityLongToString(EDataType eDataType, Object instanceValue) {
-		return convertQuantityLong((NullableQuantity) instanceValue);
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompPackageImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompPackageImpl.java
index 305af90b829c990c442a82d6c7ee299f1aa45c96..f7d3cfff41fb4703de30e153e2bcd54f69883285 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompPackageImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnCompPackageImpl.java
@@ -2,6 +2,8 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.BioFuel;
 import de.hftstuttgart.energycomponents.Boiler;
 import de.hftstuttgart.energycomponents.BoilerTypes;
@@ -53,11 +55,9 @@ import de.hftstuttgart.energycomponents.ThermalStorageTypes;
 import de.hftstuttgart.energycomponents.TypeOfHeatSource;
 import de.hftstuttgart.energycomponents.WindTurbine;
 import de.hftstuttgart.energycomponents.cellTypesElectrolyzer;
-import de.hftstuttgart.units.NullableQuantity;
 
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EOperation;
 import org.eclipse.emf.ecore.EPackage;
@@ -396,20 +396,6 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 	 */
 	private EEnum thermalStorageTypesEEnum = null;
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EEnum fuelTypesEEnum = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EEnum typeOfHeatSourceEEnum = null;
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -422,14 +408,14 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EDataType quantityDoubleEDataType = null;
+	private EEnum fuelTypesEEnum = null;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EDataType quantityLongEDataType = null;
+	private EEnum typeOfHeatSourceEEnum = null;
 
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
@@ -482,6 +468,7 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		isInited = true;
 
 		// Initialize simple dependencies
+		QuantitiesPackage.eINSTANCE.eClass();
 		XMLTypePackage.eINSTANCE.eClass();
 
 		// Create package meta-data objects
@@ -1074,8 +1061,8 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 	 * @generated
 	 */
 	@Override
-	public EReference getHeatPump_PowerInput() {
-		return (EReference) heatPumpEClass.getEStructuralFeatures().get(2);
+	public EReference getHeatPump_CoefficientOfPerformance() {
+		return (EReference) heatPumpEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -1084,8 +1071,8 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 	 * @generated
 	 */
 	@Override
-	public EReference getHeatPump_HeatOutput() {
-		return (EReference) heatPumpEClass.getEStructuralFeatures().get(3);
+	public EReference getHeatPump_PowerInput() {
+		return (EReference) heatPumpEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -1094,8 +1081,8 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 	 * @generated
 	 */
 	@Override
-	public EReference getHeatPump_CoefficientOfPerformance() {
-		return (EReference) heatPumpEClass.getEStructuralFeatures().get(1);
+	public EReference getHeatPump_HeatOutput() {
+		return (EReference) heatPumpEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -2248,6 +2235,36 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		return costEClass;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_ComponentName() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_Description() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_HeatSource() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(2);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2388,36 +2405,6 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		return powerFunctionEClass.getEOperations().get(0);
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EAttribute getCost_ComponentName() {
-		return (EAttribute) costEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EAttribute getCost_Description() {
-		return (EAttribute) costEClass.getEStructuralFeatures().get(1);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EAttribute getCost_HeatSource() {
-		return (EAttribute) costEClass.getEStructuralFeatures().get(2);
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2468,26 +2455,6 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		return thermalStorageTypesEEnum;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EEnum getFuelTypes() {
-		return fuelTypesEEnum;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EEnum getTypeOfHeatSource() {
-		return typeOfHeatSourceEEnum;
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2504,8 +2471,8 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 	 * @generated
 	 */
 	@Override
-	public EDataType getQuantityDouble() {
-		return quantityDoubleEDataType;
+	public EEnum getFuelTypes() {
+		return fuelTypesEEnum;
 	}
 
 	/**
@@ -2514,8 +2481,8 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 	 * @generated
 	 */
 	@Override
-	public EDataType getQuantityLong() {
-		return quantityLongEDataType;
+	public EEnum getTypeOfHeatSource() {
+		return typeOfHeatSourceEEnum;
 	}
 
 	/**
@@ -2790,10 +2757,6 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		cellTypesElectrolyzerEEnum = createEEnum(CELL_TYPES_ELECTROLYZER);
 		fuelTypesEEnum = createEEnum(FUEL_TYPES);
 		typeOfHeatSourceEEnum = createEEnum(TYPE_OF_HEAT_SOURCE);
-
-		// Create data types
-		quantityDoubleEDataType = createEDataType(QUANTITY_DOUBLE);
-		quantityLongEDataType = createEDataType(QUANTITY_LONG);
 	}
 
 	/**
@@ -2821,6 +2784,8 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		setNsURI(eNS_URI);
 
 		// Obtain other dependent packages
+		QuantitiesPackage theQuantitiesPackage = (QuantitiesPackage) EPackage.Registry.INSTANCE
+				.getEPackage(QuantitiesPackage.eNS_URI);
 		XMLTypePackage theXMLTypePackage = (XMLTypePackage) EPackage.Registry.INSTANCE
 				.getEPackage(XMLTypePackage.eNS_URI);
 
@@ -2950,28 +2915,28 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 
 		initEClass(thermalStorageEClass, ThermalStorage.class, "ThermalStorage", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getThermalStorage_Volume(), this.getQuantityDouble(), "volume", "5 m\u00b3", 0, 1,
-				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+		initEAttribute(getThermalStorage_Volume(), theQuantitiesPackage.getQuantityDouble(), "volume", "5 m\u00b3", 0,
+				1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
 		initEAttribute(getThermalStorage_ThermalStorageType(), this.getThermalStorageTypes(), "thermalStorageType",
 				null, 0, 1, ThermalStorage.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				!IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getThermalStorage_MaxTemp(), this.getQuantityDouble(), "maxTemp", "80 \u00b0C", 0, 1,
-				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getThermalStorage_TankThickness(), this.getQuantityDouble(), "tankThickness", "10 mm ", 0, 1,
-				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getThermalStorage_InsulationThickness(), this.getQuantityDouble(), "insulationThickness",
-				"100 mm", 0, 1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+		initEAttribute(getThermalStorage_MaxTemp(), theQuantitiesPackage.getQuantityDouble(), "maxTemp", "80 \u00b0C",
+				0, 1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalStorage_TankThickness(), theQuantitiesPackage.getQuantityDouble(), "tankThickness",
+				"10 mm ", 0, 1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
 				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalStorage_InsulationThickness(), theQuantitiesPackage.getQuantityDouble(),
+				"insulationThickness", "100 mm", 0, 1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getThermalStorage_UsesMedium(), this.getMedium(), null, "usesMedium", null, 1, 1,
 				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
 				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getThermalStorage_InsulationMaterial(), this.getMaterial(), null, "insulationMaterial", null, 0,
 				1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
 				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getThermalStorage_Height(), this.getQuantityDouble(), "height", "2 m", 0, 1,
+		initEAttribute(getThermalStorage_Height(), theQuantitiesPackage.getQuantityDouble(), "height", "2 m", 0, 1,
 				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
 		initEReference(getThermalStorage_TankMaterial(), this.getMaterial(), null, "tankMaterial", null, 0, 1,
@@ -2983,12 +2948,12 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getElectricalStorage_ElectricalStorageType(), this.getElectricalStorageTypes(),
 				"electricalStorageType", null, 1, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE,
 				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectricalStorage_BatteryCapacity(), this.getQuantityDouble(), "batteryCapacity", "A*h", 1, 1,
-				ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectricalStorage_BatteryVoltage(), this.getQuantityDouble(), "batteryVoltage", "V", 0, 1,
-				ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_BatteryCapacity(), theQuantitiesPackage.getQuantityDouble(),
+				"batteryCapacity", "A*h", 1, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_BatteryVoltage(), theQuantitiesPackage.getQuantityDouble(),
+				"batteryVoltage", "V", 0, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getElectricalStorage_BatteryLifeCycle(), ecorePackage.getEDouble(), "batteryLifeCycle", "7000",
 				0, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -3001,9 +2966,9 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getElectricalStorage_BatteryEffiency(), ecorePackage.getEDouble(), "batteryEffiency", "0.8", 0,
 				1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectricalStorage_EnergyContent(), this.getQuantityDouble(), "energyContent", "5 kW*h", 1, 1,
-				ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_EnergyContent(), theQuantitiesPackage.getQuantityDouble(), "energyContent",
+				"5 kW*h", 1, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(combinedHeatPowerEClass, CombinedHeatPower.class, "CombinedHeatPower", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
@@ -3013,7 +2978,7 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getCombinedHeatPower_ElectricalEfficiency(), ecorePackage.getEDouble(), "electricalEfficiency",
 				"0.4", 1, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
 				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getCombinedHeatPower_InstalledElectricalPower(), this.getQuantityDouble(),
+		initEAttribute(getCombinedHeatPower_InstalledElectricalPower(), theQuantitiesPackage.getQuantityDouble(),
 				"installedElectricalPower", "kW", 1, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE,
 				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getCombinedHeatPower_ElectricalEfficiencyPartLoad(), this.getCharacteristic(), null,
@@ -3049,9 +3014,9 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getSolarThermalCollector_CollectorType(), this.getCollectorTypes(), "collectorType", null, 1, 1,
 				SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getSolarThermalCollector_ApertureArea(), this.getQuantityDouble(), "apertureArea", "m\u00b2", 1,
-				1, SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
-				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSolarThermalCollector_ApertureArea(), theQuantitiesPackage.getQuantityDouble(),
+				"apertureArea", "m\u00b2", 1, 1, SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getSolarThermalCollector_OpticalEfficiency(), ecorePackage.getEDouble(), "opticalEfficiency",
 				"0.77", 0, 1, SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
 				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -3067,28 +3032,28 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getElectrolyzer_CellType(), this.getcellTypesElectrolyzer(), "cellType", null, 0, 1,
 				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectrolyzer_CellArea(), this.getQuantityDouble(), "cellArea", "50 cm\u00b2", 1, 1,
-				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+		initEAttribute(getElectrolyzer_CellArea(), theQuantitiesPackage.getQuantityDouble(), "cellArea", "50 cm\u00b2",
+				1, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
 		initEAttribute(getElectrolyzer_NumberOfCells(), ecorePackage.getEDouble(), "numberOfCells", "5", 1, 1,
 				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectrolyzer_MaxOperatingCurrentDensity(), this.getQuantityDouble(),
+		initEAttribute(getElectrolyzer_MaxOperatingCurrentDensity(), theQuantitiesPackage.getQuantityDouble(),
 				"maxOperatingCurrentDensity", "3 A/cm\u00b2", 0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE,
 				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectrolyzer_MinOperatingCurrentDensity(), this.getQuantityDouble(),
+		initEAttribute(getElectrolyzer_MinOperatingCurrentDensity(), theQuantitiesPackage.getQuantityDouble(),
 				"minOperatingCurrentDensity", "0.3 A/cm\u00b2", 0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE,
 				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectrolyzer_OverloadCapacity(), this.getQuantityDouble(), "overloadCapacity", "120 %", 0, 1,
-				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getElectrolyzer_NominalCellVoltage(), this.getQuantityDouble(), "nominalCellVoltage", "1.94 V",
-				0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_OverloadCapacity(), theQuantitiesPackage.getQuantityDouble(), "overloadCapacity",
+				"120 %", 0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_NominalCellVoltage(), theQuantitiesPackage.getQuantityDouble(),
+				"nominalCellVoltage", "1.94 V", 0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(thermalEnergyDeviceEClass, ThermalEnergyDevice.class, "ThermalEnergyDevice", IS_ABSTRACT,
 				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getThermalEnergyDevice_InstalledThermalPower(), this.getQuantityDouble(),
+		initEAttribute(getThermalEnergyDevice_InstalledThermalPower(), theQuantitiesPackage.getQuantityDouble(),
 				"installedThermalPower", "kW", 1, 1, ThermalEnergyDevice.class, !IS_TRANSIENT, !IS_VOLATILE,
 				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getThermalEnergyDevice_ModulationRange(), ecorePackage.getEDouble(), "modulationRange", "0.5", 0,
@@ -3106,33 +3071,33 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getHydrogenCompressor_ThermodynamicMode(), ecorePackage.getEInt(), "thermodynamicMode", "0", 0,
 				1, HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getHydrogenCompressor_MaxPressure(), this.getQuantityDouble(), "maxPressure", "50 MPa", 0, 1,
-				HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getHydrogenCompressor_MaxDeliveryRate(), this.getQuantityDouble(), "maxDeliveryRate", "9 kg/h",
-				0, 1, HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
-				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenCompressor_MaxPressure(), theQuantitiesPackage.getQuantityDouble(), "maxPressure",
+				"50 MPa", 0, 1, HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenCompressor_MaxDeliveryRate(), theQuantitiesPackage.getQuantityDouble(),
+				"maxDeliveryRate", "9 kg/h", 0, 1, HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(hydrogenStorageEClass, HydrogenStorage.class, "HydrogenStorage", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getHydrogenStorage_NumberOfCylinders(), ecorePackage.getEInt(), "numberOfCylinders", "1", 1, 1,
 				HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getHydrogenStorage_CylinderVolume(), this.getQuantityDouble(), "cylinderVolume", "1.5 m\u00b3",
-				1, 1, HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
-				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getHydrogenStorage_NominalPressure(), this.getQuantityDouble(), "nominalPressure", "25 MPa", 0,
-				1, HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenStorage_CylinderVolume(), theQuantitiesPackage.getQuantityDouble(), "cylinderVolume",
+				"1.5 m\u00b3", 1, 1, HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenStorage_NominalPressure(), theQuantitiesPackage.getQuantityDouble(),
+				"nominalPressure", "25 MPa", 0, 1, HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(fuelCellEClass, FuelCell.class, "FuelCell", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(energyCarrierEClass, EnergyCarrier.class, "EnergyCarrier", IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getEnergyCarrier_Co2EmissionsFactor(), this.getQuantityDouble(), "co2EmissionsFactor", "t/MW*h",
-				1, 1, EnergyCarrier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
-				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyCarrier_Co2EmissionsFactor(), theQuantitiesPackage.getQuantityDouble(),
+				"co2EmissionsFactor", "t/MW*h", 1, 1, EnergyCarrier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getEnergyCarrier_PrimaryEnergyFactor(), ecorePackage.getEDouble(), "primaryEnergyFactor", null,
 				1, 1, EnergyCarrier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -3169,14 +3134,15 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(fuelEClass, Fuel.class, "Fuel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getFuel_NetCalorificValue(), this.getQuantityDouble(), "netCalorificValue", "(kW*h)/m\u00b3", 1,
-				1, Fuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getFuel_GrossCalorificValue(), this.getQuantityDouble(), "grossCalorificValue", "(kW*h)/m\u00b3",
-				1, 1, Fuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getFuel_Density(), this.getQuantityDouble(), "density", "kg/m\u00b3", 1, 1, Fuel.class,
-				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFuel_NetCalorificValue(), theQuantitiesPackage.getQuantityDouble(), "netCalorificValue",
+				"(kW*h)/m\u00b3", 1, 1, Fuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFuel_GrossCalorificValue(), theQuantitiesPackage.getQuantityDouble(), "grossCalorificValue",
+				"(kW*h)/m\u00b3", 1, 1, Fuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFuel_Density(), theQuantitiesPackage.getQuantityDouble(), "density", "kg/m\u00b3", 1, 1,
+				Fuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
 		initEAttribute(getFuel_FuelType(), this.getFuelTypes(), "fuelType", null, 1, 1, Fuel.class, !IS_TRANSIENT,
 				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
@@ -3188,21 +3154,21 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getPhotovoltaicModule_CellType(), ecorePackage.getEEnumerator(), "cellType", null, 1, 1,
 				PhotovoltaicModule.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getPhotovoltaicModule_NominalPower(), this.getQuantityDouble(), "nominalPower", "W", 1, 1,
-				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getPhotovoltaicModule_MppVoltage(), this.getQuantityDouble(), "mppVoltage", "V", 1, 1,
-				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getPhotovoltaicModule_MppCurrent(), this.getQuantityDouble(), "mppCurrent", "A", 1, 1,
-				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_NominalPower(), theQuantitiesPackage.getQuantityDouble(), "nominalPower",
+				"W", 1, 1, PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_MppVoltage(), theQuantitiesPackage.getQuantityDouble(), "mppVoltage", "V",
+				1, 1, PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_MppCurrent(), theQuantitiesPackage.getQuantityDouble(), "mppCurrent", "A",
+				1, 1, PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getPhotovoltaicModule_NominalEfficiency(), ecorePackage.getEDouble(), "nominalEfficiency",
 				"0.18", 1, 1, PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
 				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getPhotovoltaicModule_ModuleArea(), this.getQuantityDouble(), "moduleArea", "m\u00b2", 1, 1,
-				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_ModuleArea(), theQuantitiesPackage.getQuantityDouble(), "moduleArea",
+				"m\u00b2", 1, 1, PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(inverterEClass, Inverter.class, "Inverter", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
@@ -3212,28 +3178,29 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getHeatExchanger_HeatRecoveryEfficiency(), ecorePackage.getEDouble(), "heatRecoveryEfficiency",
 				"0.8", 0, 1, HeatExchanger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getHeatExchanger_NominalElectricityConsumption(), this.getQuantityDouble(),
+		initEAttribute(getHeatExchanger_NominalElectricityConsumption(), theQuantitiesPackage.getQuantityDouble(),
 				"nominalElectricityConsumption", "W", 1, 1, HeatExchanger.class, !IS_TRANSIENT, !IS_VOLATILE,
 				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(geothermalHeatExchangerEClass, GeothermalHeatExchanger.class, "GeothermalHeatExchanger",
 				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getGeothermalHeatExchanger_PipeDiameter(), this.getQuantityDouble(), "pipeDiameter", "1 cm", 0,
-				1, GeothermalHeatExchanger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
-				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeothermalHeatExchanger_PipeDiameter(), theQuantitiesPackage.getQuantityDouble(),
+				"pipeDiameter", "1 cm", 0, 1, GeothermalHeatExchanger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(mediumEClass, Medium.class, "Medium", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getMedium_Density(), this.getQuantityDouble(), "density", "g/cm\u00b3", 1, 1, Medium.class,
-				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getMedium_HeatCapacity(), this.getQuantityDouble(), "heatCapacity", "kJ/(kg*K)", 0, 1,
+		initEAttribute(getMedium_Density(), theQuantitiesPackage.getQuantityDouble(), "density", "g/cm\u00b3", 1, 1,
 				Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getMedium_EvaporationTemperature(), this.getQuantityDouble(), "evaporationTemperature",
+		initEAttribute(getMedium_HeatCapacity(), theQuantitiesPackage.getQuantityDouble(), "heatCapacity", "kJ/(kg*K)",
+				0, 1, Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMedium_EvaporationTemperature(), theQuantitiesPackage.getQuantityDouble(),
+				"evaporationTemperature", "\u00b0C", 0, 1, Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMedium_MeltingTemperature(), theQuantitiesPackage.getQuantityDouble(), "meltingTemperature",
 				"\u00b0C", 0, 1, Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
 				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getMedium_MeltingTemperature(), this.getQuantityDouble(), "meltingTemperature", "\u00b0C", 0, 1,
-				Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
 		initEAttribute(getMedium_Name(), ecorePackage.getEString(), "name", null, 1, 1, Medium.class, !IS_TRANSIENT,
 				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
@@ -3342,9 +3309,9 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 
 		initEClass(materialEClass, Material.class, "Material", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getMaterial_ThermalConductivity(), this.getQuantityDouble(), "thermalConductivity", " W/(m*K)",
-				0, 1, Material.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMaterial_ThermalConductivity(), theQuantitiesPackage.getQuantityDouble(),
+				"thermalConductivity", " W/(m*K)", 0, 1, Material.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getMaterial_Name(), ecorePackage.getEString(), "name", null, 1, 1, Material.class, !IS_TRANSIENT,
 				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
@@ -3378,8 +3345,9 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		initEAttribute(getCost_OtherInvestmentCost(), ecorePackage.getEDouble(), "otherInvestmentCost", "0", 0, 1,
 				Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
 				IS_ORDERED);
-		initEAttribute(getCost_PersonnelHours(), this.getQuantityDouble(), "personnelHours", "10 h", 0, 1, Cost.class,
-				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCost_PersonnelHours(), theQuantitiesPackage.getQuantityDouble(), "personnelHours", "10 h", 0,
+				1, Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
 		initEAttribute(getCost_PersonnelCostShare(), ecorePackage.getEDouble(), "personnelCostShare", null, 0, 1,
 				Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
 				IS_ORDERED);
@@ -3465,12 +3433,6 @@ public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
 		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.SOIL);
 		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.NONE);
 
-		// Initialize data types
-		initEDataType(quantityDoubleEDataType, NullableQuantity.class, "QuantityDouble", IS_SERIALIZABLE,
-				!IS_GENERATED_INSTANCE_CLASS);
-		initEDataType(quantityLongEDataType, NullableQuantity.class, "QuantityLong", IS_SERIALIZABLE,
-				!IS_GENERATED_INSTANCE_CLASS);
-
 		// Create resource
 		createResource(eNS_URI);
 	}
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyCarrierImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyCarrierImpl.java
index 1a96d30e70a0a5bab2aec8ecebec8d478e6512c1..694c9d0177c96f97ad200850d31d28f978a5f0ad 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyCarrierImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyCarrierImpl.java
@@ -2,12 +2,14 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.EnergyCarrier;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -40,8 +42,8 @@ public abstract class EnergyCarrierImpl extends MinimalEObjectImpl.Container imp
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity CO2_EMISSIONS_FACTOR_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "t/MW*h");
+	protected static final NullableQuantity CO2_EMISSIONS_FACTOR_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "t/MW*h");
 
 	/**
 	 * The cached value of the '{@link #getCo2EmissionsFactor() <em>Co2 Emissions Factor</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentImpl.java
index 776c1d18b8c1619c5752ae72d3330697d85c7428..9dc56f5cb6d1ef2dedd5da9d73727b91dd2e53f6 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentImpl.java
@@ -4,13 +4,13 @@ package de.hftstuttgart.energycomponents.impl;
 
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.EnergyComponent;
-
 import de.hftstuttgart.energycomponents.Manufacturer;
+
 import org.eclipse.emf.common.notify.Notification;
 
 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;
 
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCostCatalogImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCostCatalogImpl.java
index 0d6625b63e11e2d405442bf3177c4ab9ba2f8abd..bf7cb73652e902ba354b152b2fc247ab1e329983 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCostCatalogImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCostCatalogImpl.java
@@ -5,6 +5,7 @@ package de.hftstuttgart.energycomponents.impl;
 import de.hftstuttgart.energycomponents.Cost;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog;
+
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -17,6 +18,7 @@ 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;
 
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FossilFuelImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FossilFuelImpl.java
index c188b365d15449e22a4d440c22e8a280b6692b66..b2e7b91a8d49ccade51b795f764717a8d83daf1a 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FossilFuelImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FossilFuelImpl.java
@@ -4,6 +4,7 @@ package de.hftstuttgart.energycomponents.impl;
 
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.FossilFuel;
+
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FuelImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FuelImpl.java
index 04ca01879a01be9fdcba88962c93ce4d5363a209..a92ed620f3b0d17d4a42d50dc8a27a6fed302503 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FuelImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/FuelImpl.java
@@ -2,12 +2,14 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.Fuel;
-
 import de.hftstuttgart.energycomponents.FuelTypes;
-import de.hftstuttgart.units.NullableQuantity;
 
 import org.eclipse.emf.common.notify.Notification;
 
@@ -40,8 +42,8 @@ public abstract class FuelImpl extends EnergyCarrierImpl implements Fuel {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity NET_CALORIFIC_VALUE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "(kW*h)/m\u00b3");
+	protected static final NullableQuantity NET_CALORIFIC_VALUE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "(kW*h)/m\u00b3");
 
 	/**
 	 * The cached value of the '{@link #getNetCalorificValue() <em>Net Calorific Value</em>}' attribute.
@@ -61,8 +63,8 @@ public abstract class FuelImpl extends EnergyCarrierImpl implements Fuel {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity GROSS_CALORIFIC_VALUE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "(kW*h)/m\u00b3");
+	protected static final NullableQuantity GROSS_CALORIFIC_VALUE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "(kW*h)/m\u00b3");
 
 	/**
 	 * The cached value of the '{@link #getGrossCalorificValue() <em>Gross Calorific Value</em>}' attribute.
@@ -82,8 +84,8 @@ public abstract class FuelImpl extends EnergyCarrierImpl implements Fuel {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kg/m\u00b3");
+	protected static final NullableQuantity DENSITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "kg/m\u00b3");
 
 	/**
 	 * The cached value of the '{@link #getDensity() <em>Density</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/GeothermalHeatExchangerImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/GeothermalHeatExchangerImpl.java
index 768dc452dfeb8c0bbc69ca4550c41a0a7fd6342f..9a33011e702362109f0084e99b777c5bdac30078 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/GeothermalHeatExchangerImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/GeothermalHeatExchangerImpl.java
@@ -2,12 +2,14 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.GeothermalHeatExchanger;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -36,8 +38,8 @@ public class GeothermalHeatExchangerImpl extends EnergyComponentImpl implements
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity PIPE_DIAMETER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "1 cm");
+	protected static final NullableQuantity PIPE_DIAMETER_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "1 cm");
 
 	/**
 	 * The cached value of the '{@link #getPipeDiameter() <em>Pipe Diameter</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatExchangerImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatExchangerImpl.java
index 185f47e0ef0b44326b58d6da5f5e07d491949c17..ef0bec5e23e5dc350af1c123ad2387d78362f5d5 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatExchangerImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatExchangerImpl.java
@@ -2,12 +2,14 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.HeatExchanger;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -57,8 +59,8 @@ public class HeatExchangerImpl extends EnergyComponentImpl implements HeatExchan
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity NOMINAL_ELECTRICITY_CONSUMPTION_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "W");
+	protected static final NullableQuantity NOMINAL_ELECTRICITY_CONSUMPTION_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "W");
 
 	/**
 	 * The cached value of the '{@link #getNominalElectricityConsumption() <em>Nominal Electricity Consumption</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatPumpImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatPumpImpl.java
index 12e3edfb01de8ef80a49f92718480f6f80b3a31a..b02874f9adba7806dffb7394c9229350d685dcd0 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatPumpImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HeatPumpImpl.java
@@ -6,8 +6,10 @@ import de.hftstuttgart.energycomponents.Characteristic;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.HeatPump;
 import de.hftstuttgart.energycomponents.HeatSources;
+
 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;
 
@@ -129,8 +131,8 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * @generated
 	 */
 	@Override
-	public Characteristic getPowerInput() {
-		return powerInput;
+	public Characteristic getCoefficientOfPerformance() {
+		return coefficientOfPerformance;
 	}
 
 	/**
@@ -138,12 +140,14 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetPowerInput(Characteristic newPowerInput, NotificationChain msgs) {
-		Characteristic oldPowerInput = powerInput;
-		powerInput = newPowerInput;
+	public NotificationChain basicSetCoefficientOfPerformance(Characteristic newCoefficientOfPerformance,
+			NotificationChain msgs) {
+		Characteristic oldCoefficientOfPerformance = coefficientOfPerformance;
+		coefficientOfPerformance = newCoefficientOfPerformance;
 		if (eNotificationRequired()) {
 			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
-					EnCompPackage.HEAT_PUMP__POWER_INPUT, oldPowerInput, newPowerInput);
+					EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, oldCoefficientOfPerformance,
+					newCoefficientOfPerformance);
 			if (msgs == null)
 				msgs = notification;
 			else
@@ -158,21 +162,21 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * @generated
 	 */
 	@Override
-	public void setPowerInput(Characteristic newPowerInput) {
-		if (newPowerInput != powerInput) {
+	public void setCoefficientOfPerformance(Characteristic newCoefficientOfPerformance) {
+		if (newCoefficientOfPerformance != coefficientOfPerformance) {
 			NotificationChain msgs = null;
-			if (powerInput != null)
-				msgs = ((InternalEObject) powerInput).eInverseRemove(this,
-						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__POWER_INPUT, null, msgs);
-			if (newPowerInput != null)
-				msgs = ((InternalEObject) newPowerInput).eInverseAdd(this,
-						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__POWER_INPUT, null, msgs);
-			msgs = basicSetPowerInput(newPowerInput, msgs);
+			if (coefficientOfPerformance != null)
+				msgs = ((InternalEObject) coefficientOfPerformance).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, null, msgs);
+			if (newCoefficientOfPerformance != null)
+				msgs = ((InternalEObject) newCoefficientOfPerformance).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, null, msgs);
+			msgs = basicSetCoefficientOfPerformance(newCoefficientOfPerformance, msgs);
 			if (msgs != null)
 				msgs.dispatch();
 		} else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__POWER_INPUT, newPowerInput,
-					newPowerInput));
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
+					newCoefficientOfPerformance, newCoefficientOfPerformance));
 	}
 
 	/**
@@ -181,8 +185,8 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * @generated
 	 */
 	@Override
-	public Characteristic getHeatOutput() {
-		return heatOutput;
+	public Characteristic getPowerInput() {
+		return powerInput;
 	}
 
 	/**
@@ -190,12 +194,12 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetHeatOutput(Characteristic newHeatOutput, NotificationChain msgs) {
-		Characteristic oldHeatOutput = heatOutput;
-		heatOutput = newHeatOutput;
+	public NotificationChain basicSetPowerInput(Characteristic newPowerInput, NotificationChain msgs) {
+		Characteristic oldPowerInput = powerInput;
+		powerInput = newPowerInput;
 		if (eNotificationRequired()) {
 			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
-					EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, oldHeatOutput, newHeatOutput);
+					EnCompPackage.HEAT_PUMP__POWER_INPUT, oldPowerInput, newPowerInput);
 			if (msgs == null)
 				msgs = notification;
 			else
@@ -210,21 +214,21 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * @generated
 	 */
 	@Override
-	public void setHeatOutput(Characteristic newHeatOutput) {
-		if (newHeatOutput != heatOutput) {
+	public void setPowerInput(Characteristic newPowerInput) {
+		if (newPowerInput != powerInput) {
 			NotificationChain msgs = null;
-			if (heatOutput != null)
-				msgs = ((InternalEObject) heatOutput).eInverseRemove(this,
-						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, null, msgs);
-			if (newHeatOutput != null)
-				msgs = ((InternalEObject) newHeatOutput).eInverseAdd(this,
-						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, null, msgs);
-			msgs = basicSetHeatOutput(newHeatOutput, msgs);
+			if (powerInput != null)
+				msgs = ((InternalEObject) powerInput).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__POWER_INPUT, null, msgs);
+			if (newPowerInput != null)
+				msgs = ((InternalEObject) newPowerInput).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__POWER_INPUT, null, msgs);
+			msgs = basicSetPowerInput(newPowerInput, msgs);
 			if (msgs != null)
 				msgs.dispatch();
 		} else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, newHeatOutput,
-					newHeatOutput));
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__POWER_INPUT, newPowerInput,
+					newPowerInput));
 	}
 
 	/**
@@ -233,8 +237,8 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * @generated
 	 */
 	@Override
-	public Characteristic getCoefficientOfPerformance() {
-		return coefficientOfPerformance;
+	public Characteristic getHeatOutput() {
+		return heatOutput;
 	}
 
 	/**
@@ -242,14 +246,12 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetCoefficientOfPerformance(Characteristic newCoefficientOfPerformance,
-			NotificationChain msgs) {
-		Characteristic oldCoefficientOfPerformance = coefficientOfPerformance;
-		coefficientOfPerformance = newCoefficientOfPerformance;
+	public NotificationChain basicSetHeatOutput(Characteristic newHeatOutput, NotificationChain msgs) {
+		Characteristic oldHeatOutput = heatOutput;
+		heatOutput = newHeatOutput;
 		if (eNotificationRequired()) {
 			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
-					EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, oldCoefficientOfPerformance,
-					newCoefficientOfPerformance);
+					EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, oldHeatOutput, newHeatOutput);
 			if (msgs == null)
 				msgs = notification;
 			else
@@ -264,21 +266,21 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * @generated
 	 */
 	@Override
-	public void setCoefficientOfPerformance(Characteristic newCoefficientOfPerformance) {
-		if (newCoefficientOfPerformance != coefficientOfPerformance) {
+	public void setHeatOutput(Characteristic newHeatOutput) {
+		if (newHeatOutput != heatOutput) {
 			NotificationChain msgs = null;
-			if (coefficientOfPerformance != null)
-				msgs = ((InternalEObject) coefficientOfPerformance).eInverseRemove(this,
-						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, null, msgs);
-			if (newCoefficientOfPerformance != null)
-				msgs = ((InternalEObject) newCoefficientOfPerformance).eInverseAdd(this,
-						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, null, msgs);
-			msgs = basicSetCoefficientOfPerformance(newCoefficientOfPerformance, msgs);
+			if (heatOutput != null)
+				msgs = ((InternalEObject) heatOutput).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, null, msgs);
+			if (newHeatOutput != null)
+				msgs = ((InternalEObject) newHeatOutput).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, null, msgs);
+			msgs = basicSetHeatOutput(newHeatOutput, msgs);
 			if (msgs != null)
 				msgs.dispatch();
 		} else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
-					newCoefficientOfPerformance, newCoefficientOfPerformance));
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, newHeatOutput,
+					newHeatOutput));
 	}
 
 	/**
@@ -324,7 +326,6 @@ public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenCompressorImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenCompressorImpl.java
index 04c819920f6d29bf79844e4835b665bb798b1a94..07def3fec52b125c97a35047f02db05a2a17c42e 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenCompressorImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenCompressorImpl.java
@@ -2,12 +2,14 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.HydrogenCompressor;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -79,8 +81,8 @@ public class HydrogenCompressorImpl extends EnergyComponentImpl implements Hydro
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MAX_PRESSURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "50 MPa");
+	protected static final NullableQuantity MAX_PRESSURE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "50 MPa");
 
 	/**
 	 * The cached value of the '{@link #getMaxPressure() <em>Max Pressure</em>}' attribute.
@@ -100,8 +102,8 @@ public class HydrogenCompressorImpl extends EnergyComponentImpl implements Hydro
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MAX_DELIVERY_RATE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "9 kg/h");
+	protected static final NullableQuantity MAX_DELIVERY_RATE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "9 kg/h");
 
 	/**
 	 * The cached value of the '{@link #getMaxDeliveryRate() <em>Max Delivery Rate</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenStorageImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenStorageImpl.java
index 8b7061b74bf456fc43286f8dccee4d695358c8e4..f04bf0f2d34a5a8a7dc99d9f560e324dfa7e8849 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenStorageImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenStorageImpl.java
@@ -2,12 +2,14 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.HydrogenStorage;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -58,8 +60,8 @@ public class HydrogenStorageImpl extends EnergyComponentImpl implements Hydrogen
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity CYLINDER_VOLUME_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "1.5 m\u00b3");
+	protected static final NullableQuantity CYLINDER_VOLUME_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "1.5 m\u00b3");
 
 	/**
 	 * The cached value of the '{@link #getCylinderVolume() <em>Cylinder Volume</em>}' attribute.
@@ -79,8 +81,8 @@ public class HydrogenStorageImpl extends EnergyComponentImpl implements Hydrogen
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity NOMINAL_PRESSURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "25 MPa");
+	protected static final NullableQuantity NOMINAL_PRESSURE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "25 MPa");
 
 	/**
 	 * The cached value of the '{@link #getNominalPressure() <em>Nominal Pressure</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MaterialImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MaterialImpl.java
index a90429049a9a05c8bdcf0f1a23b9c27eb6a83ecc..c8301032e98670b8c03e21160c6cadd6fc2eb932 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MaterialImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MaterialImpl.java
@@ -2,11 +2,16 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.Material;
-import de.hftstuttgart.units.NullableQuantity;
+
 import org.eclipse.emf.common.notify.Notification;
+
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -35,8 +40,8 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity THERMAL_CONDUCTIVITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), " W/(m*K)");
+	protected static final NullableQuantity THERMAL_CONDUCTIVITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), " W/(m*K)");
 
 	/**
 	 * The cached value of the '{@link #getThermalConductivity() <em>Thermal Conductivity</em>}' attribute.
@@ -155,7 +160,6 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MediumImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MediumImpl.java
index 128e58c5bac907f0d38727ed32add5b748cd9d1b..f5d95de98e01579145e5ab2b20ed46a10219caf7 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MediumImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/MediumImpl.java
@@ -2,14 +2,18 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.Medium;
-import de.hftstuttgart.units.NullableQuantity;
 
 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;
 
@@ -39,8 +43,8 @@ public class MediumImpl extends MinimalEObjectImpl.Container implements Medium {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "g/cm\u00b3");
+	protected static final NullableQuantity DENSITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "g/cm\u00b3");
 
 	/**
 	 * The cached value of the '{@link #getDensity() <em>Density</em>}' attribute.
@@ -60,8 +64,8 @@ public class MediumImpl extends MinimalEObjectImpl.Container implements Medium {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity HEAT_CAPACITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kJ/(kg*K)");
+	protected static final NullableQuantity HEAT_CAPACITY_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "kJ/(kg*K)");
 
 	/**
 	 * The cached value of the '{@link #getHeatCapacity() <em>Heat Capacity</em>}' attribute.
@@ -81,8 +85,8 @@ public class MediumImpl extends MinimalEObjectImpl.Container implements Medium {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity EVAPORATION_TEMPERATURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "\u00b0C");
+	protected static final NullableQuantity EVAPORATION_TEMPERATURE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "\u00b0C");
 
 	/**
 	 * The cached value of the '{@link #getEvaporationTemperature() <em>Evaporation Temperature</em>}' attribute.
@@ -102,8 +106,8 @@ public class MediumImpl extends MinimalEObjectImpl.Container implements Medium {
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MELTING_TEMPERATURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "\u00b0C");
+	protected static final NullableQuantity MELTING_TEMPERATURE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "\u00b0C");
 
 	/**
 	 * The cached value of the '{@link #getMeltingTemperature() <em>Melting Temperature</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/PhotovoltaicModuleImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/PhotovoltaicModuleImpl.java
index 588c64bc624c63db0229e1cd1da54c3c14f196b5..87e71a5b7dbd6a3feb412e1554e1ca3ef2a17245 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/PhotovoltaicModuleImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/PhotovoltaicModuleImpl.java
@@ -2,12 +2,14 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.PhotovoltaicModule;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.Enumerator;
@@ -63,8 +65,8 @@ public class PhotovoltaicModuleImpl extends EnergyComponentImpl implements Photo
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity NOMINAL_POWER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "W");
+	protected static final NullableQuantity NOMINAL_POWER_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "W");
 
 	/**
 	 * The cached value of the '{@link #getNominalPower() <em>Nominal Power</em>}' attribute.
@@ -84,8 +86,8 @@ public class PhotovoltaicModuleImpl extends EnergyComponentImpl implements Photo
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MPP_VOLTAGE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "V");
+	protected static final NullableQuantity MPP_VOLTAGE_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "V");
 
 	/**
 	 * The cached value of the '{@link #getMppVoltage() <em>Mpp Voltage</em>}' attribute.
@@ -105,8 +107,8 @@ public class PhotovoltaicModuleImpl extends EnergyComponentImpl implements Photo
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MPP_CURRENT_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "A");
+	protected static final NullableQuantity MPP_CURRENT_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "A");
 
 	/**
 	 * The cached value of the '{@link #getMppCurrent() <em>Mpp Current</em>}' attribute.
@@ -146,8 +148,8 @@ public class PhotovoltaicModuleImpl extends EnergyComponentImpl implements Photo
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MODULE_AREA_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "m\u00b2");
+	protected static final NullableQuantity MODULE_AREA_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "m\u00b2");
 
 	/**
 	 * The cached value of the '{@link #getModuleArea() <em>Module Area</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/SolarThermalCollectorImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/SolarThermalCollectorImpl.java
index 8539aaacb65fbbb3b75f9da5bddd8d4afc1c74b6..19186033b6fad5986c4b57ed3bf8ed53cc6a8260 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/SolarThermalCollectorImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/SolarThermalCollectorImpl.java
@@ -2,13 +2,15 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.CollectorTypes;
-import de.hftstuttgart.energycomponents.EnCompFactory;
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.SolarThermalCollector;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -61,8 +63,8 @@ public class SolarThermalCollectorImpl extends EnergyComponentImpl implements So
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity APERTURE_AREA_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "m\u00b2");
+	protected static final NullableQuantity APERTURE_AREA_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "m\u00b2");
 
 	/**
 	 * The cached value of the '{@link #getApertureArea() <em>Aperture Area</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalEnergyDeviceImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalEnergyDeviceImpl.java
index 6292a8c863602c623d4e59a02e18f075fc4eb73a..87a2bb1c3c018298a619fb01f60859036b5a9a22 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalEnergyDeviceImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalEnergyDeviceImpl.java
@@ -2,16 +2,19 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.FuelTypes;
 import de.hftstuttgart.energycomponents.ThermalEnergyDevice;
 
-import de.hftstuttgart.units.NullableQuantity;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
@@ -38,8 +41,8 @@ public abstract class ThermalEnergyDeviceImpl extends EnergyComponentImpl implem
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity INSTALLED_THERMAL_POWER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kW");
+	protected static final NullableQuantity INSTALLED_THERMAL_POWER_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "kW");
 
 	/**
 	 * The cached value of the '{@link #getInstalledThermalPower() <em>Installed Thermal Power</em>}' attribute.
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalStorageImpl.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalStorageImpl.java
index 69908a6671a490a5139ac77ae29b8503bfe5785e..43063bc806b5177543b45cb2f267b13cbc7407e7 100644
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalStorageImpl.java
+++ b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/impl/ThermalStorageImpl.java
@@ -2,18 +2,22 @@
  */
 package de.hftstuttgart.energycomponents.impl;
 
-import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
 import de.hftstuttgart.energycomponents.EnCompPackage;
 import de.hftstuttgart.energycomponents.Material;
 import de.hftstuttgart.energycomponents.Medium;
 import de.hftstuttgart.energycomponents.ThermalStorage;
 import de.hftstuttgart.energycomponents.ThermalStorageTypes;
 
-import de.hftstuttgart.units.NullableQuantity;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
@@ -46,8 +50,8 @@ public class ThermalStorageImpl extends EnergyComponentImpl implements ThermalSt
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity VOLUME_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "5 m\u00b3");
+	protected static final NullableQuantity VOLUME_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "5 m\u00b3");
 
 	/**
 	 * The cached value of the '{@link #getVolume() <em>Volume</em>}' attribute.
@@ -87,8 +91,8 @@ public class ThermalStorageImpl extends EnergyComponentImpl implements ThermalSt
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity MAX_TEMP_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "80 \u00b0C");
+	protected static final NullableQuantity MAX_TEMP_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "80 \u00b0C");
 
 	/**
 	 * The cached value of the '{@link #getMaxTemp() <em>Max Temp</em>}' attribute.
@@ -108,8 +112,8 @@ public class ThermalStorageImpl extends EnergyComponentImpl implements ThermalSt
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity TANK_THICKNESS_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "10 mm ");
+	protected static final NullableQuantity TANK_THICKNESS_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "10 mm ");
 
 	/**
 	 * The cached value of the '{@link #getTankThickness() <em>Tank Thickness</em>}' attribute.
@@ -129,8 +133,8 @@ public class ThermalStorageImpl extends EnergyComponentImpl implements ThermalSt
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity INSULATION_THICKNESS_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "100 mm");
+	protected static final NullableQuantity INSULATION_THICKNESS_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "100 mm");
 
 	/**
 	 * The cached value of the '{@link #getInsulationThickness() <em>Insulation Thickness</em>}' attribute.
@@ -170,8 +174,8 @@ public class ThermalStorageImpl extends EnergyComponentImpl implements ThermalSt
 	 * @generated
 	 * @ordered
 	 */
-	protected static final NullableQuantity HEIGHT_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
-			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "2 m");
+	protected static final NullableQuantity HEIGHT_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "2 m");
 
 	/**
 	 * The cached value of the '{@link #getHeight() <em>Height</em>}' attribute.
@@ -524,7 +528,6 @@ public class ThermalStorageImpl extends EnergyComponentImpl implements ThermalSt
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
diff --git a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/otherCost.java b/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/otherCost.java
deleted file mode 100644
index 89de8c78d3da5abc3c94a4841c51b250ee07308b..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.energycomponents.model/src-gen/de/hftstuttgart/energycomponents/otherCost.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- */
-package de.hftstuttgart.energycomponents;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>other Cost</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link de.hftstuttgart.energycomponents.otherCost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}</li>
- *   <li>{@link de.hftstuttgart.energycomponents.otherCost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}</li>
- * </ul>
- *
- * @see de.hftstuttgart.energycomponents.EnCompPackage#getotherCost()
- * @model abstract="true"
- * @generated
- */
-public interface otherCost extends EObject {
-	/**
-	 * Returns the value of the '<em><b>Administration And Other Cost Share</b></em>' attribute.
-	 * The default value is <code>"0.015"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * <!-- begin-model-doc -->
-	 * share of investment cost
-	 * <!-- end-model-doc -->
-	 * @return the value of the '<em>Administration And Other Cost Share</em>' attribute.
-	 * @see #setAdministrationAndOtherCostShare(double)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getotherCost_AdministrationAndOtherCostShare()
-	 * @model default="0.015"
-	 * @generated
-	 */
-	double getAdministrationAndOtherCostShare();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.otherCost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Administration And Other Cost Share</em>' attribute.
-	 * @see #getAdministrationAndOtherCostShare()
-	 * @generated
-	 */
-	void setAdministrationAndOtherCostShare(double value);
-
-	/**
-	 * Returns the value of the '<em><b>Maintenance Cost Share</b></em>' attribute.
-	 * The default value is <code>"0.015"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * <!-- begin-model-doc -->
-	 * share of investment cost
-	 * <!-- end-model-doc -->
-	 * @return the value of the '<em>Maintenance Cost Share</em>' attribute.
-	 * @see #setMaintenanceCostShare(double)
-	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getotherCost_MaintenanceCostShare()
-	 * @model default="0.015"
-	 * @generated
-	 */
-	double getMaintenanceCostShare();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.otherCost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Maintenance Cost Share</em>' attribute.
-	 * @see #getMaintenanceCostShare()
-	 * @generated
-	 */
-	void setMaintenanceCostShare(double value);
-
-} // otherCost
diff --git a/de.hftstuttgart.energycomponents.target/.project b/de.hftstuttgart.energycomponents.target/.project
new file mode 100644
index 0000000000000000000000000000000000000000..201c174e553ec58b9cbb36efd852801849eebb7b
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.target/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.energycomponents.target</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.energycomponents.target/energycomponents.target.target b/de.hftstuttgart.energycomponents.target/energycomponents.target.target
new file mode 100644
index 0000000000000000000000000000000000000000..f8387251eda947f03464de65afa9ead72a39f65a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.target/energycomponents.target.target
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?>
+<target name="RCP, EMF Forms 2020-12, JRE">
+	<locations>
+		<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit">
+			<repository location="http://download.eclipse.org/releases/2020-12"/>
+			<unit id="org.eclipse.equinox.sdk.feature.group" version="3.21.0.v20201128-0731"/>
+			<unit id="org.eclipse.e4.core.tools.feature.source.feature.group" version="4.18.0.v20201026-0947"/>
+		</location>
+		<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit">
+			<repository location="http://download.eclipse.org/ecp/releases/releases_target_125/"/>
+			<unit id="org.eclipse.emf.ecp.emfforms.sdk.feature.feature.group" version="1.25.0.20200916-0800"/>
+		</location>
+		<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit">
+			<repository location="https://transfer.hft-stuttgart.de/pages/neqmodplus/indriya-p2/release_target_211/"/>
+			<unit id="de.hft-stuttgart.indriya.feature.feature.group" version="0.0.0"/>
+		</location>
+		<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit">
+			<repository location="https://transfer.hft-stuttgart.de/pages/neqmodplus/de.hft-stuttgart.cityunits/release_target_101/"/>
+			<unit id="de.hftstuttgart.cityunits.feature.feature.group" version="0.0.0"/>
+		</location>
+		<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit">
+			<repository location="https://download.eclipse.org/justj/jres/15/updates/milestone"/>
+			<unit id="org.eclipse.justj.openjdk.hotspot.jre.full.stripped.feature.group" version="15.0.2.v20210201-0955"/>
+		</location>
+	</locations>
+</target>
\ No newline at end of file
diff --git a/de.hftstuttgart.indriya.osgiplugin/.classpath b/de.hftstuttgart.indriya.osgiplugin/.classpath
deleted file mode 100644
index 322426508be8a06246e0efefc9d45549362500bd..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.indriya.osgiplugin/.classpath
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
-		<attributes>
-			<attribute name="module" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry exported="true" kind="lib" path="indriya-2.0.2.jar" sourcepath="indriya-2.0.2-sources.jar"/>
-	<!-- classpathentry exported="true" kind="lib" path="javax.inject-1.jar"/-->
-	<classpathentry exported="true" kind="lib" path="unit-api-2.0.jar" sourcepath="unit-api-2.0-sources.jar"/>
-	<classpathentry exported="true" kind="lib" path="uom-lib-common-2.0.jar" sourcepath="uom-lib-common-2.0-sources.jar">
-		<attributes>
-			<attribute name="javadoc_location" value="jar:platform:/resource/de.hftstuttgart.units.libs/uom-lib-common-2.0-javadoc.jar!/"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/de.hftstuttgart.indriya.osgiplugin/.gitignore b/de.hftstuttgart.indriya.osgiplugin/.gitignore
deleted file mode 100644
index 9fb9e15adf26fe36dfca2be71b43d252b96a96e4..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.indriya.osgiplugin/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*.jar
-!indriya*.jar
-!javax.inject*.jar
-!unit-api*.jar
-!uom-lib-common*.jar
diff --git a/de.hftstuttgart.indriya.osgiplugin/.project b/de.hftstuttgart.indriya.osgiplugin/.project
deleted file mode 100644
index db1a5a7a184337edf28bc7b05f412c742c9ee034..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.indriya.osgiplugin/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>de.hftstuttgart.indriya.osgiplugin</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/de.hftstuttgart.indriya.osgiplugin/META-INF/MANIFEST.MF b/de.hftstuttgart.indriya.osgiplugin/META-INF/MANIFEST.MF
deleted file mode 100644
index 6bc84709309dd7f826e2e451b15551b35d18780d..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.indriya.osgiplugin/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,33 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: de.hftstuttgart.units.libs
-Bundle-SymbolicName: de.hftstuttgart.indriya.osgiplugin
-Bundle-Version: 1.0.0
-Bundle-ClassPath: indriya-2.0.2-javadoc.jar,
- indriya-2.0.2-sources.jar,
- indriya-2.0.2.jar,
- unit-api-2.0-javadoc.jar,
- unit-api-2.0-sources.jar,
- unit-api-2.0.jar,
- uom-lib-common-2.0-javadoc.jar,
- uom-lib-common-2.0-sources.jar,
- uom-lib-common-2.0.jar
-Export-Package: javax.measure,
- javax.measure.format,
- javax.measure.quantity,
- javax.measure.spi,
- tech.units.indriya,
- tech.units.indriya.format,
- tech.units.indriya.function,
- tech.units.indriya.internal.format,
- tech.units.indriya.internal.format.l10n,
- tech.units.indriya.internal.function.calc,
- tech.units.indriya.internal.function.radix,
- tech.units.indriya.internal.function.simplify,
- tech.units.indriya.quantity,
- tech.units.indriya.quantity.time,
- tech.units.indriya.spi,
- tech.units.indriya.unit,
- tech.uom.lib.common.function,
- tech.uom.lib.common.util
-Automatic-Module-Name: de.hftstuttgart.units.libs
diff --git a/de.hftstuttgart.indriya.osgiplugin/build.properties b/de.hftstuttgart.indriya.osgiplugin/build.properties
deleted file mode 100644
index a7f89ee6339ed905870116c5eb139760f830b793..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.indriya.osgiplugin/build.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-bin.includes = META-INF/,\
-               indriya-2.0.2.jar,\
-               unit-api-2.0.jar,\
-               uom-lib-common-2.0.jar
diff --git a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-javadoc.jar b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-javadoc.jar
deleted file mode 100644
index 4617537d5e2990cd70bc2a2598f723b21bb922f2..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-javadoc.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-sources.jar b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-sources.jar
deleted file mode 100644
index ba598e619eb8cc6bb32b7a00e4c5c15d46c62469..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-sources.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2.jar b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2.jar
deleted file mode 100644
index be14b080045f562b2a9a33df1b828a386dd6871c..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-javadoc.jar b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-javadoc.jar
deleted file mode 100644
index 3b66502638cb1779cadf67d65a5f07205e1493bd..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-javadoc.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-sources.jar b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-sources.jar
deleted file mode 100644
index 5fc208cd5f69b7ed7b06154520ecd31c8667cf77..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-sources.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0.jar b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0.jar
deleted file mode 100644
index d11827e77265fbbdfd01fc2158138c2b45323d29..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-javadoc.jar b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-javadoc.jar
deleted file mode 100644
index 35837bda6a2bc0ccab992e16b88f5b397dab3cb2..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-javadoc.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-sources.jar b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-sources.jar
deleted file mode 100644
index 60b6c66b6ebcdbb4964d54b5cc30ebe0ce29b4b5..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-sources.jar and /dev/null differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0.jar b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0.jar
deleted file mode 100644
index d3a2479f18873510558a5e26586b3cbfb57cfa03..0000000000000000000000000000000000000000
Binary files a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0.jar and /dev/null differ
diff --git a/de.hftstuttgart.units.ui.renderer/.classpath b/de.hftstuttgart.units.ui.renderer/.classpath
deleted file mode 100644
index a02dd9c8ff24c756ff8f40186a03d3bd495df037..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units.ui.renderer/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
-		<attributes>
-			<attribute name="module" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/de.hftstuttgart.units.ui.renderer/.project b/de.hftstuttgart.units.ui.renderer/.project
deleted file mode 100644
index 0aec854c7a0d5199756605ed3b0ff758ad92747d..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units.ui.renderer/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>de.hftstuttgart.units.ui.renderer</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ds.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/de.hftstuttgart.units.ui.renderer/META-INF/MANIFEST.MF b/de.hftstuttgart.units.ui.renderer/META-INF/MANIFEST.MF
deleted file mode 100644
index 79522a97f7924a7d76bfe09908b40f10d15c3a77..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units.ui.renderer/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,29 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: QuantityControl
-Bundle-SymbolicName: de.hftstuttgart.units.ui.renderer;singleton:=true
-Bundle-Version: 1.0.0
-Bundle-Vendor: Eclipse Modeling Project
-Export-Package: de.hftstuttgart.units.ui.renderer;version="1.24.0"
-Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="1.23.0",
- org.eclipse.emf.ecp.ui.view.swt;bundle-version="1.23.0",
- org.eclipse.emf.ecp.view.core.swt;bundle-version="1.23.0",
- org.eclipse.emf.ecp.view.template.model;bundle-version="1.23.0",
- org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
- org.eclipse.emfforms.core.services.editsupport;bundle-version="1.23.0",
- org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
- org.eclipse.emfforms.swt.core.di;bundle-version="1.23.0",
- de.hftstuttgart.energycomponents.model;bundle-version="1.0.0",
- de.hftstuttgart.units;bundle-version="1.0.0",
- de.hftstuttgart.indriya.osgiplugin;bundle-version="1.0.0",
- org.eclipse.emfforms.localization,
- org.eclipse.jface
-Service-Component: OSGI-INF/quantityRendererService.xml
-Bundle-ActivationPolicy: lazy
-Import-Package: javax.inject;version="1.0.0",
- org.eclipse.emfforms.spi.common.report;version="1.23.0",
- org.eclipse.jface.layout;version="0.0.0",
- org.eclipse.swt;version="0.0.0",
- org.eclipse.swt.widgets;version="0.0.0"
-Automatic-Module-Name: de.hftstuttgart.units.ui.eclipse.quantityrenderer
diff --git a/de.hftstuttgart.units.ui.renderer/OSGI-INF/quantityRendererService.xml b/de.hftstuttgart.units.ui.renderer/OSGI-INF/quantityRendererService.xml
deleted file mode 100644
index 9e90c6dfd91b6e544a8ff3d7b191e1d34f20a07f..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units.ui.renderer/OSGI-INF/quantityRendererService.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="de.hftstuttgart.units.ui.rendererservice">
-   <implementation class="de.hftstuttgart.units.ui.renderer.QuantityControlRendererService"/>
-   <service>
-      <provide interface="org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService"/>
-   </service>
-   <reference bind="setEMFFormsDatabinding" cardinality="1..1" interface="org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding" name="EMFFormsDatabinding" policy="static"/>
-   <reference bind="setReportService" cardinality="1..1" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService" policy="static"/>
-</scr:component>
diff --git a/de.hftstuttgart.units.ui.renderer/build.properties b/de.hftstuttgart.units.ui.renderer/build.properties
deleted file mode 100644
index 6210e849b591d26fa9e17057ad3e8d09511917b6..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units.ui.renderer/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/
-source.. = src/
diff --git a/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRenderer.java b/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRenderer.java
deleted file mode 100644
index 5c4d87afad7bdebb7f1953915830ea8dfe4c8e2a..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRenderer.java
+++ /dev/null
@@ -1,370 +0,0 @@
-package de.hftstuttgart.units.ui.renderer;
-
-import java.text.DecimalFormat;
-import java.text.ParseException;
-import java.text.ParsePosition;
-
-import javax.inject.Inject;
-import javax.measure.Unit;
-
-import org.eclipse.core.databinding.Binding;
-import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.UpdateValueStrategy;
-import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecp.edit.internal.swt.controls.NumericalHelper;
-import org.eclipse.emf.ecp.edit.spi.swt.util.ECPDialogExecutor;
-import org.eclipse.emf.ecp.view.internal.core.swt.Activator;
-import org.eclipse.emf.ecp.view.internal.core.swt.MessageKeys;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
-import org.eclipse.emf.ecp.view.spi.core.swt.renderer.TextControlSWTRenderer;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
-import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
-import org.eclipse.emf.edit.command.SetCommand;
-import org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleChangeListener;
-import org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleProvider;
-import org.eclipse.emfforms.spi.common.report.ReportService;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
-import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
-import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
-import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
-import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
-import org.eclipse.jface.dialogs.IDialogLabelKeys;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-import de.hftstuttgart.energycomponents.EnCompPackage;
-import de.hftstuttgart.units.NullableQuantity;
-
-public class QuantityControlRenderer extends TextControlSWTRenderer {
-
-	private final EMFFormsLocalizationService localizationService;
-	private final EMFFormsLocaleProvider localeProvider;
-	private EMFFormsLocaleChangeListener emfFormsLocaleChangeListener;
-	private Unit<?> unit;
-
-	/**
-	 * Default constructor.
-	 *
-	 * @param vElement the view model element to be rendered
-	 * @param viewContext the view context
-	 * @param reportService The {@link ReportService}
-	 * @param emfFormsDatabinding The {@link EMFFormsDatabinding}
-	 * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider}
-	 * @param vtViewTemplateProvider The {@link VTViewTemplateProvider}
-	 * @param emfFormsEditSupport The {@link EMFFormsEditSupport}
-	 * @param localizationService The {@link EMFFormsLocalizationService}
-	 * @param localeProvider The {@link EMFFormsLocaleProvider}
-	 */
-	@Inject
-	// CHECKSTYLE.OFF: ParameterNumber
-	public QuantityControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
-		EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider,
-		VTViewTemplateProvider vtViewTemplateProvider, EMFFormsEditSupport emfFormsEditSupport,
-		EMFFormsLocalizationService localizationService, EMFFormsLocaleProvider localeProvider) {
-		// CHECKSTYLE.ON: ParameterNumber
-		super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider,
-			emfFormsEditSupport);
-		this.localizationService = localizationService;
-		this.localeProvider = localeProvider;
-	}
-
-	@Override
-	protected Control createSWTControl(Composite parent) {
-		final VFeaturePathDomainModelReference featureRef = (VFeaturePathDomainModelReference) getVElement()
-			.getDomainModelReference();
-		final String defaultString = featureRef.getDomainModelEFeature().getDefaultValueLiteral();
-		final NullableQuantity defaultValue = NullableQuantity.create(defaultString);
-		unit = defaultValue.getUnit();
-
-		final Composite composite = new Composite(parent, SWT.NONE);
-		GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite);
-		GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.BEGINNING).applyTo(composite);
-		final Control control = super.createSWTControl(composite);
-		final Label label = new Label(composite, SWT.PUSH);
-		label.setText(unit.toString());
-		return control;
-	}
-
-	@Override
-	protected int getDefaultAlignment() {
-		return SWT.RIGHT;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.emf.ecp.edit.internal.swt.controls.AbstractTextControl#getTextVariantID()
-	 */
-	@Override
-	protected String getTextVariantID() {
-		return "org_eclipse_emf_ecp_control_numerical"; //$NON-NLS-1$
-	}
-
-	@Override
-	protected String getTextMessage() {
-		return ""; //$NON-NLS-1$
-	}
-
-	@Override
-	protected Object convert(Text text, EDataType attributeType, String value) throws DatabindingFailedException {
-		final EStructuralFeature eStructuralFeature = (EStructuralFeature) getModelValue().getValueType();
-		final NumericalTargetToModelUpdateStrategy converter = new NumericalTargetToModelUpdateStrategy(
-			eStructuralFeature, getModelValue(), getDataBindingContext(), text);
-		return converter.convert(value);
-	}
-
-	@Override
-	protected Binding[] createBindings(final Control control) throws DatabindingFailedException {
-		final EStructuralFeature structuralFeature = (EStructuralFeature) getModelValue().getValueType();
-
-		final UpdateValueStrategy<?, ?> targetToModelStrategy = withPreSetValidation(
-			new NumericalTargetToModelUpdateStrategy(structuralFeature, getModelValue(), getDataBindingContext(),
-				(Text) Composite.class.cast(control).getChildren()[0]));
-		final NumericalModelToTargetUpdateStrategy modelToTargetStrategy = new NumericalModelToTargetUpdateStrategy(
-			getInstanceClass(structuralFeature), false);
-		final Binding binding = bindValue(control, getModelValue(), getDataBindingContext(),
-			targetToModelStrategy, modelToTargetStrategy);
-		final Binding tooltipBinding = createTooltipBinding(control, getModelValue(), getDataBindingContext(),
-			targetToModelStrategy,
-			new NumericalModelToTargetUpdateStrategy(getInstanceClass(structuralFeature), true));
-
-		emfFormsLocaleChangeListener = new EMFFormsLocaleChangeListener() {
-
-			/**
-			 * {@inheritDoc}
-			 *
-			 * @see org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleChangeListener#notifyLocaleChange()
-			 */
-			@Override
-			public void notifyLocaleChange() {
-				((Text) control).setMessage(getTextMessage());
-				binding.updateModelToTarget();
-			}
-		};
-		localeProvider.addEMFFormsLocaleChangeListener(emfFormsLocaleChangeListener);
-
-		return new Binding[] { binding, tooltipBinding };
-	}
-
-	private Class<?> getInstanceClass(EStructuralFeature feature) {
-		if (feature.getEType() == EnCompPackage.eINSTANCE.getQuantityDouble()) {
-			return Double.class;
-		} else if (feature.getEType() == EnCompPackage.eINSTANCE.getQuantityLong()) {
-			return Long.class;
-		}
-		assert false;
-		return null;
-	}
-
-	@Override
-	protected String getTextFromTextField(Text text, EDataType attributeType) {
-		return text.getText().isBlank() ? null : super.getTextFromTextField(text, attributeType);
-	}
-
-	/**
-	 * Converts the numerical value from the model to the target. Locale settings are respected,
-	 * i.e. formatting is performed according to the current locale.
-	 */
-	private class NumericalModelToTargetUpdateStrategy extends ModelToTargetUpdateStrategy {
-
-		private final Class<?> instanceClass;
-
-		NumericalModelToTargetUpdateStrategy(Class<?> instanceClass, boolean tooltip) {
-			super(tooltip);
-			this.instanceClass = instanceClass;
-		}
-
-		@Override
-		public Object convertValue(Object value) {
-			if (value == null) {
-				return ""; //$NON-NLS-1$
-			}
-			return ((NullableQuantity) value).getNumber()
-				.map(n -> NumericalHelper.setupFormat(localeProvider.getLocale(), instanceClass).format(n))
-				.orElse(""); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * More specific target to model update strategy that convert the string
-	 * in the text field to a number. If the string is a invalid number,
-	 * for instance because of the current locale, the value is reset to
-	 * the last valid value found in the mode.
-	 */
-	private class NumericalTargetToModelUpdateStrategy extends TargetToModelUpdateStrategy {
-
-		private final Text text;
-		private final IObservableValue<?> modelValue;
-		private final EStructuralFeature eStructuralFeature;
-		private final DataBindingContext dataBindingContext;
-
-		NumericalTargetToModelUpdateStrategy(EStructuralFeature eStructuralFeature,
-			IObservableValue<?> modelValue, DataBindingContext dataBindingContext, Text text) {
-			super(eStructuralFeature.isUnsettable());
-			this.eStructuralFeature = eStructuralFeature;
-			this.modelValue = modelValue;
-			this.dataBindingContext = dataBindingContext;
-			this.text = text;
-		}
-
-		@Override
-		protected Object convertValue(final Object value) {
-			final DecimalFormat format = NumericalHelper.setupFormat(
-				localeProvider.getLocale(), getInstanceClass(eStructuralFeature));
-
-			try {
-				Number number = null;
-				if (value == null) {
-					number = NumericalHelper.getDefaultValue(getInstanceClass(eStructuralFeature));
-				} else {
-					final ParsePosition pp = new ParsePosition(0);
-					number = format.parse((String) value, pp);
-					if (pp.getErrorIndex() != -1 || pp.getIndex() != ((String) value).length()) {
-						return getOldValue(value);
-					}
-					if (NumericalHelper.isInteger(getInstanceClass(eStructuralFeature))) {
-						boolean maxValue = false;
-						boolean minValue = false;
-						final Class<?> instanceClass = getInstanceClass(eStructuralFeature);
-						try {
-							if (number.doubleValue() >= getInstanceMaxValue(instanceClass)) {
-								maxValue = true;
-							} else if (number.doubleValue() <= getInstanceMinValue(instanceClass)) {
-								minValue = true;
-							}
-						} catch (final IllegalArgumentException ex) {
-							Activator.logException(ex);
-						} catch (final SecurityException ex) {
-							Activator.logException(ex);
-						} catch (final IllegalAccessException ex) {
-							Activator.logException(ex);
-						} catch (final NoSuchFieldException ex) {
-							Activator.logException(ex);
-						}
-
-						if (maxValue || minValue) {
-							return numberToQuantity(number);
-						}
-					}
-				}
-				String formatedNumber = ""; //$NON-NLS-1$
-				if (number != null) {
-					formatedNumber = format.format(number);
-				}
-				if (formatedNumber.length() == 0) {
-					return null;
-				}
-				return numberToQuantity(format.parse(formatedNumber));
-			} catch (final ParseException ex) {
-				return getOldValue(value);
-			}
-		}
-
-		private Object numberToQuantity(Number number) {
-			return NullableQuantity.create(number, unit);
-		}
-
-		private double getInstanceMinValue(Class<?> instanceClass)
-			throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
-			if (Integer.class.isAssignableFrom(instanceClass)
-				|| Integer.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
-				return Integer.MIN_VALUE;
-			}
-			if (Long.class.isAssignableFrom(instanceClass)
-				|| Long.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
-				return Long.MIN_VALUE;
-			}
-			if (Short.class.isAssignableFrom(instanceClass)
-				|| Short.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
-				return Short.MIN_VALUE;
-			}
-
-			return Double.NaN;
-		}
-
-		private double getInstanceMaxValue(Class<?> instanceClass)
-			throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
-			if (Integer.class.isAssignableFrom(instanceClass)
-				|| Integer.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
-				return Integer.MAX_VALUE;
-			}
-			if (Long.class.isAssignableFrom(instanceClass)
-				|| Long.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
-				return Long.MAX_VALUE;
-			}
-			if (Short.class.isAssignableFrom(instanceClass)
-				|| Short.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
-				return Short.MAX_VALUE;
-			}
-
-			return Double.NaN;
-		}
-
-		@Override
-		protected IStatus doSet(IObservableValue observableValue, Object value) {
-			final IStatus status = super.doSet(observableValue, value);
-			// update targets after a model change triggered by the target to model databinding
-			dataBindingContext.updateTargets();
-			return status;
-		}
-
-		private Object getOldValue(final Object value) {
-			if (eStructuralFeature.getDefaultValue() == null && value == null || value.equals("")) { //$NON-NLS-1$
-				return null;
-			}
-			final Object result = modelValue.getValue();
-
-			final MessageDialog messageDialog = new MessageDialog(text.getShell(),
-				localizationService.getString(getClass(), MessageKeys.NumericalControl_InvalidNumber), null,
-				localizationService.getString(getClass(), MessageKeys.NumericalControl_InvalidNumberWillBeUnset),
-				MessageDialog.ERROR,
-				new String[] { JFaceResources.getString(IDialogLabelKeys.OK_LABEL_KEY) }, 0);
-
-			new ECPDialogExecutor(messageDialog) {
-				@Override
-				public void handleResult(int codeResult) {
-
-				}
-			}.execute();
-
-			dataBindingContext.updateTargets();
-			if (eStructuralFeature.isUnsettable() && result == null) {
-				// showUnsetLabel();
-				return SetCommand.UNSET_VALUE;
-			}
-			return result;
-		}
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.core.swt.renderer.TextControlSWTRenderer#getUnsetText()
-	 */
-	@Override
-	protected String getUnsetText() {
-		return localizationService.getString(getClass(), MessageKeys.NumericalControl_NoNumberClickToSetNumber);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTRenderer#dispose()
-	 */
-	@Override
-	protected void dispose() {
-		super.dispose();
-		localeProvider.removeEMFFormsLocaleChangeListener(emfFormsLocaleChangeListener);
-	}
-
-}
diff --git a/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRendererService.java b/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRendererService.java
deleted file mode 100644
index b7c0167cc060bdce53be89dec0b0ebab56e24c30..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRendererService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package de.hftstuttgart.units.ui.renderer;
-
-import org.eclipse.core.databinding.property.value.IValueProperty;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.model.VElement;
-import org.eclipse.emfforms.spi.common.report.ReportService;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
-import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
-import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
-import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
-
-import de.hftstuttgart.units.NullableQuantity;
-
-/**
- * QuantityRendererService which provides the QuantityRenderer.
- *
- * @author Kai Brassel
- *
- */
-public class QuantityControlRendererService implements EMFFormsDIRendererService<VControl> {
-
-	private EMFFormsDatabinding databindingService;
-	private ReportService reportService;
-
-	/**
-	 * Called by the initializer to set the EMFFormsDatabinding.
-	 *
-	 * @param databindingService The EMFFormsDatabinding
-	 */
-	protected void setEMFFormsDatabinding(EMFFormsDatabinding databindingService) {
-		this.databindingService = databindingService;
-	}
-
-	/**
-	 * Called by the initializer to set the ReportService.
-	 *
-	 * @param reportService The ReportService
-	 */
-	protected void setReportService(ReportService reportService) {
-		this.reportService = reportService;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#isApplicable(VElement,ViewModelContext)
-	 */
-	@Override
-	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
-		if (!VControl.class.isInstance(vElement)) {
-			return NOT_APPLICABLE;
-		}
-		final VControl control = (VControl) vElement;
-		if (control.getDomainModelReference() == null) {
-			return NOT_APPLICABLE;
-		}
-		@SuppressWarnings("rawtypes")
-		IValueProperty valueProperty;
-		try {
-			valueProperty = databindingService.getValueProperty(control.getDomainModelReference(),
-				viewModelContext.getDomainModel());
-		} catch (final DatabindingFailedException ex) {
-			reportService.report(new DatabindingFailedReport(ex));
-			return NOT_APPLICABLE;
-		}
-		final EStructuralFeature eStructuralFeature = EStructuralFeature.class.cast(valueProperty.getValueType());
-		if (eStructuralFeature.getEType().getInstanceClass() == NullableQuantity.class) {
-			return 9; // 9 - not 10 - to avoid priority clash with multi-valued attributes
-		}
-		return NOT_APPLICABLE;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#getRendererClass()
-	 */
-	@Override
-	public Class<? extends AbstractSWTRenderer<VControl>> getRendererClass() {
-		return QuantityControlRenderer.class;
-	}
-
-}
diff --git a/de.hftstuttgart.units/.classpath b/de.hftstuttgart.units/.classpath
deleted file mode 100644
index 2869279ea3b40554d75a2a2ac7ffa357f9f0f72e..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
-		<attributes>
-			<attribute name="module" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/de.hftstuttgart.units/.project b/de.hftstuttgart.units/.project
deleted file mode 100644
index b4ebaa3b8c404d53c7241e819f753330b023a90f..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>de.hftstuttgart.units</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/de.hftstuttgart.units/META-INF/MANIFEST.MF b/de.hftstuttgart.units/META-INF/MANIFEST.MF
deleted file mode 100644
index b7f14d1f1b4a6e9b7ee698dcb88db27d3161ccb0..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Units
-Bundle-SymbolicName: de.hftstuttgart.units
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: HfT Stuttgart
-Automatic-Module-Name: de.hftstuttgart.units
-Require-Bundle: de.hftstuttgart.indriya.osgiplugin;bundle-version="1.0.0"
-Export-Package: de.hftstuttgart.units
diff --git a/de.hftstuttgart.units/build.properties b/de.hftstuttgart.units/build.properties
deleted file mode 100644
index 34d2e4d2dad529ceaeb953bfcdb63c51d69ffed2..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/build.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/Dollar.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/Dollar.java
deleted file mode 100644
index f47de03457a90ee4950495a5607d50c9456802f0..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/src/de/hftstuttgart/units/Dollar.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.hftstuttgart.units;
-
-import javax.measure.Quantity;
-
-
-/**
- * This interface represents the intensity dimension.
- */
-public interface Dollar extends Quantity<Dollar>
-{
-}
\ No newline at end of file
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/Euro.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/Euro.java
deleted file mode 100644
index 58f80a960aa7d5f0c5a924077a777990c5976194..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/src/de/hftstuttgart/units/Euro.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.hftstuttgart.units;
-
-import javax.measure.Quantity;
-
-
-/**
- * This interface represents the intensity dimension.
- */
-public interface Euro extends Quantity<Euro>
-{
-}
\ No newline at end of file
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/Intensity.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/Intensity.java
deleted file mode 100644
index 1228e1aa633c485245994e14ab96406af43a7e6b..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/src/de/hftstuttgart/units/Intensity.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.hftstuttgart.units;
-
-import javax.measure.Quantity;
-
-
-/**
- * This interface represents the intensity dimension.
- */
-public interface Intensity extends Quantity<Intensity>
-{
-}
\ No newline at end of file
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/NullableQuantity.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/NullableQuantity.java
deleted file mode 100644
index a0d08fc595ca2c4b2ae60eed47152ca196fe47e4..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/src/de/hftstuttgart/units/NullableQuantity.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package de.hftstuttgart.units;
-
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.Locale;
-import java.util.Optional;
-
-import javax.measure.Quantity;
-import javax.measure.Unit;
-
-import tech.units.indriya.format.SimpleQuantityFormat;
-import tech.units.indriya.quantity.Quantities;
-
-/**
- * A <code>NullableQuantity</code> wraps a <code>javax.measure.Quantity</code> having
- * a numerical value that is either a <code>Double</code>, a <code>Long</code>,
- * or <code>null</code>. The latter case represents an unknown numerical
- * value of a specific unit. On the other hand, the <code>javax.measure.Unit</code>
- * of the quantity is always defined.
- */
-public class NullableQuantity {
-
-	static {
-		// TODO Implement specific QuantityFormat to enable custom number format?
-		// ensure that editing, (de)serialization and default values of units all work
-		// with the same number format (Decimal point etc.)
-		Locale.setDefault(Locale.ENGLISH);
-		
-		// specific additional units for urban simulation like TON (t), PARTS_PER_MILLION (ppm), DECIBEL (dB)
-		UrbanSimulationUnits.getInstance();
-	}
-
-	public static NullableQuantity create(String str) {
-		NullableQuantity newNullableQuantity = null;
-		try {
-			NumberFormat.getInstance().parse(str);
-			newNullableQuantity = new NullableQuantity(str);
-		} catch (final ParseException ex) { // no number value present: create NullQuantity just with unit
-			try {
-				NullableQuantity dummy = new NullableQuantity("1 " + str); //$NON-NLS-1$
-				newNullableQuantity = new NullQuantity(dummy.getUnit());
-			} catch (final IllegalArgumentException ex1) { // Unit could not be parsed
-				System.out.println("Unit '" + str + "'  could not be parsed!"); //TODO
-				ex.printStackTrace();
-			}
-		} catch (final IllegalArgumentException ex) { // Quantity could not be parsed
-			System.out.println("Quantity '" + str + "' could not be parsed!");	//TODO
-			ex.printStackTrace();
-		}
-		return newNullableQuantity;
-	}
-
-	public static NullableQuantity create(Number number, Unit<?> unit) {
-		return number == null ? new NullQuantity(unit) : new NullableQuantity(number, unit);
-	}
-
-	private final Quantity<?> quantity;
-
-	private NullableQuantity(String str) {
-		quantity = Quantities.getQuantity(str);
-	}
-
-	private NullableQuantity(Number number, Unit<?> unit) {
-		quantity = Quantities.getQuantity(number, unit);
-	}
-
-	/**
-	 * In case of an unknown numerical value of the quantity an empty <code>Optional</code> is returned via subclass.
-	 * @return the wrapped <code>javax.measure.Quantity</code> if its numerical value is present
-	 */
-	public Optional<Quantity<?>> getQuantity() {
-		return Optional.of(quantity);
-	}
-	
-	/**
-	 * @return numerical value of the wrapped <code>javax.measure.Quantity</code> if present
-	 */
-	public Optional<Number> getNumber() {
-		return getQuantity().map(Quantity::getValue);
-	}
-
-	public Unit<?> getUnit() {
-		return quantity.getUnit();
-	}
-
-	@Override
-	public String toString() {
-		return SimpleQuantityFormat.getInstance().format(quantity);
-	}
-
-
-	private static class NullQuantity extends NullableQuantity {
-		public NullQuantity(Unit<?> unit) {
-			super(1, unit);
-		}
-
-		public Optional<Quantity<?>> getQuantity() {
-			return Optional.empty();
-		}
-
-		@Override
-		public String toString() {
-			return "<unknown> " + getUnit().toString();
-		}
-	}
-}
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/UrbanSimulationUnits.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/UrbanSimulationUnits.java
deleted file mode 100644
index 89652fa4fd639b9e4d50bc7fe89ca7f231e99088..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/src/de/hftstuttgart/units/UrbanSimulationUnits.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package de.hftstuttgart.units;
-
-import java.math.BigInteger;
-
-import javax.measure.Dimension;
-import javax.measure.Quantity;
-import javax.measure.Unit;
-import javax.measure.quantity.Dimensionless;
-import javax.measure.quantity.Mass;
-import javax.measure.spi.SystemOfUnits;
-
-import tech.units.indriya.AbstractSystemOfUnits;
-import tech.units.indriya.AbstractUnit;
-import tech.units.indriya.format.SimpleUnitFormat;
-import tech.units.indriya.function.LogConverter;
-import tech.units.indriya.function.MultiplyConverter;
-import tech.units.indriya.unit.AlternateUnit;
-import tech.units.indriya.unit.BaseUnit;
-import tech.units.indriya.unit.TransformedUnit;
-import tech.units.indriya.unit.UnitDimension;
-import tech.units.indriya.unit.Units;
-
-public class UrbanSimulationUnits extends AbstractSystemOfUnits
-{
-	private static final UrbanSimulationUnits INSTANCE = new UrbanSimulationUnits();
-	
-	@Override
-	public String getName() {
-		return getClass().getSimpleName();
-	}
-
-	public static final Unit<Dimensionless> PARTS_PER_MILLION = addUnit(new TransformedUnit<>(AbstractUnit.ONE,
-			MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(1000000))));
-	public static final Unit<Dimensionless> DECIBEL = addUnit(AbstractUnit.ONE.transform(
-			new LogConverter(10).inverse().concatenate(MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.TEN))));
-	public static final Unit<Mass> TON = addUnit(Units.KILOGRAM.multiply(1000));
-
-	public static final Unit<Intensity> IRRADIANCE = addUnit(
-			new AlternateUnit<Intensity>(Units.WATT.divide(Units.SQUARE_METRE), "W/m2"));
-
-	// To model costs I added monetary units quick and dirty as SI base units. According to JavaDoc of AbstractUnit,
-	// monetary units should rather be implemented in an extra type hierarchy below ComparableUnit.
-	public final static Dimension MONEY_DIMENSION = UnitDimension.parse('M');
-	public final static Unit<Euro> EURO = new BaseUnit<Euro>("€", MONEY_DIMENSION);
-	public final static Unit<Dollar> DOLLAR = new BaseUnit<Dollar>("$", MONEY_DIMENSION);
-
-	static {
-		SimpleUnitFormat.getInstance().label(TON, "t");
-		SimpleUnitFormat.getInstance().label(DECIBEL, "dB");
-		SimpleUnitFormat.getInstance().label(PARTS_PER_MILLION, "ppm");
-		SimpleUnitFormat.getInstance().label(EURO, "€");
-		SimpleUnitFormat.getInstance().label(DOLLAR, "$");
-	}
-
-
-	/**
-	 * Returns the unique instance of this class.
-	 *
-	 * @return the Units instance.
-	 */
-	public static SystemOfUnits getInstance() {
-		return INSTANCE;
-	}
-
-	/**
-	 * Adds a new unit not mapped to any specified quantity type.
-	 *
-	 * @param unit the unit being added.
-	 * @return <code>unit</code>.
-	 */
-	private static <U extends Unit<?>> U addUnit(U unit) {
-		INSTANCE.units.add(unit);
-		return unit;
-	}
-
-	/**
-	 * Adds a new unit and maps it to the specified quantity type.
-	 *
-	 * @param unit the unit being added.
-	 * @param type the quantity type.
-	 * @return <code>unit</code>.
-	 */
-	private static <U extends AbstractUnit<?>> U addUnit(U unit, Class<? extends Quantity<?>> type) {
-		INSTANCE.units.add(unit);
-		INSTANCE.quantityToUnit.put(type, unit);
-		return unit;
-	}
-}
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/VolumetricFlowRate.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/VolumetricFlowRate.java
deleted file mode 100644
index 43b0e80e213105506a45c916c33e4a3d52c71d23..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.units/src/de/hftstuttgart/units/VolumetricFlowRate.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.hftstuttgart.units;
-
-import javax.measure.Quantity;
-
-
-/**
- * Define Volumetric Flow Rate type (basic unit is m^3/s).
- */
-public interface VolumetricFlowRate extends Quantity<VolumetricFlowRate>
-{
-}
\ No newline at end of file