diff --git a/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/ConstructionCategory.gif b/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/ConstructionCategory.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa
Binary files /dev/null and b/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/ConstructionCategory.gif differ
diff --git a/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/Layer.gif b/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/Layer.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/Layer.gif differ
diff --git a/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/Mounting.gif b/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/Mounting.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/de.hftstuttgart.buildingphysics.edit/icons/full/obj16/Mounting.gif differ
diff --git a/de.hftstuttgart.buildingphysics.edit/plugin.properties b/de.hftstuttgart.buildingphysics.edit/plugin.properties
index 460b07c08f4d045b732e05050882fde8d0aac8cf..1a6336595ebdb1f38fdaedd108fae1c91b499d89 100644
--- a/de.hftstuttgart.buildingphysics.edit/plugin.properties
+++ b/de.hftstuttgart.buildingphysics.edit/plugin.properties
@@ -70,3 +70,19 @@ _UI_Material_constructionDescription_feature = Construction Description
 _UI_Material_disposalEnergy_feature = Disposal Energy
 _UI_Material_disposalCarbon_feature = Disposal Carbon
 _UI_Material_disposalDescription_feature = Disposal Description
+_UI_ConstructionCategory_type = Construction Category
+_UI_Mounting_type = Mounting
+_UI_Layer_type = Layer
+_UI_MaterialCatalog_constructionCategories_feature = Construction Categories
+_UI_ConstructionCategory_name_feature = Name
+_UI_ConstructionCategory_mountings_feature = Mountings
+_UI_Mounting_id_feature = Id
+_UI_Mounting_name_feature = Name
+_UI_Mounting_layers_feature = Layers
+_UI_Layer_material_feature = Material
+_UI_Layer_thickness_feature = Thickness
+_UI_MaterialCategory_materials_feature = Materials
+_UI_WindowType_windowTypeId_feature = Window Type Id
+_UI_Material_materialId_feature = Material Id
+_UI_Mounting_mountingId_feature = Mounting Id
+_UI_Layer__feature = 
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/BuildingPhysicsItemProviderAdapterFactory.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/BuildingPhysicsItemProviderAdapterFactory.java
index 757bc7f17fea6af387ed21d7a6cdc8e6635c9db3..43d2dda49e978f6f1a4350056d66eaa9c4f710a8 100644
--- a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/BuildingPhysicsItemProviderAdapterFactory.java
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/BuildingPhysicsItemProviderAdapterFactory.java
@@ -210,6 +210,75 @@ public class BuildingPhysicsItemProviderAdapterFactory extends BuildingPhysicsAd
 		return materialItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.buildingphysics.ConstructionCategory} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConstructionCategoryItemProvider constructionCategoryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.buildingphysics.ConstructionCategory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createConstructionCategoryAdapter() {
+		if (constructionCategoryItemProvider == null) {
+			constructionCategoryItemProvider = new ConstructionCategoryItemProvider(this);
+		}
+
+		return constructionCategoryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.buildingphysics.Mounting} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MountingItemProvider mountingItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.buildingphysics.Mounting}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMountingAdapter() {
+		if (mountingItemProvider == null) {
+			mountingItemProvider = new MountingItemProvider(this);
+		}
+
+		return mountingItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.buildingphysics.Layer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LayerItemProvider layerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.buildingphysics.Layer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerAdapter() {
+		if (layerItemProvider == null) {
+			layerItemProvider = new LayerItemProvider(this);
+		}
+
+		return layerItemProvider;
+	}
+
 	/**
 	 * This returns the root adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
@@ -327,6 +396,12 @@ public class BuildingPhysicsItemProviderAdapterFactory extends BuildingPhysicsAd
 			materialCategoryItemProvider.dispose();
 		if (materialItemProvider != null)
 			materialItemProvider.dispose();
+		if (constructionCategoryItemProvider != null)
+			constructionCategoryItemProvider.dispose();
+		if (mountingItemProvider != null)
+			mountingItemProvider.dispose();
+		if (layerItemProvider != null)
+			layerItemProvider.dispose();
 	}
 
 }
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/ConstructionCategoryItemProvider.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/ConstructionCategoryItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..008bb5086302e9344bd4f43e5c6eb1438af73659
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/ConstructionCategoryItemProvider.java
@@ -0,0 +1,192 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics.provider;
+
+import de.hftstuttgart.buildingphysics.BuildingPhysicsFactory;
+import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
+import de.hftstuttgart.buildingphysics.ConstructionCategory;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.buildingphysics.ConstructionCategory} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ConstructionCategoryItemProvider 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 ConstructionCategoryItemProvider(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);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ConstructionCategory_name_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ConstructionCategory_name_feature",
+						"_UI_ConstructionCategory_type"),
+				BuildingPhysicsPackage.Literals.CONSTRUCTION_CATEGORY__NAME, true, false, false,
+				ItemPropertyDescriptor.GENERIC_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(BuildingPhysicsPackage.Literals.CONSTRUCTION_CATEGORY__MOUNTINGS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ConstructionCategory.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ConstructionCategory"));
+	}
+
+	/**
+	 * <!-- 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 = ((ConstructionCategory) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_ConstructionCategory_type")
+				: getString("_UI_ConstructionCategory_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ConstructionCategory.class)) {
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__MOUNTINGS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add(createChildParameter(BuildingPhysicsPackage.Literals.CONSTRUCTION_CATEGORY__MOUNTINGS,
+				BuildingPhysicsFactory.eINSTANCE.createMounting()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return BuildingPhysicsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/LayerItemProvider.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/LayerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a01650ff343e466c7c9a7d6ca44a6a10d9288a61
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/LayerItemProvider.java
@@ -0,0 +1,171 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics.provider;
+
+import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
+import de.hftstuttgart.buildingphysics.Layer;
+
+import de.hftstuttgart.cityunits.model.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.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.buildingphysics.Layer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerItemProvider 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 LayerItemProvider(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);
+
+			addMaterialPropertyDescriptor(object);
+			addThicknessPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Material feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaterialPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Layer_material_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Layer_material_feature", "_UI_Layer_type"),
+						BuildingPhysicsPackage.Literals.LAYER__MATERIAL, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Thickness feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addThicknessPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Layer_thickness_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Layer_thickness_feature",
+								"_UI_Layer_type"),
+						BuildingPhysicsPackage.Literals.LAYER__THICKNESS, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Layer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Layer"));
+	}
+
+	/**
+	 * <!-- 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 = ((Layer) object).getThickness();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_Layer_type")
+				: getString("_UI_Layer_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Layer.class)) {
+		case BuildingPhysicsPackage.LAYER__THICKNESS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return BuildingPhysicsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCatalogItemProvider.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCatalogItemProvider.java
index bda4726c659a50393bd7576941d8a4758f151ccb..b3b111217617c75c6bed94889d49aded8984a0a8 100644
--- a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCatalogItemProvider.java
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCatalogItemProvider.java
@@ -62,6 +62,7 @@ public class MaterialCatalogItemProvider extends CatalogItemProvider {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(BuildingPhysicsPackage.Literals.MATERIAL_CATALOG__MATERIAL_CATEGORIES);
+			childrenFeatures.add(BuildingPhysicsPackage.Literals.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES);
 		}
 		return childrenFeatures;
 	}
@@ -126,6 +127,7 @@ public class MaterialCatalogItemProvider extends CatalogItemProvider {
 
 		switch (notification.getFeatureID(MaterialCatalog.class)) {
 		case BuildingPhysicsPackage.MATERIAL_CATALOG__MATERIAL_CATEGORIES:
+		case BuildingPhysicsPackage.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES:
 			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 			return;
 		}
@@ -146,6 +148,10 @@ public class MaterialCatalogItemProvider extends CatalogItemProvider {
 		newChildDescriptors
 				.add(createChildParameter(BuildingPhysicsPackage.Literals.MATERIAL_CATALOG__MATERIAL_CATEGORIES,
 						BuildingPhysicsFactory.eINSTANCE.createMaterialCategory()));
+
+		newChildDescriptors
+				.add(createChildParameter(BuildingPhysicsPackage.Literals.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES,
+						BuildingPhysicsFactory.eINSTANCE.createConstructionCategory()));
 	}
 
 }
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCategoryItemProvider.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCategoryItemProvider.java
index efe8408724be945fcd792e40727c4e2a7a7b8aa4..b6e1711981c7ddc1f8dc27224fdcca5abad581ef 100644
--- a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCategoryItemProvider.java
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialCategoryItemProvider.java
@@ -89,7 +89,7 @@ public class MaterialCategoryItemProvider extends ItemProviderAdapter implements
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(BuildingPhysicsPackage.Literals.MATERIAL_CATEGORY__MATERIAL);
+			childrenFeatures.add(BuildingPhysicsPackage.Literals.MATERIAL_CATEGORY__MATERIALS);
 		}
 		return childrenFeatures;
 	}
@@ -156,7 +156,7 @@ public class MaterialCategoryItemProvider extends ItemProviderAdapter implements
 		case BuildingPhysicsPackage.MATERIAL_CATEGORY__NAME:
 			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 			return;
-		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIAL:
+		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIALS:
 			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 			return;
 		}
@@ -174,7 +174,7 @@ public class MaterialCategoryItemProvider extends ItemProviderAdapter implements
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors.add(createChildParameter(BuildingPhysicsPackage.Literals.MATERIAL_CATEGORY__MATERIAL,
+		newChildDescriptors.add(createChildParameter(BuildingPhysicsPackage.Literals.MATERIAL_CATEGORY__MATERIALS,
 				BuildingPhysicsFactory.eINSTANCE.createMaterial()));
 	}
 
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialItemProvider.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialItemProvider.java
index e043a3fbc009bb082f2926e0e9bbc2a5dbdcf25a..c53f0deb4771ca4ad3fa6460d5d3de2737a91cec 100644
--- a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialItemProvider.java
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MaterialItemProvider.java
@@ -53,7 +53,7 @@ public class MaterialItemProvider extends ItemProviderAdapter implements IEditin
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
-			addIdPropertyDescriptor(object);
+			addMaterialIdPropertyDescriptor(object);
 			addNamePropertyDescriptor(object);
 			addDensityPropertyDescriptor(object);
 			addHeatCapacityPropertyDescriptor(object);
@@ -69,18 +69,19 @@ public class MaterialItemProvider extends ItemProviderAdapter implements IEditin
 	}
 
 	/**
-	 * This adds a property descriptor for the Id feature.
+	 * This adds a property descriptor for the Material Id feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addIdPropertyDescriptor(Object object) {
+	protected void addMaterialIdPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_Material_id_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_Material_id_feature", "_UI_Material_type"),
-						BuildingPhysicsPackage.Literals.MATERIAL__ID, true, false, false,
-						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+						getResourceLocator(), getString("_UI_Material_materialId_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Material_materialId_feature",
+								"_UI_Material_type"),
+						BuildingPhysicsPackage.Literals.MATERIAL__MATERIAL_ID, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
 	}
 
 	/**
@@ -289,7 +290,7 @@ public class MaterialItemProvider extends ItemProviderAdapter implements IEditin
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(Material.class)) {
-		case BuildingPhysicsPackage.MATERIAL__ID:
+		case BuildingPhysicsPackage.MATERIAL__MATERIAL_ID:
 		case BuildingPhysicsPackage.MATERIAL__NAME:
 		case BuildingPhysicsPackage.MATERIAL__DENSITY:
 		case BuildingPhysicsPackage.MATERIAL__HEAT_CAPACITY:
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MountingItemProvider.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MountingItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e94f7b88f95a41d3f0918fc7d178294bc6364adf
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/MountingItemProvider.java
@@ -0,0 +1,210 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics.provider;
+
+import de.hftstuttgart.buildingphysics.BuildingPhysicsFactory;
+import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
+import de.hftstuttgart.buildingphysics.Mounting;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.buildingphysics.Mounting} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MountingItemProvider 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 MountingItemProvider(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);
+
+			addMountingIdPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Mounting Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMountingIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Mounting_mountingId_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Mounting_mountingId_feature",
+								"_UI_Mounting_type"),
+						BuildingPhysicsPackage.Literals.MOUNTING__MOUNTING_ID, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Mounting_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Mounting_name_feature",
+								"_UI_Mounting_type"),
+						BuildingPhysicsPackage.Literals.MOUNTING__NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_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(BuildingPhysicsPackage.Literals.MOUNTING__LAYERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Mounting.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Mounting"));
+	}
+
+	/**
+	 * <!-- 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 = ((Mounting) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Mounting_type")
+				: getString("_UI_Mounting_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Mounting.class)) {
+		case BuildingPhysicsPackage.MOUNTING__MOUNTING_ID:
+		case BuildingPhysicsPackage.MOUNTING__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case BuildingPhysicsPackage.MOUNTING__LAYERS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add(createChildParameter(BuildingPhysicsPackage.Literals.MOUNTING__LAYERS,
+				BuildingPhysicsFactory.eINSTANCE.createLayer()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return BuildingPhysicsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/WindowTypeItemProvider.java b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/WindowTypeItemProvider.java
index ddd77dcffc68e37bc495384282763c96a1886c69..9b6ebdf02b69bc2b0428e4bcc9c2ca48d776cfa5 100644
--- a/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/WindowTypeItemProvider.java
+++ b/de.hftstuttgart.buildingphysics.edit/src/de/hftstuttgart/buildingphysics/provider/WindowTypeItemProvider.java
@@ -53,7 +53,7 @@ public class WindowTypeItemProvider extends ItemProviderAdapter implements IEdit
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
-			addIdPropertyDescriptor(object);
+			addWindowTypeIdPropertyDescriptor(object);
 			addNamePropertyDescriptor(object);
 			addUValuePropertyDescriptor(object);
 			addGValuePropertyDescriptor(object);
@@ -70,19 +70,19 @@ public class WindowTypeItemProvider extends ItemProviderAdapter implements IEdit
 	}
 
 	/**
-	 * This adds a property descriptor for the Id feature.
+	 * This adds a property descriptor for the Window Type Id feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addIdPropertyDescriptor(Object object) {
+	protected void addWindowTypeIdPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_WindowType_id_feature"),
-						getString("_UI_PropertyDescriptor_description", "_UI_WindowType_id_feature",
+						getResourceLocator(), getString("_UI_WindowType_windowTypeId_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_WindowType_windowTypeId_feature",
 								"_UI_WindowType_type"),
-						BuildingPhysicsPackage.Literals.WINDOW_TYPE__ID, true, false, false,
-						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+						BuildingPhysicsPackage.Literals.WINDOW_TYPE__WINDOW_TYPE_ID, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
 	}
 
 	/**
@@ -307,7 +307,7 @@ public class WindowTypeItemProvider extends ItemProviderAdapter implements IEdit
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(WindowType.class)) {
-		case BuildingPhysicsPackage.WINDOW_TYPE__ID:
+		case BuildingPhysicsPackage.WINDOW_TYPE__WINDOW_TYPE_ID:
 		case BuildingPhysicsPackage.WINDOW_TYPE__NAME:
 		case BuildingPhysicsPackage.WINDOW_TYPE__UVALUE:
 		case BuildingPhysicsPackage.WINDOW_TYPE__GVALUE:
diff --git a/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/Material.view b/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/Material.view
index 205cf1ad489bbff2a8c78786afb1925c5acf0192..542a74d44e2a13affcb438941a5c3407ebba05c4 100644
--- a/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/Material.view
+++ b/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/Material.view
@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <org.eclipse.emf.ecp.view.model:View 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:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1180" xmi:id="_bUohgK22Eeup29SeaUMpQQ" name="Material">
   <rootEClass href="http://www.hftstuttgart.de/buildingphysics#//Material"/>
-  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_bUpvoK22Eeup29SeaUMpQQ" name="Control id">
-    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_bUpvoa22Eeup29SeaUMpQQ">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//Material/id"/>
-    </domainModelReference>
-  </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_bUpvoq22Eeup29SeaUMpQQ" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_bUpvo622Eeup29SeaUMpQQ">
       <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//Material/name"/>
diff --git a/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/MaterialCategory.view b/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/MaterialCategory.view
index 89edca324e53b2497763c10572dc4195565bbfdf..ddff26cb999ccdd80155ce80fb1d38b6b8ba01b5 100644
--- a/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/MaterialCategory.view
+++ b/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/MaterialCategory.view
@@ -1,27 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <org.eclipse.emf.ecp.view.model:View 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:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1180" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_ZY8TECUNEeux0PTSTJn6xg" name="MaterialCategory">
   <rootEClass href="http://www.hftstuttgart.de/buildingphysics#//MaterialCategory"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_kT3mkLMKEeup29SeaUMpQQ" name="Control name">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_kT3mkbMKEeup29SeaUMpQQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//MaterialCategory/name"/>
+    </domainModelReference>
+  </children>
   <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_cQS6sCUNEeux0PTSTJn6xg" detailEditing="WithPanel">
-    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_6djXAKg0EeuFa-L9J4DlVg">
-      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Qi7ScK22Eeup29SeaUMpQQ">
-        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//Material/id"/>
-      </columnDomainModelReferences>
-      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Qi7Sca22Eeup29SeaUMpQQ">
-        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//Material/name"/>
-      </columnDomainModelReferences>
-      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Qi7Scq22Eeup29SeaUMpQQ">
-        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//Material/density"/>
-      </columnDomainModelReferences>
-      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Qi7Sc622Eeup29SeaUMpQQ">
-        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//Material/heatCapacity"/>
-      </columnDomainModelReferences>
-      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Qi7SdK22Eeup29SeaUMpQQ">
-        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//Material/conductivity"/>
-      </columnDomainModelReferences>
-      <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_6djXAag0EeuFa-L9J4DlVg">
-        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_6djXAqg0EeuFa-L9J4DlVg">
-          <domainModelEFeature xsi:type="ecore:EReference" href="http://www.hftstuttgart.de/buildingphysics#//MaterialCategory/material"/>
-        </domainModelReference>
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_off5gLMKEeup29SeaUMpQQ">
+      <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_off5gbMKEeup29SeaUMpQQ">
+        <domainModelEFeature xsi:type="ecore:EReference" href="http://www.hftstuttgart.de/buildingphysics#//MaterialCategory/materials"/>
       </domainModelReference>
     </domainModelReference>
   </children>
diff --git a/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/WindowType.view b/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/WindowType.view
index 2bff1d506f719d79226918b1dfe8f3cf20c53d8b..af7bb7482c446ecd580d16054e80accf95ee804a 100644
--- a/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/WindowType.view
+++ b/de.hftstuttgart.buildingphysics.viewmodel/viewmodels/WindowType.view
@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <org.eclipse.emf.ecp.view.model:View 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:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1180" xmi:id="_7hNMIK21Eeup29SeaUMpQQ" name="WindowType">
   <rootEClass href="http://www.hftstuttgart.de/buildingphysics#//WindowType"/>
-  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_7hPBUK21Eeup29SeaUMpQQ" name="Control id">
-    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_7hPBUa21Eeup29SeaUMpQQ">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//WindowType/id"/>
-    </domainModelReference>
-  </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_7hPBUq21Eeup29SeaUMpQQ" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_7hPBU621Eeup29SeaUMpQQ">
       <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.hftstuttgart.de/buildingphysics#//WindowType/name"/>
diff --git a/de.hftstuttgart.buildingphysics/model/buildingphysics.aird b/de.hftstuttgart.buildingphysics/model/buildingphysics.aird
index 2398d2e673abfab6498c8a5de80e5a6cf0a46dff..d3bdeceb07ed34fcd68dde81e0636d3b6c098705 100644
--- a/de.hftstuttgart.buildingphysics/model/buildingphysics.aird
+++ b/de.hftstuttgart.buildingphysics/model/buildingphysics.aird
@@ -8,7 +8,7 @@
     <semanticResources>http://www.hftstuttgart.de/buildingphysics</semanticResources>
     <ownedViews xmi:type="viewpoint:DView" uid="_nfHygB3ZEeuNsK3dZmTkbQ">
       <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="_JKPtIZUqEeudooziRGqkJA" name="Buildingphysics Class Diagram" repPath="#_JKN38JUqEeudooziRGqkJA" changeId="a9fe10ad-9b4f-47c9-9002-bae035c33af2">
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_JKPtIZUqEeudooziRGqkJA" name="Buildingphysics Class Diagram" repPath="#_JKN38JUqEeudooziRGqkJA" changeId="9cce401e-c8d9-4ef3-80ab-ea9e537bc120">
         <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="buildingphysics.ecore#/"/>
       </ownedRepresentationDescriptors>
@@ -28,7 +28,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_J2yDA5UqEeudooziRGqkJA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_J2xb8ZUqEeudooziRGqkJA" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2xb8pUqEeudooziRGqkJA" x="248" y="560"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2xb8pUqEeudooziRGqkJA" x="180" y="768"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_J2yDBJUqEeudooziRGqkJA" type="2003" element="_J2lOsJUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J2yDB5UqEeudooziRGqkJA" type="5007"/>
@@ -85,7 +85,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_J2yqEpUqEeudooziRGqkJA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_J2yDBZUqEeudooziRGqkJA" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yDBpUqEeudooziRGqkJA" x="-4" y="28"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yDBpUqEeudooziRGqkJA" x="20" y="20"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_J2yqE5UqEeudooziRGqkJA" type="2003" element="_J2l1wJUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J2yqFpUqEeudooziRGqkJA" type="5007"/>
@@ -106,7 +106,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_J2yqGZUqEeudooziRGqkJA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_J2yqFJUqEeudooziRGqkJA" fontName=".AppleSystemUIFont" fontHeight="8" italic="true"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yqFZUqEeudooziRGqkJA" x="241" y="192"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yqFZUqEeudooziRGqkJA" x="193" y="488"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_J2yqGpUqEeudooziRGqkJA" type="2003" element="_J2mc0JUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J2yqHZUqEeudooziRGqkJA" type="5007"/>
@@ -115,7 +115,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_J2yqIJUqEeudooziRGqkJA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_J2yqG5UqEeudooziRGqkJA" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yqHJUqEeudooziRGqkJA" x="124" y="376"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yqHJUqEeudooziRGqkJA" x="76" y="628" height="59"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_J2yqIZUqEeudooziRGqkJA" type="2003" element="_J2mc05UqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J2zRIJUqEeudooziRGqkJA" type="5007"/>
@@ -124,7 +124,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_J2zRI5UqEeudooziRGqkJA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_J2yqIpUqEeudooziRGqkJA" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yqI5UqEeudooziRGqkJA" x="312" y="368"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2yqI5UqEeudooziRGqkJA" x="297" y="628" height="59"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_J2zRJJUqEeudooziRGqkJA" type="2003" element="_J2nD4JUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J2zRJ5UqEeudooziRGqkJA" type="5007"/>
@@ -137,7 +137,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_J2zRKpUqEeudooziRGqkJA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_J2zRJZUqEeudooziRGqkJA" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2zRJpUqEeudooziRGqkJA" x="568" y="352"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2zRJpUqEeudooziRGqkJA" x="414" y="500" height="75"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_J2zRK5UqEeudooziRGqkJA" type="2003" element="_J2nD45UqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J2zRLpUqEeudooziRGqkJA" type="5007"/>
@@ -190,87 +190,130 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_J2z4MpUqEeudooziRGqkJA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_J2zRLJUqEeudooziRGqkJA" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2zRLZUqEeudooziRGqkJA" x="488" y="28"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J2zRLZUqEeudooziRGqkJA" x="344" y="20"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_jAPIkLCmEeup29SeaUMpQQ" type="2003" element="_i_5KU7CmEeup29SeaUMpQQ">
+          <children xmi:type="notation:Node" xmi:id="_jAQWsLCmEeup29SeaUMpQQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_jAQWsbCmEeup29SeaUMpQQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_jASL4LCmEeup29SeaUMpQQ" type="3010" element="_jAHMwrCmEeup29SeaUMpQQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_jASL4bCmEeup29SeaUMpQQ" fontName=".AppleSystemUIFont" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_jASL4rCmEeup29SeaUMpQQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_jAQWsrCmEeup29SeaUMpQQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_jAQWs7CmEeup29SeaUMpQQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_jAPIkbCmEeup29SeaUMpQQ" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAPIkrCmEeup29SeaUMpQQ" x="580" y="500" height="75"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_jAQ9wLCmEeup29SeaUMpQQ" type="2003" element="_i_5xYrCmEeup29SeaUMpQQ">
+          <children xmi:type="notation:Node" xmi:id="_jARk0LCmEeup29SeaUMpQQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_jARk0bCmEeup29SeaUMpQQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_jASL47CmEeup29SeaUMpQQ" type="3010" element="_jAHz0LCmEeup29SeaUMpQQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_jASL5LCmEeup29SeaUMpQQ" fontName=".AppleSystemUIFont" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_jASL5bCmEeup29SeaUMpQQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_jARk0rCmEeup29SeaUMpQQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_jARk07CmEeup29SeaUMpQQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_jAQ9wbCmEeup29SeaUMpQQ" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAQ9wrCmEeup29SeaUMpQQ" x="555" y="268" height="60"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_jARk1LCmEeup29SeaUMpQQ" type="2003" element="_i_7mkbCmEeup29SeaUMpQQ">
+          <children xmi:type="notation:Node" xmi:id="_jARk17CmEeup29SeaUMpQQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_jARk2LCmEeup29SeaUMpQQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_jASy8LCmEeup29SeaUMpQQ" type="3010" element="_jAHz0rCmEeup29SeaUMpQQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_jASy8bCmEeup29SeaUMpQQ" fontName=".AppleSystemUIFont" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_jASy8rCmEeup29SeaUMpQQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_jASy87CmEeup29SeaUMpQQ" type="3010" element="_jAIa4bCmEeup29SeaUMpQQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_jASy9LCmEeup29SeaUMpQQ" fontName=".AppleSystemUIFont" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_jASy9bCmEeup29SeaUMpQQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_jARk2bCmEeup29SeaUMpQQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_jARk2rCmEeup29SeaUMpQQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_jARk1bCmEeup29SeaUMpQQ" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jARk1rCmEeup29SeaUMpQQ" x="580" y="372" height="79"/>
         </children>
         <styles xmi:type="notation:DiagramStyle" xmi:id="_JKVzwpUqEeudooziRGqkJA"/>
         <edges xmi:type="notation:Edge" xmi:id="_J22UcJUqEeudooziRGqkJA" type="4001" element="_J2uYoJUqEeudooziRGqkJA" source="_J2xb8JUqEeudooziRGqkJA" target="_J2yqGpUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J227gJUqEeudooziRGqkJA" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J227gZUqEeudooziRGqkJA" x="30" y="-10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J227gZUqEeudooziRGqkJA" x="22" y="-10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J227gpUqEeudooziRGqkJA" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J227g5UqEeudooziRGqkJA" x="15" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J227g5UqEeudooziRGqkJA" x="-23" y="10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J23ikJUqEeudooziRGqkJA" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J23ikZUqEeudooziRGqkJA" x="-9" y="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J23ikZUqEeudooziRGqkJA" x="14" y="22"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_J22UcZUqEeudooziRGqkJA" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_J22UcpUqEeudooziRGqkJA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J22Uc5UqEeudooziRGqkJA" points="[0, 0, 124, 86]$[0, -55, 124, 31]$[-124, -55, 0, 31]$[-124, -86, 0, 0]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J22Uc5UqEeudooziRGqkJA" points="[-2, 0, 102, 42]$[-2, -48, 102, -6]$[-104, -48, 0, -6]$[-104, -83, 0, -41]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J24wsJUqEeudooziRGqkJA" id="(0.5084745762711864,0.0)"/>
-          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J24wsZUqEeudooziRGqkJA" id="(0.5084745762711864,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J24wsZUqEeudooziRGqkJA" id="(0.5084745762711864,1.719298245614035)"/>
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_J24wspUqEeudooziRGqkJA" type="4001" element="_J2uYqpUqEeudooziRGqkJA" source="_J2xb8JUqEeudooziRGqkJA" target="_J2yqIZUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J24wtpUqEeudooziRGqkJA" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J24wt5UqEeudooziRGqkJA" x="-13" y="-10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J24wt5UqEeudooziRGqkJA" x="27" y="-10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25XwJUqEeudooziRGqkJA" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25XwZUqEeudooziRGqkJA" x="24" y="7"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25XwZUqEeudooziRGqkJA" x="20" y="9"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25XwpUqEeudooziRGqkJA" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25Xw5UqEeudooziRGqkJA" x="-8" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25Xw5UqEeudooziRGqkJA" x="21" y="-85"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_J24ws5UqEeudooziRGqkJA" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_J24wtJUqEeudooziRGqkJA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J24wtZUqEeudooziRGqkJA" points="[0, 0, -64, 94]$[0, -55, -64, 39]$[64, -55, 0, 39]$[64, -94, 0, 0]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J24wtZUqEeudooziRGqkJA" points="[-2, 0, -119, 42]$[-2, -48, -119, -6]$[117, -48, 0, -6]$[117, -83, 0, -41]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25XxJUqEeudooziRGqkJA" id="(0.5084745762711864,0.0)"/>
-          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25XxZUqEeudooziRGqkJA" id="(0.5084745762711864,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25XxZUqEeudooziRGqkJA" id="(0.5084745762711864,1.719298245614035)"/>
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_J25XxpUqEeudooziRGqkJA" type="4001" element="_J2u_tpUqEeudooziRGqkJA" source="_J2yqGpUqEeudooziRGqkJA" target="_J2yDBJUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J25XypUqEeudooziRGqkJA" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25Xy5UqEeudooziRGqkJA" x="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25Xy5UqEeudooziRGqkJA" x="6"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25XzJUqEeudooziRGqkJA" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25XzZUqEeudooziRGqkJA" x="-8" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25XzZUqEeudooziRGqkJA" x="285" y="-48"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25XzpUqEeudooziRGqkJA" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25Xz5UqEeudooziRGqkJA" x="-10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25Xz5UqEeudooziRGqkJA" x="33"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_J25Xx5UqEeudooziRGqkJA" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_J25XyJUqEeudooziRGqkJA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J25XyZUqEeudooziRGqkJA" points="[-23, -49, 54, 238]$[-23, -176, 54, 111]"/>
-          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25X0JUqEeudooziRGqkJA" id="(0.5,0.5)"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J25XyZUqEeudooziRGqkJA" points="[-19, -49, -14, 498]$[-19, -436, -14, 111]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25X0JUqEeudooziRGqkJA" id="(0.5,0.8596491228070176)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25X0ZUqEeudooziRGqkJA" id="(0.5,0.5)"/>
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_J25X0pUqEeudooziRGqkJA" type="4001" element="_J2u_wJUqEeudooziRGqkJA" source="_J2yqIZUqEeudooziRGqkJA" target="_J2zRJJUqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J25X1pUqEeudooziRGqkJA" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25X15UqEeudooziRGqkJA" y="-10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25X15UqEeudooziRGqkJA" x="-15" y="1"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25X2JUqEeudooziRGqkJA" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25X2ZUqEeudooziRGqkJA" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25X2ZUqEeudooziRGqkJA" x="11" y="10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25X2pUqEeudooziRGqkJA" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25X25UqEeudooziRGqkJA" x="-67" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25X25UqEeudooziRGqkJA" x="8"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_J25X05UqEeudooziRGqkJA" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_J25X1JUqEeudooziRGqkJA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J25X1ZUqEeudooziRGqkJA" points="[58, 46, -198, -36]$[196, 46, -60, -36]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J25X1ZUqEeudooziRGqkJA" points="[58, 16, -59, 46]$[115, 16, -2, 46]$[115, -55, -2, -25]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25X3JUqEeudooziRGqkJA" id="(0.5084745762711864,0.0)"/>
-          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25X3ZUqEeudooziRGqkJA" id="(0.5084745762711864,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25X3ZUqEeudooziRGqkJA" id="(0.5084745762711864,1.3424657534246576)"/>
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_J25-0JUqEeudooziRGqkJA" type="4001" element="_J2vmw5UqEeudooziRGqkJA" source="_J2zRJJUqEeudooziRGqkJA" target="_J2zRK5UqEeudooziRGqkJA">
           <children xmi:type="notation:Node" xmi:id="_J25-1JUqEeudooziRGqkJA" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25-1ZUqEeudooziRGqkJA" x="-8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25-1ZUqEeudooziRGqkJA" x="33" y="9"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25-1pUqEeudooziRGqkJA" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25-15UqEeudooziRGqkJA" x="-15"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25-15UqEeudooziRGqkJA" x="192"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_J25-2JUqEeudooziRGqkJA" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25-2ZUqEeudooziRGqkJA" x="-22" y="2"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J25-2ZUqEeudooziRGqkJA" x="6" y="2"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_J25-0ZUqEeudooziRGqkJA" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_J25-0pUqEeudooziRGqkJA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J25-05UqEeudooziRGqkJA" points="[-11, -49, 18, 222]$[-11, -168, 18, 103]"/>
-          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25-2pUqEeudooziRGqkJA" id="(0.5,0.5)"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J25-05UqEeudooziRGqkJA" points="[3, -49, 22, 378]$[3, -324, 22, 103]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25-2pUqEeudooziRGqkJA" id="(0.5,0.6712328767123288)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J25-25UqEeudooziRGqkJA" id="(0.5,0.5)"/>
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_J25-3JUqEeudooziRGqkJA" type="4001" element="_J2vmypUqEeudooziRGqkJA" source="_J2yqGpUqEeudooziRGqkJA" target="_J2yqE5UqEeudooziRGqkJA">
@@ -305,6 +348,70 @@
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J26l5JUqEeudooziRGqkJA" id="(0.5084745762711864,0.0)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J26l5ZUqEeudooziRGqkJA" id="(0.5084745762711864,1.0)"/>
         </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_jAUBELCmEeup29SeaUMpQQ" type="4001" element="_jAKQHLCmEeup29SeaUMpQQ" source="_J2yqIZUqEeudooziRGqkJA" target="_jAPIkLCmEeup29SeaUMpQQ">
+          <children xmi:type="notation:Node" xmi:id="_jAVPMLCmEeup29SeaUMpQQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAVPMbCmEeup29SeaUMpQQ" x="18" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAVPMrCmEeup29SeaUMpQQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAVPM7CmEeup29SeaUMpQQ" x="-18" y="9"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAV2QLCmEeup29SeaUMpQQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAV2QbCmEeup29SeaUMpQQ" x="34"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_jAUBEbCmEeup29SeaUMpQQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_jAUBErCmEeup29SeaUMpQQ" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jAUBE7CmEeup29SeaUMpQQ" points="[59, -5, -224, 123]$[282, -5, -1, 123]$[282, -104, -1, 24]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAaHsLCmEeup29SeaUMpQQ" id="(0.5,0.8596491228070176)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAaHsbCmEeup29SeaUMpQQ" id="(0.5,0.6712328767123288)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_jAaHsrCmEeup29SeaUMpQQ" type="4001" element="_jAK3JrCmEeup29SeaUMpQQ" source="_jAPIkLCmEeup29SeaUMpQQ" target="_jARk1LCmEeup29SeaUMpQQ">
+          <children xmi:type="notation:Node" xmi:id="_jAaHtrCmEeup29SeaUMpQQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAaHt7CmEeup29SeaUMpQQ" x="-9" y="5"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAaHuLCmEeup29SeaUMpQQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAaHubCmEeup29SeaUMpQQ" x="9"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAaHurCmEeup29SeaUMpQQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAaHu7CmEeup29SeaUMpQQ" x="-15"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_jAaHs7CmEeup29SeaUMpQQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_jAaHtLCmEeup29SeaUMpQQ" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jAaHtbCmEeup29SeaUMpQQ" points="[0, -49, 0, 79]$[0, -100, 0, 28]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAauwLCmEeup29SeaUMpQQ" id="(0.5,0.6712328767123288)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAauwbCmEeup29SeaUMpQQ" id="(0.5,0.6363636363636364)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_jAauwrCmEeup29SeaUMpQQ" type="4001" element="_jALeNrCmEeup29SeaUMpQQ" source="_jAQ9wLCmEeup29SeaUMpQQ" target="_J2zRK5UqEeudooziRGqkJA">
+          <children xmi:type="notation:Node" xmi:id="_jAauxrCmEeup29SeaUMpQQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAaux7CmEeup29SeaUMpQQ" x="-30" y="31"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAauyLCmEeup29SeaUMpQQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAauybCmEeup29SeaUMpQQ" x="81"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAauyrCmEeup29SeaUMpQQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAauy7CmEeup29SeaUMpQQ" x="-57" y="-1"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_jAauw7CmEeup29SeaUMpQQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_jAauxLCmEeup29SeaUMpQQ" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jAauxbCmEeup29SeaUMpQQ" points="[0, -9, 184, 146]$[0, -154, 184, 1]$[-74, -154, 110, 1]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAauzLCmEeup29SeaUMpQQ" id="(0.5,0.15517241379310345)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAauzbCmEeup29SeaUMpQQ" id="(0.5,0.5)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_jAbV0LCmEeup29SeaUMpQQ" type="4001" element="_jAMFQLCmEeup29SeaUMpQQ" source="_jARk1LCmEeup29SeaUMpQQ" target="_jAQ9wLCmEeup29SeaUMpQQ">
+          <children xmi:type="notation:Node" xmi:id="_jAbV1LCmEeup29SeaUMpQQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAbV1bCmEeup29SeaUMpQQ" y="1"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAbV1rCmEeup29SeaUMpQQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAbV17CmEeup29SeaUMpQQ" x="2" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jAbV2LCmEeup29SeaUMpQQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAbV2bCmEeup29SeaUMpQQ" x="-1" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_jAbV0bCmEeup29SeaUMpQQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_jAbV0rCmEeup29SeaUMpQQ" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jAbV07CmEeup29SeaUMpQQ" points="[-1, -49, 0, 95]$[-1, -95, 0, 49]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAbV2rCmEeup29SeaUMpQQ" id="(0.5,0.6363636363636364)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jAbV27CmEeup29SeaUMpQQ" id="(0.5,0.15517241379310345)"/>
+        </edges>
       </data>
     </ownedAnnotationEntries>
     <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_JKdIgJUqEeudooziRGqkJA" source="DANNOTATION_CUSTOMIZATION_KEY">
@@ -334,6 +441,16 @@
             <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
           </endLabelStyleDescription>
         </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_jALeN7CmEeup29SeaUMpQQ" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_jALeOLCmEeup29SeaUMpQQ" showIcon="false" labelExpression="service:render">
+            <labelFormat>bold</labelFormat>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </centerLabelStyleDescription>
+          <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_jALeObCmEeup29SeaUMpQQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
       </data>
     </ownedAnnotationEntries>
     <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_J2jZgJUqEeudooziRGqkJA" name="BuildingPhysicsCatalog" tooltipText="" outgoingEdges="_J2uYoJUqEeudooziRGqkJA _J2uYqpUqEeudooziRGqkJA" width="12" height="10">
@@ -509,7 +626,7 @@
       </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%20EClass']"/>
     </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_J2mc05UqEeudooziRGqkJA" name="MaterialCatalog" tooltipText="" outgoingEdges="_J2u_wJUqEeudooziRGqkJA _J2wN1pUqEeudooziRGqkJA" incomingEdges="_J2uYqpUqEeudooziRGqkJA" width="12" height="10">
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_J2mc05UqEeudooziRGqkJA" name="MaterialCatalog" tooltipText="" outgoingEdges="_J2u_wJUqEeudooziRGqkJA _J2wN1pUqEeudooziRGqkJA _jAKQHLCmEeup29SeaUMpQQ" incomingEdges="_J2uYqpUqEeudooziRGqkJA" width="12" height="10">
       <target xmi:type="ecore:EClass" href="buildingphysics.ecore#//MaterialCatalog"/>
       <semanticElements xmi:type="ecore:EClass" href="buildingphysics.ecore#//MaterialCatalog"/>
       <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -539,7 +656,7 @@
         <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%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
       </ownedElements>
     </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_J2nD45UqEeudooziRGqkJA" name="Material" tooltipText="" incomingEdges="_J2vmw5UqEeudooziRGqkJA" width="12" height="10">
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_J2nD45UqEeudooziRGqkJA" name="Material" tooltipText="" incomingEdges="_J2vmw5UqEeudooziRGqkJA _jALeNrCmEeup29SeaUMpQQ" width="12" height="10">
       <target xmi:type="ecore:EClass" href="buildingphysics.ecore#//Material"/>
       <semanticElements xmi:type="ecore:EClass" href="buildingphysics.ecore#//Material"/>
       <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -692,9 +809,9 @@
       </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:DEdge" uid="_J2vmw5UqEeudooziRGqkJA" name="[0..*] material" sourceNode="_J2nD4JUqEeudooziRGqkJA" targetNode="_J2nD45UqEeudooziRGqkJA">
-      <target xmi:type="ecore:EReference" href="buildingphysics.ecore#//MaterialCategory/material"/>
-      <semanticElements xmi:type="ecore:EReference" href="buildingphysics.ecore#//MaterialCategory/material"/>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_J2vmw5UqEeudooziRGqkJA" name="[0..*] materials" sourceNode="_J2nD4JUqEeudooziRGqkJA" targetNode="_J2nD45UqEeudooziRGqkJA">
+      <target xmi:type="ecore:EReference" href="buildingphysics.ecore#//MaterialCategory/materials"/>
+      <semanticElements xmi:type="ecore:EReference" href="buildingphysics.ecore#//MaterialCategory/materials"/>
       <ownedStyle xmi:type="diagram:EdgeStyle" uid="_J2vmxJUqEeudooziRGqkJA" description="_J2u_t5UqEeudooziRGqkJA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
         <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_J2vmxpUqEeudooziRGqkJA" showIcon="false">
           <customFeatures>labelSize</customFeatures>
@@ -729,6 +846,126 @@
       </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%20ESupertypes']"/>
     </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_i_5KU7CmEeup29SeaUMpQQ" name="ConstructionCategory" tooltipText="" outgoingEdges="_jAK3JrCmEeup29SeaUMpQQ" incomingEdges="_jAKQHLCmEeup29SeaUMpQQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="buildingphysics.ecore#//ConstructionCategory"/>
+      <semanticElements xmi:type="ecore:EClass" href="buildingphysics.ecore#//ConstructionCategory"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_i_5xYLCmEeup29SeaUMpQQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <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%20EClass']/@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%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_jAHMwrCmEeup29SeaUMpQQ" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//ConstructionCategory/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//ConstructionCategory/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_jAHMw7CmEeup29SeaUMpQQ" labelAlignment="LEFT" description="_J2qHNJUqEeudooziRGqkJA">
+          <labelFormat>bold</labelFormat>
+        </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%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_i_5xYrCmEeup29SeaUMpQQ" name="Layer" tooltipText="" outgoingEdges="_jALeNrCmEeup29SeaUMpQQ" incomingEdges="_jAMFQLCmEeup29SeaUMpQQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="buildingphysics.ecore#//Layer"/>
+      <semanticElements xmi:type="ecore:EClass" href="buildingphysics.ecore#//Layer"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_i_6YcLCmEeup29SeaUMpQQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <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%20EClass']/@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%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_jAHz0LCmEeup29SeaUMpQQ" name="thickness : QuantityDouble = cm" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//Layer/thickness"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//Layer/thickness"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_jAHz0bCmEeup29SeaUMpQQ" labelAlignment="LEFT" description="_J2qHNJUqEeudooziRGqkJA">
+          <labelFormat>bold</labelFormat>
+        </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%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_i_7mkbCmEeup29SeaUMpQQ" name="Mounting" tooltipText="" outgoingEdges="_jAMFQLCmEeup29SeaUMpQQ" incomingEdges="_jAK3JrCmEeup29SeaUMpQQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="buildingphysics.ecore#//Mounting"/>
+      <semanticElements xmi:type="ecore:EClass" href="buildingphysics.ecore#//Mounting"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_i_7mkrCmEeup29SeaUMpQQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <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%20EClass']/@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%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_jAHz0rCmEeup29SeaUMpQQ" name="id : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//Mounting/id"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//Mounting/id"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_jAIa4LCmEeup29SeaUMpQQ" labelAlignment="LEFT" description="_J2qHNJUqEeudooziRGqkJA">
+          <labelFormat>bold</labelFormat>
+        </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%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_jAIa4bCmEeup29SeaUMpQQ" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//Mounting/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="buildingphysics.ecore#//Mounting/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_jAIa4rCmEeup29SeaUMpQQ" labelAlignment="LEFT" description="_J2qHNJUqEeudooziRGqkJA">
+          <labelFormat>bold</labelFormat>
+        </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%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_jAKQHLCmEeup29SeaUMpQQ" name="[1..*] constructionCategories" sourceNode="_J2mc05UqEeudooziRGqkJA" targetNode="_i_5KU7CmEeup29SeaUMpQQ">
+      <target xmi:type="ecore:EReference" href="buildingphysics.ecore#//MaterialCatalog/constructionCategories"/>
+      <semanticElements xmi:type="ecore:EReference" href="buildingphysics.ecore#//MaterialCatalog/constructionCategories"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jAK3ILCmEeup29SeaUMpQQ" description="_J2uYoZUqEeudooziRGqkJA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jAK3IrCmEeup29SeaUMpQQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jAK3IbCmEeup29SeaUMpQQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </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:DEdge" uid="_jAK3JrCmEeup29SeaUMpQQ" name="[0..*] mountings" sourceNode="_i_5KU7CmEeup29SeaUMpQQ" targetNode="_i_7mkbCmEeup29SeaUMpQQ">
+      <target xmi:type="ecore:EReference" href="buildingphysics.ecore#//ConstructionCategory/mountings"/>
+      <semanticElements xmi:type="ecore:EReference" href="buildingphysics.ecore#//ConstructionCategory/mountings"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jALeMLCmEeup29SeaUMpQQ" description="_J2u_t5UqEeudooziRGqkJA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jALeMrCmEeup29SeaUMpQQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jALeMbCmEeup29SeaUMpQQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </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:DEdge" uid="_jALeNrCmEeup29SeaUMpQQ" name="[1..1] material" sourceNode="_i_5xYrCmEeup29SeaUMpQQ" targetNode="_J2nD45UqEeudooziRGqkJA">
+      <target xmi:type="ecore:EReference" href="buildingphysics.ecore#//Layer/material"/>
+      <semanticElements xmi:type="ecore:EReference" href="buildingphysics.ecore#//Layer/material"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jALeOrCmEeup29SeaUMpQQ" description="_jALeN7CmEeup29SeaUMpQQ" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jALePLCmEeup29SeaUMpQQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jALeO7CmEeup29SeaUMpQQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </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:DEdge" uid="_jAMFQLCmEeup29SeaUMpQQ" name="[1..*] layers" sourceNode="_i_7mkbCmEeup29SeaUMpQQ" targetNode="_i_5xYrCmEeup29SeaUMpQQ">
+      <target xmi:type="ecore:EReference" href="buildingphysics.ecore#//Mounting/layers"/>
+      <semanticElements xmi:type="ecore:EReference" href="buildingphysics.ecore#//Mounting/layers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jAMFQbCmEeup29SeaUMpQQ" description="_J2uYoZUqEeudooziRGqkJA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jAMFQ7CmEeup29SeaUMpQQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jAMFQrCmEeup29SeaUMpQQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </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>
     <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
     <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_JKOfAJUqEeudooziRGqkJA"/>
     <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
diff --git a/de.hftstuttgart.buildingphysics/model/buildingphysics.ecore b/de.hftstuttgart.buildingphysics/model/buildingphysics.ecore
index c40bc33ffd43d21c90ae2596ec6d6b4c20cb6bde..9af4d307d5fce1abdefe0f596337acc8460a86fb 100644
--- a/de.hftstuttgart.buildingphysics/model/buildingphysics.ecore
+++ b/de.hftstuttgart.buildingphysics/model/buildingphysics.ecore
@@ -11,8 +11,8 @@
         eType="#//MaterialCatalog" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="WindowType">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
-        iD="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="windowTypeId" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="uValue" lowerBound="1"
         eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
@@ -60,15 +60,17 @@
   <eClassifiers xsi:type="ecore:EClass" name="MaterialCatalog" eSuperTypes="#//Catalog">
     <eStructuralFeatures xsi:type="ecore:EReference" name="materialCategories" upperBound="-1"
         eType="#//MaterialCategory" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="constructionCategories"
+        lowerBound="1" upperBound="-1" eType="#//ConstructionCategory" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="MaterialCategory">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="material" upperBound="-1"
+    <eStructuralFeatures xsi:type="ecore:EReference" name="materials" upperBound="-1"
         eType="#//Material" containment="true"/>
     <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:EClass" name="Material">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"
-        iD="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="materialId" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="density" lowerBound="1"
         eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
@@ -96,4 +98,23 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="disposalDescription" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ConstructionCategory">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="mountings" upperBound="-1"
+        eType="#//Mounting" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Mounting">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mountingId" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layers" lowerBound="1"
+        upperBound="-1" eType="#//Layer" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Layer">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="material" unique="false"
+        lowerBound="1" eType="#//Material" eKeys="#//Material/materialId"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thickness" lowerBound="1"
+        eType="ecore:EDataType ../../de.hftstuttgart.cityunits.model/model/Quantities.ecore#//QuantityDouble"
+        defaultValueLiteral="m"/>
+  </eClassifiers>
 </ecore:EPackage>
diff --git a/de.hftstuttgart.buildingphysics/model/buildingphysics.genmodel b/de.hftstuttgart.buildingphysics/model/buildingphysics.genmodel
index 9506117ddc4c929fedd13d213387e87df86458f8..72a45d5f5a0f16d114e00fb1d4451f485953265f 100644
--- a/de.hftstuttgart.buildingphysics/model/buildingphysics.genmodel
+++ b/de.hftstuttgart.buildingphysics/model/buildingphysics.genmodel
@@ -17,7 +17,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//BuildingPhysicsCatalog/materialCatalog"/>
     </genClasses>
     <genClasses ecoreClass="buildingphysics.ecore#//WindowType">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//WindowType/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//WindowType/windowTypeId"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//WindowType/name"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//WindowType/uValue"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//WindowType/gValue"/>
@@ -40,13 +40,14 @@
     </genClasses>
     <genClasses ecoreClass="buildingphysics.ecore#//MaterialCatalog">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//MaterialCatalog/materialCategories"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//MaterialCatalog/constructionCategories"/>
     </genClasses>
     <genClasses ecoreClass="buildingphysics.ecore#//MaterialCategory">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//MaterialCategory/material"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//MaterialCategory/materials"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//MaterialCategory/name"/>
     </genClasses>
     <genClasses ecoreClass="buildingphysics.ecore#//Material">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Material/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Material/materialId"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Material/name"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Material/density"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Material/heatCapacity"/>
@@ -58,5 +59,19 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Material/disposalCarbon"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Material/disposalDescription"/>
     </genClasses>
+    <genClasses ecoreClass="buildingphysics.ecore#//ConstructionCategory">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//ConstructionCategory/name"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//ConstructionCategory/mountings"/>
+    </genClasses>
+    <genClasses ecoreClass="buildingphysics.ecore#//Mounting">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Mounting/mountingId"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Mounting/name"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//Mounting/layers"/>
+    </genClasses>
+    <genClasses ecoreClass="buildingphysics.ecore#//Layer">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference buildingphysics.ecore#//Layer/material"
+          suppressedGetVisibility="false" suppressedSetVisibility="false"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute buildingphysics.ecore#//Layer/thickness"/>
+    </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsFactory.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsFactory.java
index 2c9a779521f37edc8bc1a276759e04205e9ff624..72f24c573a5d61d13a678c65e17d235165a4a281 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsFactory.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsFactory.java
@@ -75,6 +75,33 @@ public interface BuildingPhysicsFactory extends EFactory {
 	 */
 	Material createMaterial();
 
+	/**
+	 * Returns a new object of class '<em>Construction Category</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Construction Category</em>'.
+	 * @generated
+	 */
+	ConstructionCategory createConstructionCategory();
+
+	/**
+	 * Returns a new object of class '<em>Mounting</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Mounting</em>'.
+	 * @generated
+	 */
+	Mounting createMounting();
+
+	/**
+	 * Returns a new object of class '<em>Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Layer</em>'.
+	 * @generated
+	 */
+	Layer createLayer();
+
 	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsPackage.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsPackage.java
index 208f3ea72e01e55e3e6327980003a86b694581bf..876950b5f6683cd0347d8b3da0233bd69c45644b 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsPackage.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/BuildingPhysicsPackage.java
@@ -122,13 +122,13 @@ public interface BuildingPhysicsPackage extends EPackage {
 	int WINDOW_TYPE = 1;
 
 	/**
-	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * The feature id for the '<em><b>Window Type Id</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int WINDOW_TYPE__ID = 0;
+	int WINDOW_TYPE__WINDOW_TYPE_ID = 0;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -412,6 +412,15 @@ public interface BuildingPhysicsPackage extends EPackage {
 	 */
 	int MATERIAL_CATALOG__MATERIAL_CATEGORIES = CATALOG_FEATURE_COUNT + 0;
 
+	/**
+	 * The feature id for the '<em><b>Construction Categories</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES = CATALOG_FEATURE_COUNT + 1;
+
 	/**
 	 * The number of structural features of the '<em>Material Catalog</em>' class.
 	 * <!-- begin-user-doc -->
@@ -419,7 +428,7 @@ public interface BuildingPhysicsPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int MATERIAL_CATALOG_FEATURE_COUNT = CATALOG_FEATURE_COUNT + 1;
+	int MATERIAL_CATALOG_FEATURE_COUNT = CATALOG_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of operations of the '<em>Material Catalog</em>' class.
@@ -441,13 +450,13 @@ public interface BuildingPhysicsPackage extends EPackage {
 	int MATERIAL_CATEGORY = 5;
 
 	/**
-	 * The feature id for the '<em><b>Material</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Materials</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int MATERIAL_CATEGORY__MATERIAL = 0;
+	int MATERIAL_CATEGORY__MATERIALS = 0;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -487,13 +496,13 @@ public interface BuildingPhysicsPackage extends EPackage {
 	int MATERIAL = 6;
 
 	/**
-	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * The feature id for the '<em><b>Material Id</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int MATERIAL__ID = 0;
+	int MATERIAL__MATERIAL_ID = 0;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -603,6 +612,153 @@ public interface BuildingPhysicsPackage extends EPackage {
 	 */
 	int MATERIAL_OPERATION_COUNT = 0;
 
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.buildingphysics.impl.ConstructionCategoryImpl <em>Construction Category</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.buildingphysics.impl.ConstructionCategoryImpl
+	 * @see de.hftstuttgart.buildingphysics.impl.BuildingPhysicsPackageImpl#getConstructionCategory()
+	 * @generated
+	 */
+	int CONSTRUCTION_CATEGORY = 7;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTRUCTION_CATEGORY__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Mountings</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTRUCTION_CATEGORY__MOUNTINGS = 1;
+
+	/**
+	 * The number of structural features of the '<em>Construction Category</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTRUCTION_CATEGORY_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Construction Category</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTRUCTION_CATEGORY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.buildingphysics.impl.MountingImpl <em>Mounting</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.buildingphysics.impl.MountingImpl
+	 * @see de.hftstuttgart.buildingphysics.impl.BuildingPhysicsPackageImpl#getMounting()
+	 * @generated
+	 */
+	int MOUNTING = 8;
+
+	/**
+	 * The feature id for the '<em><b>Mounting Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MOUNTING__MOUNTING_ID = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MOUNTING__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MOUNTING__LAYERS = 2;
+
+	/**
+	 * The number of structural features of the '<em>Mounting</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MOUNTING_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Mounting</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MOUNTING_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.buildingphysics.impl.LayerImpl <em>Layer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.buildingphysics.impl.LayerImpl
+	 * @see de.hftstuttgart.buildingphysics.impl.BuildingPhysicsPackageImpl#getLayer()
+	 * @generated
+	 */
+	int LAYER = 9;
+
+	/**
+	 * The feature id for the '<em><b>Material</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__MATERIAL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Thickness</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__THICKNESS = 1;
+
+	/**
+	 * The number of structural features of the '<em>Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATION_COUNT = 0;
+
 	/**
 	 * Returns the meta object for class '{@link de.hftstuttgart.buildingphysics.BuildingPhysicsCatalog <em>Catalog</em>}'.
 	 * <!-- begin-user-doc -->
@@ -657,15 +813,15 @@ public interface BuildingPhysicsPackage extends EPackage {
 	EClass getWindowType();
 
 	/**
-	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.WindowType#getId <em>Id</em>}'.
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.WindowType#getWindowTypeId <em>Window Type Id</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Id</em>'.
-	 * @see de.hftstuttgart.buildingphysics.WindowType#getId()
+	 * @return the meta object for the attribute '<em>Window Type Id</em>'.
+	 * @see de.hftstuttgart.buildingphysics.WindowType#getWindowTypeId()
 	 * @see #getWindowType()
 	 * @generated
 	 */
-	EAttribute getWindowType_Id();
+	EAttribute getWindowType_WindowTypeId();
 
 	/**
 	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.WindowType#getName <em>Name</em>}'.
@@ -873,6 +1029,17 @@ public interface BuildingPhysicsPackage extends EPackage {
 	 */
 	EReference getMaterialCatalog_MaterialCategories();
 
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.buildingphysics.MaterialCatalog#getConstructionCategories <em>Construction Categories</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Construction Categories</em>'.
+	 * @see de.hftstuttgart.buildingphysics.MaterialCatalog#getConstructionCategories()
+	 * @see #getMaterialCatalog()
+	 * @generated
+	 */
+	EReference getMaterialCatalog_ConstructionCategories();
+
 	/**
 	 * Returns the meta object for class '{@link de.hftstuttgart.buildingphysics.MaterialCategory <em>Material Category</em>}'.
 	 * <!-- begin-user-doc -->
@@ -884,15 +1051,15 @@ public interface BuildingPhysicsPackage extends EPackage {
 	EClass getMaterialCategory();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.buildingphysics.MaterialCategory#getMaterial <em>Material</em>}'.
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.buildingphysics.MaterialCategory#getMaterials <em>Materials</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Material</em>'.
-	 * @see de.hftstuttgart.buildingphysics.MaterialCategory#getMaterial()
+	 * @return the meta object for the containment reference list '<em>Materials</em>'.
+	 * @see de.hftstuttgart.buildingphysics.MaterialCategory#getMaterials()
 	 * @see #getMaterialCategory()
 	 * @generated
 	 */
-	EReference getMaterialCategory_Material();
+	EReference getMaterialCategory_Materials();
 
 	/**
 	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.MaterialCategory#getName <em>Name</em>}'.
@@ -916,15 +1083,15 @@ public interface BuildingPhysicsPackage extends EPackage {
 	EClass getMaterial();
 
 	/**
-	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.Material#getId <em>Id</em>}'.
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.Material#getMaterialId <em>Material Id</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Id</em>'.
-	 * @see de.hftstuttgart.buildingphysics.Material#getId()
+	 * @return the meta object for the attribute '<em>Material Id</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Material#getMaterialId()
 	 * @see #getMaterial()
 	 * @generated
 	 */
-	EAttribute getMaterial_Id();
+	EAttribute getMaterial_MaterialId();
 
 	/**
 	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.Material#getName <em>Name</em>}'.
@@ -1036,6 +1203,113 @@ public interface BuildingPhysicsPackage extends EPackage {
 	 */
 	EAttribute getMaterial_DisposalDescription();
 
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.buildingphysics.ConstructionCategory <em>Construction Category</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Construction Category</em>'.
+	 * @see de.hftstuttgart.buildingphysics.ConstructionCategory
+	 * @generated
+	 */
+	EClass getConstructionCategory();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.ConstructionCategory#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see de.hftstuttgart.buildingphysics.ConstructionCategory#getName()
+	 * @see #getConstructionCategory()
+	 * @generated
+	 */
+	EAttribute getConstructionCategory_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.buildingphysics.ConstructionCategory#getMountings <em>Mountings</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Mountings</em>'.
+	 * @see de.hftstuttgart.buildingphysics.ConstructionCategory#getMountings()
+	 * @see #getConstructionCategory()
+	 * @generated
+	 */
+	EReference getConstructionCategory_Mountings();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.buildingphysics.Mounting <em>Mounting</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Mounting</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Mounting
+	 * @generated
+	 */
+	EClass getMounting();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.Mounting#getMountingId <em>Mounting Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mounting Id</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Mounting#getMountingId()
+	 * @see #getMounting()
+	 * @generated
+	 */
+	EAttribute getMounting_MountingId();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.Mounting#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Mounting#getName()
+	 * @see #getMounting()
+	 * @generated
+	 */
+	EAttribute getMounting_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.buildingphysics.Mounting#getLayers <em>Layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Layers</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Mounting#getLayers()
+	 * @see #getMounting()
+	 * @generated
+	 */
+	EReference getMounting_Layers();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.buildingphysics.Layer <em>Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Layer</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Layer
+	 * @generated
+	 */
+	EClass getLayer();
+
+	/**
+	 * Returns the meta object for the reference '{@link de.hftstuttgart.buildingphysics.Layer#getMaterial <em>Material</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Material</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Layer#getMaterial()
+	 * @see #getLayer()
+	 * @generated
+	 */
+	EReference getLayer_Material();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.buildingphysics.Layer#getThickness <em>Thickness</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Thickness</em>'.
+	 * @see de.hftstuttgart.buildingphysics.Layer#getThickness()
+	 * @see #getLayer()
+	 * @generated
+	 */
+	EAttribute getLayer_Thickness();
+
 	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
@@ -1104,12 +1378,12 @@ public interface BuildingPhysicsPackage extends EPackage {
 		EClass WINDOW_TYPE = eINSTANCE.getWindowType();
 
 		/**
-		 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Window Type Id</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute WINDOW_TYPE__ID = eINSTANCE.getWindowType_Id();
+		EAttribute WINDOW_TYPE__WINDOW_TYPE_ID = eINSTANCE.getWindowType_WindowTypeId();
 
 		/**
 		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
@@ -1269,6 +1543,14 @@ public interface BuildingPhysicsPackage extends EPackage {
 		 */
 		EReference MATERIAL_CATALOG__MATERIAL_CATEGORIES = eINSTANCE.getMaterialCatalog_MaterialCategories();
 
+		/**
+		 * The meta object literal for the '<em><b>Construction Categories</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES = eINSTANCE.getMaterialCatalog_ConstructionCategories();
+
 		/**
 		 * The meta object literal for the '{@link de.hftstuttgart.buildingphysics.impl.MaterialCategoryImpl <em>Material Category</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -1280,12 +1562,12 @@ public interface BuildingPhysicsPackage extends EPackage {
 		EClass MATERIAL_CATEGORY = eINSTANCE.getMaterialCategory();
 
 		/**
-		 * The meta object literal for the '<em><b>Material</b></em>' containment reference list feature.
+		 * The meta object literal for the '<em><b>Materials</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference MATERIAL_CATEGORY__MATERIAL = eINSTANCE.getMaterialCategory_Material();
+		EReference MATERIAL_CATEGORY__MATERIALS = eINSTANCE.getMaterialCategory_Materials();
 
 		/**
 		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
@@ -1306,12 +1588,12 @@ public interface BuildingPhysicsPackage extends EPackage {
 		EClass MATERIAL = eINSTANCE.getMaterial();
 
 		/**
-		 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Material Id</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute MATERIAL__ID = eINSTANCE.getMaterial_Id();
+		EAttribute MATERIAL__MATERIAL_ID = eINSTANCE.getMaterial_MaterialId();
 
 		/**
 		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
@@ -1393,6 +1675,92 @@ public interface BuildingPhysicsPackage extends EPackage {
 		 */
 		EAttribute MATERIAL__DISPOSAL_DESCRIPTION = eINSTANCE.getMaterial_DisposalDescription();
 
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.buildingphysics.impl.ConstructionCategoryImpl <em>Construction Category</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.buildingphysics.impl.ConstructionCategoryImpl
+		 * @see de.hftstuttgart.buildingphysics.impl.BuildingPhysicsPackageImpl#getConstructionCategory()
+		 * @generated
+		 */
+		EClass CONSTRUCTION_CATEGORY = eINSTANCE.getConstructionCategory();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONSTRUCTION_CATEGORY__NAME = eINSTANCE.getConstructionCategory_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Mountings</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CONSTRUCTION_CATEGORY__MOUNTINGS = eINSTANCE.getConstructionCategory_Mountings();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.buildingphysics.impl.MountingImpl <em>Mounting</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.buildingphysics.impl.MountingImpl
+		 * @see de.hftstuttgart.buildingphysics.impl.BuildingPhysicsPackageImpl#getMounting()
+		 * @generated
+		 */
+		EClass MOUNTING = eINSTANCE.getMounting();
+
+		/**
+		 * The meta object literal for the '<em><b>Mounting Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MOUNTING__MOUNTING_ID = eINSTANCE.getMounting_MountingId();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MOUNTING__NAME = eINSTANCE.getMounting_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Layers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference MOUNTING__LAYERS = eINSTANCE.getMounting_Layers();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.buildingphysics.impl.LayerImpl <em>Layer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.buildingphysics.impl.LayerImpl
+		 * @see de.hftstuttgart.buildingphysics.impl.BuildingPhysicsPackageImpl#getLayer()
+		 * @generated
+		 */
+		EClass LAYER = eINSTANCE.getLayer();
+
+		/**
+		 * The meta object literal for the '<em><b>Material</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LAYER__MATERIAL = eINSTANCE.getLayer_Material();
+
+		/**
+		 * The meta object literal for the '<em><b>Thickness</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LAYER__THICKNESS = eINSTANCE.getLayer_Thickness();
+
 	}
 
 } //BuildingPhysicsPackage
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/ConstructionCategory.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/ConstructionCategory.java
new file mode 100644
index 0000000000000000000000000000000000000000..1843e8d7897c7016f10c2a7c347461df909cbfef
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/ConstructionCategory.java
@@ -0,0 +1,61 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Construction Category</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.buildingphysics.ConstructionCategory#getName <em>Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.ConstructionCategory#getMountings <em>Mountings</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getConstructionCategory()
+ * @model
+ * @generated
+ */
+public interface ConstructionCategory extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getConstructionCategory_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.ConstructionCategory#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Mountings</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.buildingphysics.Mounting}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mountings</em>' containment reference list.
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getConstructionCategory_Mountings()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Mounting> getMountings();
+
+} // ConstructionCategory
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Layer.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Layer.java
new file mode 100644
index 0000000000000000000000000000000000000000..c2dfc1bcadcd6b6fdbcebad0f6eff02f8ef3b2fa
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Layer.java
@@ -0,0 +1,72 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics;
+
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.buildingphysics.Layer#getMaterial <em>Material</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.Layer#getThickness <em>Thickness</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLayer()
+ * @model
+ * @generated
+ */
+public interface Layer extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Material</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Material</em>' reference.
+	 * @see #setMaterial(Material)
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLayer_Material()
+	 * @model keys="materialId" required="true"
+	 * @generated
+	 */
+	Material getMaterial();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.Layer#getMaterial <em>Material</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Material</em>' reference.
+	 * @see #getMaterial()
+	 * @generated
+	 */
+	void setMaterial(Material value);
+
+	/**
+	 * Returns the value of the '<em><b>Thickness</b></em>' attribute.
+	 * The default value is <code>"m"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Thickness</em>' attribute.
+	 * @see #setThickness(NullableQuantity)
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLayer_Thickness()
+	 * @model default="m" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getThickness();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.Layer#getThickness <em>Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Thickness</em>' attribute.
+	 * @see #getThickness()
+	 * @generated
+	 */
+	void setThickness(NullableQuantity value);
+
+} // Layer
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/LifeCycle.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/LifeCycle.java
deleted file mode 100644
index 81a0a36821355e06ac278003c3dc4a2922efa0f8..0000000000000000000000000000000000000000
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/LifeCycle.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- */
-package de.hftstuttgart.buildingphysics;
-
-import de.hftstuttgart.cityunits.model.NullableQuantity;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Life Cycle</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link de.hftstuttgart.buildingphysics.LifeCycle#getEmbodiedEnergy <em>Embodied Energy</em>}</li>
- *   <li>{@link de.hftstuttgart.buildingphysics.LifeCycle#getEmbodiedCarbon <em>Embodied Carbon</em>}</li>
- *   <li>{@link de.hftstuttgart.buildingphysics.LifeCycle#getConstructionDescription <em>Construction Description</em>}</li>
- *   <li>{@link de.hftstuttgart.buildingphysics.LifeCycle#getDisposalEnergy <em>Disposal Energy</em>}</li>
- *   <li>{@link de.hftstuttgart.buildingphysics.LifeCycle#getDisposalCarbon <em>Disposal Carbon</em>}</li>
- *   <li>{@link de.hftstuttgart.buildingphysics.LifeCycle#getDisposalDescription <em>Disposal Description</em>}</li>
- * </ul>
- *
- * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLifeCycle()
- * @model
- * @generated
- */
-public interface LifeCycle extends EObject {
-	/**
-	 * Returns the value of the '<em><b>Embodied Energy</b></em>' attribute.
-	 * The default value is <code>"kW*h"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Embodied Energy</em>' attribute.
-	 * @see #setEmbodiedEnergy(NullableQuantity)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLifeCycle_EmbodiedEnergy()
-	 * @model default="kW*h" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
-	 * @generated
-	 */
-	NullableQuantity getEmbodiedEnergy();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.LifeCycle#getEmbodiedEnergy <em>Embodied Energy</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Embodied Energy</em>' attribute.
-	 * @see #getEmbodiedEnergy()
-	 * @generated
-	 */
-	void setEmbodiedEnergy(NullableQuantity value);
-
-	/**
-	 * Returns the value of the '<em><b>Embodied Carbon</b></em>' attribute.
-	 * The default value is <code>"kg"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Embodied Carbon</em>' attribute.
-	 * @see #setEmbodiedCarbon(NullableQuantity)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLifeCycle_EmbodiedCarbon()
-	 * @model default="kg" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
-	 * @generated
-	 */
-	NullableQuantity getEmbodiedCarbon();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.LifeCycle#getEmbodiedCarbon <em>Embodied Carbon</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Embodied Carbon</em>' attribute.
-	 * @see #getEmbodiedCarbon()
-	 * @generated
-	 */
-	void setEmbodiedCarbon(NullableQuantity value);
-
-	/**
-	 * Returns the value of the '<em><b>Construction Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Construction Description</em>' attribute.
-	 * @see #setConstructionDescription(String)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLifeCycle_ConstructionDescription()
-	 * @model required="true"
-	 * @generated
-	 */
-	String getConstructionDescription();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.LifeCycle#getConstructionDescription <em>Construction Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Construction Description</em>' attribute.
-	 * @see #getConstructionDescription()
-	 * @generated
-	 */
-	void setConstructionDescription(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Disposal Energy</b></em>' attribute.
-	 * The default value is <code>"kW*h"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Disposal Energy</em>' attribute.
-	 * @see #setDisposalEnergy(NullableQuantity)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLifeCycle_DisposalEnergy()
-	 * @model default="kW*h" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
-	 * @generated
-	 */
-	NullableQuantity getDisposalEnergy();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.LifeCycle#getDisposalEnergy <em>Disposal Energy</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Disposal Energy</em>' attribute.
-	 * @see #getDisposalEnergy()
-	 * @generated
-	 */
-	void setDisposalEnergy(NullableQuantity value);
-
-	/**
-	 * Returns the value of the '<em><b>Disposal Carbon</b></em>' attribute.
-	 * The default value is <code>"kg"</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Disposal Carbon</em>' attribute.
-	 * @see #setDisposalCarbon(NullableQuantity)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLifeCycle_DisposalCarbon()
-	 * @model default="kg" dataType="de.hftstuttgart.cityunits.model.quantities.QuantityDouble" required="true"
-	 * @generated
-	 */
-	NullableQuantity getDisposalCarbon();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.LifeCycle#getDisposalCarbon <em>Disposal Carbon</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Disposal Carbon</em>' attribute.
-	 * @see #getDisposalCarbon()
-	 * @generated
-	 */
-	void setDisposalCarbon(NullableQuantity value);
-
-	/**
-	 * Returns the value of the '<em><b>Disposal Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Disposal Description</em>' attribute.
-	 * @see #setDisposalDescription(String)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getLifeCycle_DisposalDescription()
-	 * @model required="true"
-	 * @generated
-	 */
-	String getDisposalDescription();
-
-	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.LifeCycle#getDisposalDescription <em>Disposal Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Disposal Description</em>' attribute.
-	 * @see #getDisposalDescription()
-	 * @generated
-	 */
-	void setDisposalDescription(String value);
-
-} // LifeCycle
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Material.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Material.java
index 36714421ea39f7757543b00d9fb68537a6a28e2f..200452be6e682addc94d5414c39e0efa88705637 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Material.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Material.java
@@ -15,7 +15,7 @@ import org.eclipse.emf.ecore.EObject;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link de.hftstuttgart.buildingphysics.Material#getId <em>Id</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.Material#getMaterialId <em>Material Id</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.Material#getName <em>Name</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.Material#getDensity <em>Density</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.Material#getHeatCapacity <em>Heat Capacity</em>}</li>
@@ -34,26 +34,26 @@ import org.eclipse.emf.ecore.EObject;
  */
 public interface Material extends EObject {
 	/**
-	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * Returns the value of the '<em><b>Material Id</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Id</em>' attribute.
-	 * @see #setId(long)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMaterial_Id()
+	 * @return the value of the '<em>Material Id</em>' attribute.
+	 * @see #setMaterialId(String)
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMaterial_MaterialId()
 	 * @model id="true" required="true"
 	 * @generated
 	 */
-	long getId();
+	String getMaterialId();
 
 	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.Material#getId <em>Id</em>}' attribute.
+	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.Material#getMaterialId <em>Material Id</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Id</em>' attribute.
-	 * @see #getId()
+	 * @param value the new value of the '<em>Material Id</em>' attribute.
+	 * @see #getMaterialId()
 	 * @generated
 	 */
-	void setId(long value);
+	void setMaterialId(String value);
 
 	/**
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCatalog.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCatalog.java
index acd13e3247cf6c957d2540aca1139f1c0c1cd868..373f8de64f34e918593dcf755d290dec3516e209 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCatalog.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCatalog.java
@@ -14,6 +14,7 @@ import org.eclipse.emf.common.util.EList;
  * </p>
  * <ul>
  *   <li>{@link de.hftstuttgart.buildingphysics.MaterialCatalog#getMaterialCategories <em>Material Categories</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.MaterialCatalog#getConstructionCategories <em>Construction Categories</em>}</li>
  * </ul>
  *
  * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMaterialCatalog()
@@ -33,4 +34,16 @@ public interface MaterialCatalog extends Catalog {
 	 */
 	EList<MaterialCategory> getMaterialCategories();
 
+	/**
+	 * Returns the value of the '<em><b>Construction Categories</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.buildingphysics.ConstructionCategory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Construction Categories</em>' containment reference list.
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMaterialCatalog_ConstructionCategories()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<ConstructionCategory> getConstructionCategories();
+
 } // MaterialCatalog
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCategory.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCategory.java
index 75c3970dee82d224612213337de8caffd85f450a..db727ead0cf0cb7e2a8c0a3ac8edcc158a1238c3 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCategory.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/MaterialCategory.java
@@ -15,7 +15,7 @@ import org.eclipse.emf.ecore.EObject;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link de.hftstuttgart.buildingphysics.MaterialCategory#getMaterial <em>Material</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.MaterialCategory#getMaterials <em>Materials</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.MaterialCategory#getName <em>Name</em>}</li>
  * </ul>
  *
@@ -25,16 +25,16 @@ import org.eclipse.emf.ecore.EObject;
  */
 public interface MaterialCategory extends EObject {
 	/**
-	 * Returns the value of the '<em><b>Material</b></em>' containment reference list.
+	 * Returns the value of the '<em><b>Materials</b></em>' containment reference list.
 	 * The list contents are of type {@link de.hftstuttgart.buildingphysics.Material}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Material</em>' containment reference list.
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMaterialCategory_Material()
+	 * @return the value of the '<em>Materials</em>' containment reference list.
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMaterialCategory_Materials()
 	 * @model containment="true"
 	 * @generated
 	 */
-	EList<Material> getMaterial();
+	EList<Material> getMaterials();
 
 	/**
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Mounting.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Mounting.java
new file mode 100644
index 0000000000000000000000000000000000000000..019a352cc1d3021b424b9717e9b295f39eced492
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/Mounting.java
@@ -0,0 +1,84 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mounting</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.buildingphysics.Mounting#getMountingId <em>Mounting Id</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.Mounting#getName <em>Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.Mounting#getLayers <em>Layers</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMounting()
+ * @model
+ * @generated
+ */
+public interface Mounting extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Mounting Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mounting Id</em>' attribute.
+	 * @see #setMountingId(String)
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMounting_MountingId()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getMountingId();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.Mounting#getMountingId <em>Mounting Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mounting Id</em>' attribute.
+	 * @see #getMountingId()
+	 * @generated
+	 */
+	void setMountingId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMounting_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.Mounting#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Layers</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.buildingphysics.Layer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Layers</em>' containment reference list.
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getMounting_Layers()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<Layer> getLayers();
+
+} // Mounting
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/WindowType.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/WindowType.java
index 7dbff26618e40f96458fac76463ce1ab49dfd0d7..034a35beb4b2925518a680d7a97b522699c2fbdf 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/WindowType.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/WindowType.java
@@ -3,6 +3,7 @@
 package de.hftstuttgart.buildingphysics;
 
 import de.hftstuttgart.cityunits.model.NullableQuantity;
+
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -14,7 +15,7 @@ import org.eclipse.emf.ecore.EObject;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link de.hftstuttgart.buildingphysics.WindowType#getId <em>Id</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.WindowType#getWindowTypeId <em>Window Type Id</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.WindowType#getName <em>Name</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.WindowType#getUValue <em>UValue</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.WindowType#getGValue <em>GValue</em>}</li>
@@ -34,26 +35,26 @@ import org.eclipse.emf.ecore.EObject;
  */
 public interface WindowType extends EObject {
 	/**
-	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * Returns the value of the '<em><b>Window Type Id</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Id</em>' attribute.
-	 * @see #setId(int)
-	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getWindowType_Id()
-	 * @model id="true" required="true"
+	 * @return the value of the '<em>Window Type Id</em>' attribute.
+	 * @see #setWindowTypeId(String)
+	 * @see de.hftstuttgart.buildingphysics.BuildingPhysicsPackage#getWindowType_WindowTypeId()
+	 * @model required="true"
 	 * @generated
 	 */
-	int getId();
+	String getWindowTypeId();
 
 	/**
-	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.WindowType#getId <em>Id</em>}' attribute.
+	 * Sets the value of the '{@link de.hftstuttgart.buildingphysics.WindowType#getWindowTypeId <em>Window Type Id</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Id</em>' attribute.
-	 * @see #getId()
+	 * @param value the new value of the '<em>Window Type Id</em>' attribute.
+	 * @see #getWindowTypeId()
 	 * @generated
 	 */
-	void setId(int value);
+	void setWindowTypeId(String value);
 
 	/**
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsFactoryImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsFactoryImpl.java
index 51f21ce400f57fc7749a02d79ef40d67241ca284..87ba9f0d831fc117ed812bd5134e261b500303b6 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsFactoryImpl.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsFactoryImpl.java
@@ -68,6 +68,12 @@ public class BuildingPhysicsFactoryImpl extends EFactoryImpl implements Building
 			return createMaterialCategory();
 		case BuildingPhysicsPackage.MATERIAL:
 			return createMaterial();
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY:
+			return createConstructionCategory();
+		case BuildingPhysicsPackage.MOUNTING:
+			return createMounting();
+		case BuildingPhysicsPackage.LAYER:
+			return createLayer();
 		default:
 			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -139,6 +145,39 @@ public class BuildingPhysicsFactoryImpl extends EFactoryImpl implements Building
 		return material;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ConstructionCategory createConstructionCategory() {
+		ConstructionCategoryImpl constructionCategory = new ConstructionCategoryImpl();
+		return constructionCategory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Mounting createMounting() {
+		MountingImpl mounting = new MountingImpl();
+		return mounting;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Layer createLayer() {
+		LayerImpl layer = new LayerImpl();
+		return layer;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsPackageImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsPackageImpl.java
index 9d9e11f8f1b1909561acf7347223eedc95651bfd..1da1b0f8d2efe457efdab5833d693ebe0f523cb1 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsPackageImpl.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/BuildingPhysicsPackageImpl.java
@@ -6,9 +6,12 @@ import de.hftstuttgart.buildingphysics.BuildingPhysicsCatalog;
 import de.hftstuttgart.buildingphysics.BuildingPhysicsFactory;
 import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
 import de.hftstuttgart.buildingphysics.Catalog;
+import de.hftstuttgart.buildingphysics.ConstructionCategory;
+import de.hftstuttgart.buildingphysics.Layer;
 import de.hftstuttgart.buildingphysics.Material;
 import de.hftstuttgart.buildingphysics.MaterialCatalog;
 import de.hftstuttgart.buildingphysics.MaterialCategory;
+import de.hftstuttgart.buildingphysics.Mounting;
 import de.hftstuttgart.buildingphysics.WindowCatalog;
 import de.hftstuttgart.buildingphysics.WindowType;
 
@@ -77,6 +80,27 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 	 */
 	private EClass materialEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass constructionCategoryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass mountingEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass layerEClass = null;
+
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
@@ -200,7 +224,7 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 	 * @generated
 	 */
 	@Override
-	public EAttribute getWindowType_Id() {
+	public EAttribute getWindowType_WindowTypeId() {
 		return (EAttribute) windowTypeEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -394,6 +418,16 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 		return (EReference) materialCatalogEClass.getEStructuralFeatures().get(0);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getMaterialCatalog_ConstructionCategories() {
+		return (EReference) materialCatalogEClass.getEStructuralFeatures().get(1);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -410,7 +444,7 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 	 * @generated
 	 */
 	@Override
-	public EReference getMaterialCategory_Material() {
+	public EReference getMaterialCategory_Materials() {
 		return (EReference) materialCategoryEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -440,7 +474,7 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 	 * @generated
 	 */
 	@Override
-	public EAttribute getMaterial_Id() {
+	public EAttribute getMaterial_MaterialId() {
 		return (EAttribute) materialEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -544,6 +578,106 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 		return (EAttribute) materialEClass.getEStructuralFeatures().get(10);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConstructionCategory() {
+		return constructionCategoryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConstructionCategory_Name() {
+		return (EAttribute) constructionCategoryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getConstructionCategory_Mountings() {
+		return (EReference) constructionCategoryEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMounting() {
+		return mountingEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMounting_MountingId() {
+		return (EAttribute) mountingEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMounting_Name() {
+		return (EAttribute) mountingEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getMounting_Layers() {
+		return (EReference) mountingEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLayer() {
+		return layerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getLayer_Material() {
+		return (EReference) layerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayer_Thickness() {
+		return (EAttribute) layerEClass.getEStructuralFeatures().get(1);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -580,7 +714,7 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 		createEReference(buildingPhysicsCatalogEClass, BUILDING_PHYSICS_CATALOG__MATERIAL_CATALOG);
 
 		windowTypeEClass = createEClass(WINDOW_TYPE);
-		createEAttribute(windowTypeEClass, WINDOW_TYPE__ID);
+		createEAttribute(windowTypeEClass, WINDOW_TYPE__WINDOW_TYPE_ID);
 		createEAttribute(windowTypeEClass, WINDOW_TYPE__NAME);
 		createEAttribute(windowTypeEClass, WINDOW_TYPE__UVALUE);
 		createEAttribute(windowTypeEClass, WINDOW_TYPE__GVALUE);
@@ -603,13 +737,14 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 
 		materialCatalogEClass = createEClass(MATERIAL_CATALOG);
 		createEReference(materialCatalogEClass, MATERIAL_CATALOG__MATERIAL_CATEGORIES);
+		createEReference(materialCatalogEClass, MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES);
 
 		materialCategoryEClass = createEClass(MATERIAL_CATEGORY);
-		createEReference(materialCategoryEClass, MATERIAL_CATEGORY__MATERIAL);
+		createEReference(materialCategoryEClass, MATERIAL_CATEGORY__MATERIALS);
 		createEAttribute(materialCategoryEClass, MATERIAL_CATEGORY__NAME);
 
 		materialEClass = createEClass(MATERIAL);
-		createEAttribute(materialEClass, MATERIAL__ID);
+		createEAttribute(materialEClass, MATERIAL__MATERIAL_ID);
 		createEAttribute(materialEClass, MATERIAL__NAME);
 		createEAttribute(materialEClass, MATERIAL__DENSITY);
 		createEAttribute(materialEClass, MATERIAL__HEAT_CAPACITY);
@@ -620,6 +755,19 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 		createEAttribute(materialEClass, MATERIAL__DISPOSAL_ENERGY);
 		createEAttribute(materialEClass, MATERIAL__DISPOSAL_CARBON);
 		createEAttribute(materialEClass, MATERIAL__DISPOSAL_DESCRIPTION);
+
+		constructionCategoryEClass = createEClass(CONSTRUCTION_CATEGORY);
+		createEAttribute(constructionCategoryEClass, CONSTRUCTION_CATEGORY__NAME);
+		createEReference(constructionCategoryEClass, CONSTRUCTION_CATEGORY__MOUNTINGS);
+
+		mountingEClass = createEClass(MOUNTING);
+		createEAttribute(mountingEClass, MOUNTING__MOUNTING_ID);
+		createEAttribute(mountingEClass, MOUNTING__NAME);
+		createEReference(mountingEClass, MOUNTING__LAYERS);
+
+		layerEClass = createEClass(LAYER);
+		createEReference(layerEClass, LAYER__MATERIAL);
+		createEAttribute(layerEClass, LAYER__THICKNESS);
 	}
 
 	/**
@@ -673,8 +821,9 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 
 		initEClass(windowTypeEClass, WindowType.class, "WindowType", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getWindowType_Id(), ecorePackage.getEInt(), "id", null, 1, 1, WindowType.class, !IS_TRANSIENT,
-				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getWindowType_WindowTypeId(), ecorePackage.getEString(), "windowTypeId", null, 1, 1,
+				WindowType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
 		initEAttribute(getWindowType_Name(), ecorePackage.getEString(), "name", null, 1, 1, WindowType.class,
 				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getWindowType_UValue(), theQuantitiesPackage.getQuantityDouble(), "uValue", "W/(m\u00b2*K)", 1,
@@ -726,10 +875,13 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 		initEReference(getMaterialCatalog_MaterialCategories(), this.getMaterialCategory(), null, "materialCategories",
 				null, 0, -1, MaterialCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
 				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getMaterialCatalog_ConstructionCategories(), this.getConstructionCategory(), null,
+				"constructionCategories", null, 1, -1, MaterialCatalog.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(materialCategoryEClass, MaterialCategory.class, "MaterialCategory", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getMaterialCategory_Material(), this.getMaterial(), null, "material", null, 0, -1,
+		initEReference(getMaterialCategory_Materials(), this.getMaterial(), null, "materials", null, 0, -1,
 				MaterialCategory.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
 				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getMaterialCategory_Name(), ecorePackage.getEString(), "name", null, 1, 1,
@@ -738,8 +890,8 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 
 		initEClass(materialEClass, Material.class, "Material", !IS_ABSTRACT, !IS_INTERFACE,
 				IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getMaterial_Id(), ecorePackage.getELong(), "id", null, 1, 1, Material.class, !IS_TRANSIENT,
-				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMaterial_MaterialId(), ecorePackage.getEString(), "materialId", null, 1, 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);
 		initEAttribute(getMaterial_Density(), theQuantitiesPackage.getQuantityDouble(), "density", "kg/m\u00b3", 1, 1,
@@ -770,6 +922,34 @@ public class BuildingPhysicsPackageImpl extends EPackageImpl implements Building
 				Material.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
 				!IS_DERIVED, IS_ORDERED);
 
+		initEClass(constructionCategoryEClass, ConstructionCategory.class, "ConstructionCategory", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getConstructionCategory_Name(), ecorePackage.getEString(), "name", null, 1, 1,
+				ConstructionCategory.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getConstructionCategory_Mountings(), this.getMounting(), null, "mountings", null, 0, -1,
+				ConstructionCategory.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(mountingEClass, Mounting.class, "Mounting", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMounting_MountingId(), ecorePackage.getEString(), "mountingId", null, 1, 1, Mounting.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMounting_Name(), ecorePackage.getEString(), "name", null, 1, 1, Mounting.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getMounting_Layers(), this.getLayer(), null, "layers", null, 1, -1, Mounting.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(layerEClass, Layer.class, "Layer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayer_Material(), this.getMaterial(), null, "material", null, 1, 1, Layer.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				!IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		getLayer_Material().getEKeys().add(this.getMaterial_MaterialId());
+		initEAttribute(getLayer_Thickness(), theQuantitiesPackage.getQuantityDouble(), "thickness", "m", 1, 1,
+				Layer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
 		// Create resource
 		createResource(eNS_URI);
 	}
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/ConstructionCategoryImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/ConstructionCategoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..943c1e85bd9b99af87671818a63a6a2299b48be6
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/ConstructionCategoryImpl.java
@@ -0,0 +1,228 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics.impl;
+
+import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
+import de.hftstuttgart.buildingphysics.ConstructionCategory;
+import de.hftstuttgart.buildingphysics.Mounting;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Construction Category</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.ConstructionCategoryImpl#getName <em>Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.ConstructionCategoryImpl#getMountings <em>Mountings</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ConstructionCategoryImpl extends MinimalEObjectImpl.Container implements ConstructionCategory {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getMountings() <em>Mountings</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMountings()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Mounting> mountings;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConstructionCategoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return BuildingPhysicsPackage.Literals.CONSTRUCTION_CATEGORY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__NAME,
+					oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Mounting> getMountings() {
+		if (mountings == null) {
+			mountings = new EObjectContainmentEList<Mounting>(Mounting.class, this,
+					BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__MOUNTINGS);
+		}
+		return mountings;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__MOUNTINGS:
+			return ((InternalEList<?>) getMountings()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__NAME:
+			return getName();
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__MOUNTINGS:
+			return getMountings();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__NAME:
+			setName((String) newValue);
+			return;
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__MOUNTINGS:
+			getMountings().clear();
+			getMountings().addAll((Collection<? extends Mounting>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__MOUNTINGS:
+			getMountings().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY__MOUNTINGS:
+			return mountings != null && !mountings.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ConstructionCategoryImpl
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/LayerImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/LayerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..93dff1ce4e2e6983f327e8803cf57cc70c75b7bf
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/LayerImpl.java
@@ -0,0 +1,240 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics.impl;
+
+import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
+import de.hftstuttgart.buildingphysics.Layer;
+import de.hftstuttgart.buildingphysics.Material;
+
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
+import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.LayerImpl#getMaterial <em>Material</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.LayerImpl#getThickness <em>Thickness</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LayerImpl extends MinimalEObjectImpl.Container implements Layer {
+	/**
+	 * The cached value of the '{@link #getMaterial() <em>Material</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaterial()
+	 * @generated
+	 * @ordered
+	 */
+	protected Material material;
+
+	/**
+	 * The default value of the '{@link #getThickness() <em>Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThickness()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity THICKNESS_EDEFAULT = (NullableQuantity) QuantitiesFactory.eINSTANCE
+			.createFromString(QuantitiesPackage.eINSTANCE.getQuantityDouble(), "m");
+
+	/**
+	 * The cached value of the '{@link #getThickness() <em>Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThickness()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity thickness = THICKNESS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LayerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return BuildingPhysicsPackage.Literals.LAYER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Material getMaterial() {
+		if (material != null && material.eIsProxy()) {
+			InternalEObject oldMaterial = (InternalEObject) material;
+			material = (Material) eResolveProxy(oldMaterial);
+			if (material != oldMaterial) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BuildingPhysicsPackage.LAYER__MATERIAL,
+							oldMaterial, material));
+			}
+		}
+		return material;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Material basicGetMaterial() {
+		return material;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaterial(Material newMaterial) {
+		Material oldMaterial = material;
+		material = newMaterial;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.LAYER__MATERIAL, oldMaterial,
+					material));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getThickness() {
+		return thickness;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThickness(NullableQuantity newThickness) {
+		NullableQuantity oldThickness = thickness;
+		thickness = newThickness;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.LAYER__THICKNESS, oldThickness,
+					thickness));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.LAYER__MATERIAL:
+			if (resolve)
+				return getMaterial();
+			return basicGetMaterial();
+		case BuildingPhysicsPackage.LAYER__THICKNESS:
+			return getThickness();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.LAYER__MATERIAL:
+			setMaterial((Material) newValue);
+			return;
+		case BuildingPhysicsPackage.LAYER__THICKNESS:
+			setThickness((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.LAYER__MATERIAL:
+			setMaterial((Material) null);
+			return;
+		case BuildingPhysicsPackage.LAYER__THICKNESS:
+			setThickness(THICKNESS_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.LAYER__MATERIAL:
+			return material != null;
+		case BuildingPhysicsPackage.LAYER__THICKNESS:
+			return THICKNESS_EDEFAULT == null ? thickness != null : !THICKNESS_EDEFAULT.equals(thickness);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (thickness: ");
+		result.append(thickness);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LayerImpl
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCatalogImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCatalogImpl.java
index d5bda35269258df4c12a2de45e8ee65a2e86491a..6e79348b9c1341ca0898eb90d85cd5807dd4c1da 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCatalogImpl.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCatalogImpl.java
@@ -3,6 +3,7 @@
 package de.hftstuttgart.buildingphysics.impl;
 
 import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
+import de.hftstuttgart.buildingphysics.ConstructionCategory;
 import de.hftstuttgart.buildingphysics.MaterialCatalog;
 import de.hftstuttgart.buildingphysics.MaterialCategory;
 
@@ -27,6 +28,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  * </p>
  * <ul>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialCatalogImpl#getMaterialCategories <em>Material Categories</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialCatalogImpl#getConstructionCategories <em>Construction Categories</em>}</li>
  * </ul>
  *
  * @generated
@@ -42,6 +44,16 @@ public class MaterialCatalogImpl extends CatalogImpl implements MaterialCatalog
 	 */
 	protected EList<MaterialCategory> materialCategories;
 
+	/**
+	 * The cached value of the '{@link #getConstructionCategories() <em>Construction Categories</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstructionCategories()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ConstructionCategory> constructionCategories;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -75,6 +87,20 @@ public class MaterialCatalogImpl extends CatalogImpl implements MaterialCatalog
 		return materialCategories;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<ConstructionCategory> getConstructionCategories() {
+		if (constructionCategories == null) {
+			constructionCategories = new EObjectContainmentEList<ConstructionCategory>(ConstructionCategory.class, this,
+					BuildingPhysicsPackage.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES);
+		}
+		return constructionCategories;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -85,6 +111,8 @@ public class MaterialCatalogImpl extends CatalogImpl implements MaterialCatalog
 		switch (featureID) {
 		case BuildingPhysicsPackage.MATERIAL_CATALOG__MATERIAL_CATEGORIES:
 			return ((InternalEList<?>) getMaterialCategories()).basicRemove(otherEnd, msgs);
+		case BuildingPhysicsPackage.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES:
+			return ((InternalEList<?>) getConstructionCategories()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -99,6 +127,8 @@ public class MaterialCatalogImpl extends CatalogImpl implements MaterialCatalog
 		switch (featureID) {
 		case BuildingPhysicsPackage.MATERIAL_CATALOG__MATERIAL_CATEGORIES:
 			return getMaterialCategories();
+		case BuildingPhysicsPackage.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES:
+			return getConstructionCategories();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -116,6 +146,10 @@ public class MaterialCatalogImpl extends CatalogImpl implements MaterialCatalog
 			getMaterialCategories().clear();
 			getMaterialCategories().addAll((Collection<? extends MaterialCategory>) newValue);
 			return;
+		case BuildingPhysicsPackage.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES:
+			getConstructionCategories().clear();
+			getConstructionCategories().addAll((Collection<? extends ConstructionCategory>) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -131,6 +165,9 @@ public class MaterialCatalogImpl extends CatalogImpl implements MaterialCatalog
 		case BuildingPhysicsPackage.MATERIAL_CATALOG__MATERIAL_CATEGORIES:
 			getMaterialCategories().clear();
 			return;
+		case BuildingPhysicsPackage.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES:
+			getConstructionCategories().clear();
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -145,6 +182,8 @@ public class MaterialCatalogImpl extends CatalogImpl implements MaterialCatalog
 		switch (featureID) {
 		case BuildingPhysicsPackage.MATERIAL_CATALOG__MATERIAL_CATEGORIES:
 			return materialCategories != null && !materialCategories.isEmpty();
+		case BuildingPhysicsPackage.MATERIAL_CATALOG__CONSTRUCTION_CATEGORIES:
+			return constructionCategories != null && !constructionCategories.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCategoryImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCategoryImpl.java
index 70d89cd7d3e62605f28ed81552e6adef273c316a..e50f51af693949f5135ce5c9871633a31c5b97e7 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCategoryImpl.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialCategoryImpl.java
@@ -30,7 +30,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialCategoryImpl#getMaterial <em>Material</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialCategoryImpl#getMaterials <em>Materials</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialCategoryImpl#getName <em>Name</em>}</li>
  * </ul>
  *
@@ -38,14 +38,14 @@ import org.eclipse.emf.ecore.util.InternalEList;
  */
 public class MaterialCategoryImpl extends MinimalEObjectImpl.Container implements MaterialCategory {
 	/**
-	 * The cached value of the '{@link #getMaterial() <em>Material</em>}' containment reference list.
+	 * The cached value of the '{@link #getMaterials() <em>Materials</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getMaterial()
+	 * @see #getMaterials()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Material> material;
+	protected EList<Material> materials;
 
 	/**
 	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
@@ -92,12 +92,12 @@ public class MaterialCategoryImpl extends MinimalEObjectImpl.Container implement
 	 * @generated
 	 */
 	@Override
-	public EList<Material> getMaterial() {
-		if (material == null) {
-			material = new EObjectContainmentEList<Material>(Material.class, this,
-					BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIAL);
+	public EList<Material> getMaterials() {
+		if (materials == null) {
+			materials = new EObjectContainmentEList<Material>(Material.class, this,
+					BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIALS);
 		}
-		return material;
+		return materials;
 	}
 
 	/**
@@ -132,8 +132,8 @@ public class MaterialCategoryImpl extends MinimalEObjectImpl.Container implement
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIAL:
-			return ((InternalEList<?>) getMaterial()).basicRemove(otherEnd, msgs);
+		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIALS:
+			return ((InternalEList<?>) getMaterials()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -146,8 +146,8 @@ public class MaterialCategoryImpl extends MinimalEObjectImpl.Container implement
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIAL:
-			return getMaterial();
+		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIALS:
+			return getMaterials();
 		case BuildingPhysicsPackage.MATERIAL_CATEGORY__NAME:
 			return getName();
 		}
@@ -163,9 +163,9 @@ public class MaterialCategoryImpl extends MinimalEObjectImpl.Container implement
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIAL:
-			getMaterial().clear();
-			getMaterial().addAll((Collection<? extends Material>) newValue);
+		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIALS:
+			getMaterials().clear();
+			getMaterials().addAll((Collection<? extends Material>) newValue);
 			return;
 		case BuildingPhysicsPackage.MATERIAL_CATEGORY__NAME:
 			setName((String) newValue);
@@ -182,8 +182,8 @@ public class MaterialCategoryImpl extends MinimalEObjectImpl.Container implement
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIAL:
-			getMaterial().clear();
+		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIALS:
+			getMaterials().clear();
 			return;
 		case BuildingPhysicsPackage.MATERIAL_CATEGORY__NAME:
 			setName(NAME_EDEFAULT);
@@ -200,8 +200,8 @@ public class MaterialCategoryImpl extends MinimalEObjectImpl.Container implement
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIAL:
-			return material != null && !material.isEmpty();
+		case BuildingPhysicsPackage.MATERIAL_CATEGORY__MATERIALS:
+			return materials != null && !materials.isEmpty();
 		case BuildingPhysicsPackage.MATERIAL_CATEGORY__NAME:
 			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 		}
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialImpl.java
index 3154c18bbf5ac15350766bc15abcdb57462e6052..7e75a2a5571a3bf2a0d9456131da2eed7f4c7adc 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialImpl.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MaterialImpl.java
@@ -25,7 +25,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialImpl#getId <em>Id</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialImpl#getMaterialId <em>Material Id</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialImpl#getName <em>Name</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialImpl#getDensity <em>Density</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.MaterialImpl#getHeatCapacity <em>Heat Capacity</em>}</li>
@@ -42,24 +42,24 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  */
 public class MaterialImpl extends MinimalEObjectImpl.Container implements Material {
 	/**
-	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * The default value of the '{@link #getMaterialId() <em>Material Id</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getId()
+	 * @see #getMaterialId()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final long ID_EDEFAULT = 0L;
+	protected static final String MATERIAL_ID_EDEFAULT = null;
 
 	/**
-	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * The cached value of the '{@link #getMaterialId() <em>Material Id</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getId()
+	 * @see #getMaterialId()
 	 * @generated
 	 * @ordered
 	 */
-	protected long id = ID_EDEFAULT;
+	protected String materialId = MATERIAL_ID_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
@@ -293,8 +293,8 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	 * @generated
 	 */
 	@Override
-	public long getId() {
-		return id;
+	public String getMaterialId() {
+		return materialId;
 	}
 
 	/**
@@ -303,11 +303,12 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	 * @generated
 	 */
 	@Override
-	public void setId(long newId) {
-		long oldId = id;
-		id = newId;
+	public void setMaterialId(String newMaterialId) {
+		String oldMaterialId = materialId;
+		materialId = newMaterialId;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.MATERIAL__ID, oldId, id));
+			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.MATERIAL__MATERIAL_ID,
+					oldMaterialId, materialId));
 	}
 
 	/**
@@ -559,8 +560,8 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL__ID:
-			return getId();
+		case BuildingPhysicsPackage.MATERIAL__MATERIAL_ID:
+			return getMaterialId();
 		case BuildingPhysicsPackage.MATERIAL__NAME:
 			return getName();
 		case BuildingPhysicsPackage.MATERIAL__DENSITY:
@@ -593,8 +594,8 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL__ID:
-			setId((Long) newValue);
+		case BuildingPhysicsPackage.MATERIAL__MATERIAL_ID:
+			setMaterialId((String) newValue);
 			return;
 		case BuildingPhysicsPackage.MATERIAL__NAME:
 			setName((String) newValue);
@@ -638,8 +639,8 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL__ID:
-			setId(ID_EDEFAULT);
+		case BuildingPhysicsPackage.MATERIAL__MATERIAL_ID:
+			setMaterialId(MATERIAL_ID_EDEFAULT);
 			return;
 		case BuildingPhysicsPackage.MATERIAL__NAME:
 			setName(NAME_EDEFAULT);
@@ -683,8 +684,8 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.MATERIAL__ID:
-			return id != ID_EDEFAULT;
+		case BuildingPhysicsPackage.MATERIAL__MATERIAL_ID:
+			return MATERIAL_ID_EDEFAULT == null ? materialId != null : !MATERIAL_ID_EDEFAULT.equals(materialId);
 		case BuildingPhysicsPackage.MATERIAL__NAME:
 			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 		case BuildingPhysicsPackage.MATERIAL__DENSITY:
@@ -726,8 +727,8 @@ public class MaterialImpl extends MinimalEObjectImpl.Container implements Materi
 			return super.toString();
 
 		StringBuilder result = new StringBuilder(super.toString());
-		result.append(" (id: ");
-		result.append(id);
+		result.append(" (materialId: ");
+		result.append(materialId);
 		result.append(", name: ");
 		result.append(name);
 		result.append(", density: ");
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MountingImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MountingImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..91a19094d0748637123565e15a777ae7f2f44032
--- /dev/null
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/MountingImpl.java
@@ -0,0 +1,284 @@
+/**
+ */
+package de.hftstuttgart.buildingphysics.impl;
+
+import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage;
+import de.hftstuttgart.buildingphysics.Layer;
+import de.hftstuttgart.buildingphysics.Mounting;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Mounting</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.MountingImpl#getMountingId <em>Mounting Id</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.MountingImpl#getName <em>Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.MountingImpl#getLayers <em>Layers</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MountingImpl extends MinimalEObjectImpl.Container implements Mounting {
+	/**
+	 * The default value of the '{@link #getMountingId() <em>Mounting Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMountingId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MOUNTING_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMountingId() <em>Mounting Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMountingId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String mountingId = MOUNTING_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getLayers() <em>Layers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLayers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Layer> layers;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MountingImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return BuildingPhysicsPackage.Literals.MOUNTING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getMountingId() {
+		return mountingId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMountingId(String newMountingId) {
+		String oldMountingId = mountingId;
+		mountingId = newMountingId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.MOUNTING__MOUNTING_ID,
+					oldMountingId, mountingId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.MOUNTING__NAME, oldName,
+					name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Layer> getLayers() {
+		if (layers == null) {
+			layers = new EObjectContainmentEList<Layer>(Layer.class, this, BuildingPhysicsPackage.MOUNTING__LAYERS);
+		}
+		return layers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.MOUNTING__LAYERS:
+			return ((InternalEList<?>) getLayers()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.MOUNTING__MOUNTING_ID:
+			return getMountingId();
+		case BuildingPhysicsPackage.MOUNTING__NAME:
+			return getName();
+		case BuildingPhysicsPackage.MOUNTING__LAYERS:
+			return getLayers();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.MOUNTING__MOUNTING_ID:
+			setMountingId((String) newValue);
+			return;
+		case BuildingPhysicsPackage.MOUNTING__NAME:
+			setName((String) newValue);
+			return;
+		case BuildingPhysicsPackage.MOUNTING__LAYERS:
+			getLayers().clear();
+			getLayers().addAll((Collection<? extends Layer>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.MOUNTING__MOUNTING_ID:
+			setMountingId(MOUNTING_ID_EDEFAULT);
+			return;
+		case BuildingPhysicsPackage.MOUNTING__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case BuildingPhysicsPackage.MOUNTING__LAYERS:
+			getLayers().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case BuildingPhysicsPackage.MOUNTING__MOUNTING_ID:
+			return MOUNTING_ID_EDEFAULT == null ? mountingId != null : !MOUNTING_ID_EDEFAULT.equals(mountingId);
+		case BuildingPhysicsPackage.MOUNTING__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case BuildingPhysicsPackage.MOUNTING__LAYERS:
+			return layers != null && !layers.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (mountingId: ");
+		result.append(mountingId);
+		result.append(", name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //MountingImpl
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/WindowTypeImpl.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/WindowTypeImpl.java
index e06bdb1cdc9143e7a23521f04b93775bb6b206e3..02730ff7859d803142282e95a2d351018c63f40f 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/WindowTypeImpl.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/impl/WindowTypeImpl.java
@@ -25,7 +25,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link de.hftstuttgart.buildingphysics.impl.WindowTypeImpl#getId <em>Id</em>}</li>
+ *   <li>{@link de.hftstuttgart.buildingphysics.impl.WindowTypeImpl#getWindowTypeId <em>Window Type Id</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.WindowTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.WindowTypeImpl#getUValue <em>UValue</em>}</li>
  *   <li>{@link de.hftstuttgart.buildingphysics.impl.WindowTypeImpl#getGValue <em>GValue</em>}</li>
@@ -43,24 +43,24 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  */
 public class WindowTypeImpl extends MinimalEObjectImpl.Container implements WindowType {
 	/**
-	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * The default value of the '{@link #getWindowTypeId() <em>Window Type Id</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getId()
+	 * @see #getWindowTypeId()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int ID_EDEFAULT = 0;
+	protected static final String WINDOW_TYPE_ID_EDEFAULT = null;
 
 	/**
-	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * The cached value of the '{@link #getWindowTypeId() <em>Window Type Id</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getId()
+	 * @see #getWindowTypeId()
 	 * @generated
 	 * @ordered
 	 */
-	protected int id = ID_EDEFAULT;
+	protected String windowTypeId = WINDOW_TYPE_ID_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
@@ -312,8 +312,8 @@ public class WindowTypeImpl extends MinimalEObjectImpl.Container implements Wind
 	 * @generated
 	 */
 	@Override
-	public int getId() {
-		return id;
+	public String getWindowTypeId() {
+		return windowTypeId;
 	}
 
 	/**
@@ -322,11 +322,12 @@ public class WindowTypeImpl extends MinimalEObjectImpl.Container implements Wind
 	 * @generated
 	 */
 	@Override
-	public void setId(int newId) {
-		int oldId = id;
-		id = newId;
+	public void setWindowTypeId(String newWindowTypeId) {
+		String oldWindowTypeId = windowTypeId;
+		windowTypeId = newWindowTypeId;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.WINDOW_TYPE__ID, oldId, id));
+			eNotify(new ENotificationImpl(this, Notification.SET, BuildingPhysicsPackage.WINDOW_TYPE__WINDOW_TYPE_ID,
+					oldWindowTypeId, windowTypeId));
 	}
 
 	/**
@@ -603,8 +604,8 @@ public class WindowTypeImpl extends MinimalEObjectImpl.Container implements Wind
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.WINDOW_TYPE__ID:
-			return getId();
+		case BuildingPhysicsPackage.WINDOW_TYPE__WINDOW_TYPE_ID:
+			return getWindowTypeId();
 		case BuildingPhysicsPackage.WINDOW_TYPE__NAME:
 			return getName();
 		case BuildingPhysicsPackage.WINDOW_TYPE__UVALUE:
@@ -639,8 +640,8 @@ public class WindowTypeImpl extends MinimalEObjectImpl.Container implements Wind
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.WINDOW_TYPE__ID:
-			setId((Integer) newValue);
+		case BuildingPhysicsPackage.WINDOW_TYPE__WINDOW_TYPE_ID:
+			setWindowTypeId((String) newValue);
 			return;
 		case BuildingPhysicsPackage.WINDOW_TYPE__NAME:
 			setName((String) newValue);
@@ -687,8 +688,8 @@ public class WindowTypeImpl extends MinimalEObjectImpl.Container implements Wind
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.WINDOW_TYPE__ID:
-			setId(ID_EDEFAULT);
+		case BuildingPhysicsPackage.WINDOW_TYPE__WINDOW_TYPE_ID:
+			setWindowTypeId(WINDOW_TYPE_ID_EDEFAULT);
 			return;
 		case BuildingPhysicsPackage.WINDOW_TYPE__NAME:
 			setName(NAME_EDEFAULT);
@@ -735,8 +736,9 @@ public class WindowTypeImpl extends MinimalEObjectImpl.Container implements Wind
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-		case BuildingPhysicsPackage.WINDOW_TYPE__ID:
-			return id != ID_EDEFAULT;
+		case BuildingPhysicsPackage.WINDOW_TYPE__WINDOW_TYPE_ID:
+			return WINDOW_TYPE_ID_EDEFAULT == null ? windowTypeId != null
+					: !WINDOW_TYPE_ID_EDEFAULT.equals(windowTypeId);
 		case BuildingPhysicsPackage.WINDOW_TYPE__NAME:
 			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 		case BuildingPhysicsPackage.WINDOW_TYPE__UVALUE:
@@ -780,8 +782,8 @@ public class WindowTypeImpl extends MinimalEObjectImpl.Container implements Wind
 			return super.toString();
 
 		StringBuilder result = new StringBuilder(super.toString());
-		result.append(" (id: ");
-		result.append(id);
+		result.append(" (windowTypeId: ");
+		result.append(windowTypeId);
 		result.append(", name: ");
 		result.append(name);
 		result.append(", uValue: ");
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsAdapterFactory.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsAdapterFactory.java
index 7689aac51bcf74e6e07373d6545f0887066dd100..9d48dac9ca87a2e9f6fdab619ffd66652abb137c 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsAdapterFactory.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsAdapterFactory.java
@@ -101,6 +101,21 @@ public class BuildingPhysicsAdapterFactory extends AdapterFactoryImpl {
 			return createMaterialAdapter();
 		}
 
+		@Override
+		public Adapter caseConstructionCategory(ConstructionCategory object) {
+			return createConstructionCategoryAdapter();
+		}
+
+		@Override
+		public Adapter caseMounting(Mounting object) {
+			return createMountingAdapter();
+		}
+
+		@Override
+		public Adapter caseLayer(Layer object) {
+			return createLayerAdapter();
+		}
+
 		@Override
 		public Adapter defaultCase(EObject object) {
 			return createEObjectAdapter();
@@ -218,6 +233,48 @@ public class BuildingPhysicsAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.buildingphysics.ConstructionCategory <em>Construction Category</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.buildingphysics.ConstructionCategory
+	 * @generated
+	 */
+	public Adapter createConstructionCategoryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.buildingphysics.Mounting <em>Mounting</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.buildingphysics.Mounting
+	 * @generated
+	 */
+	public Adapter createMountingAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.buildingphysics.Layer <em>Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.buildingphysics.Layer
+	 * @generated
+	 */
+	public Adapter createLayerAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
diff --git a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsSwitch.java b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsSwitch.java
index bf8b322f6ddc8e3b7a0e89617e94784698d841fe..03f8d4097d0a733e73eb472a786c6d10ef5dfa73 100644
--- a/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsSwitch.java
+++ b/de.hftstuttgart.buildingphysics/src/de/hftstuttgart/buildingphysics/util/BuildingPhysicsSwitch.java
@@ -119,6 +119,27 @@ public class BuildingPhysicsSwitch<T> extends Switch<T> {
 				result = defaultCase(theEObject);
 			return result;
 		}
+		case BuildingPhysicsPackage.CONSTRUCTION_CATEGORY: {
+			ConstructionCategory constructionCategory = (ConstructionCategory) theEObject;
+			T result = caseConstructionCategory(constructionCategory);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case BuildingPhysicsPackage.MOUNTING: {
+			Mounting mounting = (Mounting) theEObject;
+			T result = caseMounting(mounting);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case BuildingPhysicsPackage.LAYER: {
+			Layer layer = (Layer) theEObject;
+			T result = caseLayer(layer);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
 		default:
 			return defaultCase(theEObject);
 		}
@@ -229,6 +250,51 @@ public class BuildingPhysicsSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Construction Category</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Construction Category</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConstructionCategory(ConstructionCategory object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Mounting</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Mounting</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMounting(Mounting object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayer(Layer object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->