diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..31b00da7cc574d218500bb3076dbbf9e82a82f11
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,274 @@
+
+# Created by https://www.gitignore.io/api/java,maven,macos,linux,eclipse,windows,netbeans,intellij
+# Edit at https://www.gitignore.io/?templates=java,maven,macos,linux,eclipse,windows,netbeans,intellij
+
+
+### User specific ###
+.sonarlint/
+Servers/
+RemoteSystemsTempFiles/
+farFieldObstructions.txt
+farFieldOcclPatchFraction.txt
+/tmpdeploy/
+/SimStadtTestReports/
+
+### Eclipse ###
+
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.recommenders
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# PyDev specific (Python IDE for Eclipse)
+*.pydevproject
+
+# CDT-specific (C/C++ Development Tooling)
+.cproject
+
+# CDT- autotools
+.autotools
+
+# Java annotation processor (APT)
+.factorypath
+
+# PDT-specific (PHP Development Tools)
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# Tern plugin
+.tern-project
+
+# TeXlipse plugin
+.texlipse
+
+# STS (Spring Tool Suite)
+.springBeans
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+### Eclipse Patch ###
+
+# Annotation Processing
+.apt_generated
+
+.sts4-cache/
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.  Uncomment if using
+# auto-import.
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/sonarlint
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### Linux ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### Maven ###
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+.mvn/wrapper/maven-wrapper.jar
+
+### NetBeans ###
+**/nbproject/private/
+**/nbproject/Makefile-*.mk
+**/nbproject/Package-*.bash
+build/
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# End of https://www.gitignore.io/api/java,maven,macos,linux,eclipse,windows,netbeans,intellij
diff --git a/catalogs/Catalog.encomp b/catalogs/Catalog.encomp
new file mode 100644
index 0000000000000000000000000000000000000000..1bbe0a6c3c62134bb738704fa7721b419dd29222
--- /dev/null
+++ b/catalogs/Catalog.encomp
@@ -0,0 +1,1057 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<encomp:EnergyComponentsCatalog xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:encomp="https://www.hft-stuttgart.de/energycomponents">
+  <media density="0.999975 g/cm³" heatCapacity="4.184 kJ/(K·kg)" evaporationTemperature="99.974 ℃" meltingTemperature="0.002519 ℃" name="water"/>
+  <combinedHeatPowerUtilities modelName="GB4-8" revisionYear="2014" manufacturer="//@manufacturers.6" installedThermalPower="8.7 kW" modulationRange="0.6" thermalEfficiency="0.565" electricalEfficiency="0.26" installedElectricalPower="4 kW"/>
+  <combinedHeatPowerUtilities modelName="Mephisto G16+" revisionYear="2014" manufacturer="//@manufacturers.7" installedThermalPower="35.3 kW" modulationRange="0.31" thermalEfficiency="0.695" electricalEfficiency="0.315" installedElectricalPower="16 kW"/>
+  <combinedHeatPowerUtilities modelName="Loganova EN50 / CHP CE 50 NA" revisionYear="2014" manufacturer="//@manufacturers.8" installedThermalPower="80 kW" thermalEfficiency="0.541" electricalEfficiency="0.338" installedElectricalPower="50 kW"/>
+  <combinedHeatPowerUtilities modelName="Vitobloc 200 EM 70/115" revisionYear="2014" manufacturer="//@manufacturers.3" installedThermalPower="115 kW" thermalEfficiency="0.564" electricalEfficiency="0.343" installedElectricalPower="70 kW"/>
+  <combinedHeatPowerUtilities modelName="M-AT 12" revisionYear="2014" manufacturer="//@manufacturers.9" installedThermalPower="28 kW" modulationRange="0.4" fuel="bioGas" thermalEfficiency="0.651" electricalEfficiency="0.279" installedElectricalPower="12 kW"/>
+  <combinedHeatPowerUtilities modelName="5450 biogas" revisionYear="2014" manufacturer="//@manufacturers.10" installedThermalPower="150 kW" modulationRange="0.7" fuel="bioGas" thermalEfficiency="0.6" electricalEfficiency="0.32" installedElectricalPower="80 kW"/>
+  <combinedHeatPowerUtilities modelName="Centro T 100 SP bio" revisionYear="2014" manufacturer="//@manufacturers.11" installedThermalPower="143 kW" fuel="bioGas" thermalEfficiency="0.491" electricalEfficiency="0.364" installedElectricalPower="106 kW"/>
+  <combinedHeatPowerUtilities description="theoretical component with 0 kW to parametrize simulation templates that dont use this type of component for a specific simulation run" modelName="theoretical " revisionYear="2020" manufacturer="//@manufacturers.17" installedThermalPower="0 kW" thermalEfficiency="1.0" electricalEfficiency="1.0" installedElectricalPower="0 kW"/>
+  <boilers modelName="Logano plus KB192i-15" revisionYear="2019" manufacturer="//@manufacturers.0" installedThermalPower="14 kW" modulationRange="0.7" nominalEfficiency="0.881"/>
+  <boilers modelName="Evolution Viso Compact" revisionYear="2020" manufacturer="//@manufacturers.4" installedThermalPower="25 kW" nominalEfficiency="0.82" boilerType="lowtemperatureBoiler"/>
+  <boilers modelName="Logamax plus GB 192-50i" revisionYear="2018" manufacturer="//@manufacturers.0" installedThermalPower="48 kW" modulationRange="0.7" nominalEfficiency="0.887"/>
+  <boilers modelName="CGB 100" revisionYear="2019" manufacturer="//@manufacturers.5" installedThermalPower="91.9 kW" modulationRange="0.756" nominalEfficiency="0.88"/>
+  <boilers modelName="atmoTECexclusive VC 104/4-7A" revisionYear="2015" manufacturer="//@manufacturers.21" installedThermalPower="10 kW" modulationRange="0.52" nominalEfficiency="0.9" boilerType="lowtemperatureBoiler"/>
+  <boilers modelName="CerapurSolar-Comfort" revisionYear="2019" manufacturer="//@manufacturers.22" installedThermalPower="13 kW" modulationRange="0.7" nominalEfficiency="0.878"/>
+  <boilers modelName="ecoTECexclusive VC 15 C3/1-7" revisionYear="2019" manufacturer="//@manufacturers.21" installedThermalPower="15 kW" modulationRange="0.83"/>
+  <boilers modelName="Condens 5300iWM" revisionYear="2020" manufacturer="//@manufacturers.8" installedThermalPower="24 kW" modulationRange="0.7" nominalEfficiency="0.891" boilerType="lowtemperatureBoiler"/>
+  <boilers description="theoretical component with 0 kW to parametrize simulation templates that dont use this type of component for a specific simulation run" modelName="theoretical" manufacturer="//@manufacturers.17" installedThermalPower="0 kW" nominalEfficiency="1.0" boilerType="lowtemperatureBoiler"/>
+  <boilers modelName="MGK-2-210" revisionYear="2020" manufacturer="//@manufacturers.5" installedThermalPower="196 kW" modulationRange="0.82" nominalEfficiency="0.981"/>
+  <boilers modelName="Condens 7000F" revisionYear="2019" manufacturer="//@manufacturers.8" installedThermalPower="280 kW" modulationRange="0.7" nominalEfficiency="0.883"/>
+  <boilers modelName="ONH 2500" revisionYear="2020" manufacturer="//@manufacturers.23" installedThermalPower="608 kW" modulationRange="0.86" nominalEfficiency="0.83" boilerType="lowtemperatureBoiler"/>
+  <boilers modelName="Vitocrossal 300" revisionYear="2017" manufacturer="//@manufacturers.3" installedThermalPower="1400 kW" modulationRange="0.7"/>
+  <heatPumps description="calculation method EN 14511" modelName="LA 9TU" revisionYear="2009" technicalLifetime="15.0" manufacturer="//@manufacturers.1" installedThermalPower="9 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="2.8"/>
+        <datapoints x="2.0" y="3.6"/>
+        <datapoints x="7.0" y="4.2"/>
+        <datapoints x="10.0" y="4.5"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="5.2"/>
+        <datapoints x="2.0" y="7.5"/>
+        <datapoints x="7.0" y="9.2"/>
+        <datapoints x="10.0" y="10.2"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="calculation method EN 14511" modelName="LA 12TU" revisionYear="2009" technicalLifetime="15.0" manufacturer="//@manufacturers.1" installedThermalPower="12 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="2.9"/>
+        <datapoints x="2.0" y="3.7"/>
+        <datapoints x="7.0" y="4.3"/>
+        <datapoints x="10.0" y="4.6"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="7.6"/>
+        <datapoints x="2.0" y="9.4"/>
+        <datapoints x="7.0" y="10.0"/>
+        <datapoints x="10.0" y="11.7"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="calculation method EN 14511" modelName="LA 17TU" revisionYear="2009" technicalLifetime="15.0" manufacturer="//@manufacturers.1" installedThermalPower="17 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="2.9"/>
+        <datapoints x="2.0" y="3.7"/>
+        <datapoints x="7.0" y="4.4"/>
+        <datapoints x="10.0" y="4.8"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="10.3"/>
+        <datapoints x="2.0" y="14.6"/>
+        <datapoints x="7.0" y="19.6"/>
+        <datapoints x="10.0" y="20.5"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="TI_LK_IWWS_160_ER1a_20170524_DE_V01" revisionYear="2018" manufacturer="//@manufacturers.2" installedThermalPower="160 kW" fuel="electricity" heatSource="water">
+    <coefficientOfPerformance xsi:type="encomp:LinearCharacteristic">
+      <functions key="35" parameterM="0.0401" parameterC="5.4808"/>
+      <functions key="50" parameterM="0.0316" parameterC="3.6058"/>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:LinearCharacteristic">
+      <functions key="35" parameterM="2.9148" parameterC="156.13"/>
+      <functions key="50" parameterM="2.478" parameterC="152.73"/>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for inside" modelName="alira LW 140" revisionYear="2020" manufacturer="//@manufacturers.12" installedThermalPower="14.2 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="2.25"/>
+        <datapoints x="-10.0" y="2.9"/>
+        <datapoints y="3.55"/>
+        <datapoints x="5.0" y="3.85"/>
+        <datapoints x="10.0" y="4.45"/>
+        <datapoints x="15.0" y="4.9"/>
+        <datapoints x="20.0" y="5.5"/>
+        <datapoints x="30.0" y="6.8"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-20.0" y="1.7"/>
+        <datapoints x="-10.0" y="2.1"/>
+        <datapoints y="2.5"/>
+        <datapoints x="5.0" y="2.75"/>
+        <datapoints x="10.0" y="3.35"/>
+        <datapoints x="15.0" y="3.5"/>
+        <datapoints x="20.0" y="3.9"/>
+        <datapoints x="35.0" y="5.0"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="7.5"/>
+        <datapoints x="-10.0" y="10.1"/>
+        <datapoints y="13.2"/>
+        <datapoints x="5.0" y="14.9"/>
+        <datapoints x="10.0" y="14.0"/>
+        <datapoints x="15.0" y="19.2"/>
+        <datapoints x="20.0" y="22.2"/>
+        <datapoints x="35.0" y="28.5"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-20.0" y="7.5"/>
+        <datapoints x="-10.0" y="9.7"/>
+        <datapoints y="12.5"/>
+        <datapoints x="5.0" y="14.1"/>
+        <datapoints x="10.0" y="13.5"/>
+        <datapoints x="15.0" y="18.5"/>
+        <datapoints x="20.0" y="21.2"/>
+        <datapoints x="35.0" y="28.3"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="alira LWD 50A-HMD" revisionYear="2020" manufacturer="//@manufacturers.12" installedThermalPower="7.3 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="2.3"/>
+        <datapoints x="-10.0" y="3.0"/>
+        <datapoints y="3.6"/>
+        <datapoints x="5.0" y="4.4"/>
+        <datapoints x="10.0" y="5.0"/>
+        <datapoints x="15.0" y="5.6"/>
+        <datapoints x="20.0" y="6.3"/>
+        <datapoints x="35.0" y="8.0"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-20.0" y="1.5"/>
+        <datapoints x="-10.0" y="1.9"/>
+        <datapoints y="2.5"/>
+        <datapoints x="5.0" y="3.25"/>
+        <datapoints x="10.0" y="3.6"/>
+        <datapoints x="15.0" y="4.0"/>
+        <datapoints x="20.0" y="4.4"/>
+        <datapoints x="35.0" y="5.7"/>
+      </functions>
+      <functions key="65">
+        <datapoints y="2.0"/>
+        <datapoints x="5.0" y="2.3"/>
+        <datapoints x="10.0" y="2.55"/>
+        <datapoints x="15.0" y="2.75"/>
+        <datapoints x="20.0" y="3.0"/>
+        <datapoints x="35.0" y="4.0"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="3.2"/>
+        <datapoints x="-10.0" y="4.3"/>
+        <datapoints y="5.4"/>
+        <datapoints x="5.0" y="6.5"/>
+        <datapoints x="10.0" y="7.5"/>
+        <datapoints x="15.0" y="8.0"/>
+        <datapoints x="20.0" y="8.8"/>
+        <datapoints x="35.0" y="11.4"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-20.0" y="2.7"/>
+        <datapoints x="-10.0" y="3.8"/>
+        <datapoints y="5.0"/>
+        <datapoints x="5.0" y="6.1"/>
+        <datapoints x="10.0" y="6.9"/>
+        <datapoints x="15.0" y="7.4"/>
+        <datapoints x="20.0" y="8.2"/>
+        <datapoints x="35.0" y="11.0"/>
+      </functions>
+      <functions key="65">
+        <datapoints y="4.5"/>
+        <datapoints x="5.0" y="5.4"/>
+        <datapoints x="10.0" y="6.1"/>
+        <datapoints x="15.0" y="6.8"/>
+        <datapoints x="20.0" y="7.6"/>
+        <datapoints x="35.0" y="10.0"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="theoretical component with 0 kW to parametrize simulation templates that dont use this type of component for a specific simulation run" modelName="theoretical " revisionYear="2020" manufacturer="//@manufacturers.17" installedThermalPower="0 kW">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="0">
+        <datapoints/>
+        <datapoints/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="0">
+        <datapoints/>
+        <datapoints/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="F 2040-6" revisionYear="2018" manufacturer="//@manufacturers.18" installedThermalPower="6 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="1.5"/>
+        <datapoints x="-10.0" y="2.5"/>
+        <datapoints x="-7.0" y="2.55"/>
+        <datapoints x="-5.0" y="2.6"/>
+        <datapoints y="2.65"/>
+        <datapoints x="2.0" y="2.7"/>
+        <datapoints x="5.0" y="3.25"/>
+        <datapoints x="7.0" y="3.7"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="1.6"/>
+        <datapoints x="-10.0" y="2.0"/>
+        <datapoints x="-7.0" y="2.15"/>
+        <datapoints x="-5.0" y="2.2"/>
+        <datapoints y="2.3"/>
+        <datapoints x="2.0" y="2.4"/>
+        <datapoints x="5.0" y="2.8"/>
+        <datapoints x="7.0" y="3.3"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-20.0" y="1.4"/>
+        <datapoints x="-10.0" y="1.7"/>
+        <datapoints x="-7.0" y="1.8"/>
+        <datapoints x="-5.0" y="1.9"/>
+        <datapoints y="2.2"/>
+        <datapoints x="2.0" y="2.3"/>
+        <datapoints x="5.0" y="2.5"/>
+        <datapoints x="7.0" y="2.7"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="2.2"/>
+        <datapoints x="-10.0" y="4.9"/>
+        <datapoints x="-7.0" y="5.3"/>
+        <datapoints x="-5.0" y="5.2"/>
+        <datapoints y="4.3"/>
+        <datapoints x="2.0" y="4.4"/>
+        <datapoints x="5.0" y="6.5"/>
+        <datapoints x="7.0" y="7.4"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="3.4"/>
+        <datapoints x="-10.0" y="4.9"/>
+        <datapoints x="-7.0" y="5.3"/>
+        <datapoints x="-5.0" y="5.2"/>
+        <datapoints y="4.8"/>
+        <datapoints x="2.0" y="5.0"/>
+        <datapoints x="5.0" y="7.0"/>
+        <datapoints x="7.0" y="8.5"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-20.0" y="3.2"/>
+        <datapoints x="-10.0" y="4.2"/>
+        <datapoints x="-7.0" y="4.8"/>
+        <datapoints x="-5.0" y="4.9"/>
+        <datapoints y="4.9"/>
+        <datapoints x="2.0" y="5.0"/>
+        <datapoints x="5.0" y="6.4"/>
+        <datapoints x="7.0" y="7.3"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="F2120-20" revisionYear="2020" manufacturer="//@manufacturers.18" installedThermalPower="20 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-25.0" y="2.6"/>
+        <datapoints x="-20.0" y="2.8"/>
+        <datapoints x="-15.0" y="3.0"/>
+        <datapoints x="-10.0" y="3.4"/>
+        <datapoints x="-5.0" y="3.7"/>
+        <datapoints y="4.2"/>
+        <datapoints x="5.0" y="4.6"/>
+        <datapoints x="10.0" y="5.0"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-25.0" y="2.1"/>
+        <datapoints x="-20.0" y="2.3"/>
+        <datapoints x="-15.0" y="2.6"/>
+        <datapoints x="-10.0" y="2.8"/>
+        <datapoints x="-5.0" y="3.2"/>
+        <datapoints y="3.4"/>
+        <datapoints x="5.0" y="3.8"/>
+        <datapoints x="10.0" y="4.3"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-25.0" y="1.8"/>
+        <datapoints x="-20.0" y="2.0"/>
+        <datapoints x="-15.0" y="2.3"/>
+        <datapoints x="-10.0" y="2.4"/>
+        <datapoints x="-5.0" y="2.7"/>
+        <datapoints y="2.9"/>
+        <datapoints x="5.0" y="3.1"/>
+        <datapoints x="10.0" y="3.4"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-25.0" y="8.8"/>
+        <datapoints x="-20.0" y="10.2"/>
+        <datapoints x="-15.0" y="11.7"/>
+        <datapoints x="-10.0" y="13.1"/>
+        <datapoints x="-5.0" y="14.6"/>
+        <datapoints y="15.8"/>
+        <datapoints x="5.0" y="16.3"/>
+        <datapoints x="10.0" y="16.2"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-25.0" y="9.5"/>
+        <datapoints x="-20.0" y="10.9"/>
+        <datapoints x="-15.0" y="12.1"/>
+        <datapoints x="-10.0" y="13.7"/>
+        <datapoints x="-5.0" y="15.0"/>
+        <datapoints y="16.0"/>
+        <datapoints x="5.0" y="16.3"/>
+        <datapoints x="10.0" y="16.2"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-25.0" y="10.0"/>
+        <datapoints x="-20.0" y="11.4"/>
+        <datapoints x="-15.0" y="12.8"/>
+        <datapoints x="-10.0" y="14.2"/>
+        <datapoints x="-5.0" y="15.7"/>
+        <datapoints y="16.4"/>
+        <datapoints x="5.0" y="16.3"/>
+        <datapoints x="10.0" y="16.2"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="F2120-16" revisionYear="2020" manufacturer="//@manufacturers.18" installedThermalPower="16 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-25.0" y="2.5"/>
+        <datapoints x="-20.0" y="2.8"/>
+        <datapoints x="-15.0" y="3.0"/>
+        <datapoints x="-10.0" y="3.3"/>
+        <datapoints x="-5.0" y="3.7"/>
+        <datapoints y="4.0"/>
+        <datapoints x="5.0" y="4.5"/>
+        <datapoints x="10.0" y="5.0"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-25.0" y="2.0"/>
+        <datapoints x="-20.0" y="2.2"/>
+        <datapoints x="-15.0" y="2.5"/>
+        <datapoints x="-10.0" y="2.8"/>
+        <datapoints x="-5.0" y="3.1"/>
+        <datapoints y="3.4"/>
+        <datapoints x="5.0" y="3.8"/>
+        <datapoints x="10.0" y="4.2"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-25.0" y="1.8"/>
+        <datapoints x="-20.0" y="1.9"/>
+        <datapoints x="-15.0" y="2.2"/>
+        <datapoints x="-10.0" y="2.4"/>
+        <datapoints x="-5.0" y="2.6"/>
+        <datapoints y="2.8"/>
+        <datapoints x="5.0" y="3.0"/>
+        <datapoints x="10.0" y="3.4"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-25.0" y="7.5"/>
+        <datapoints x="-20.0" y="8.8"/>
+        <datapoints x="-15.0" y="9.8"/>
+        <datapoints x="-10.0" y="11.0"/>
+        <datapoints x="-5.0" y="12.0"/>
+        <datapoints y="12.8"/>
+        <datapoints x="5.0" y="13.2"/>
+        <datapoints x="10.0" y="13.1"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-25.0" y="8.0"/>
+        <datapoints x="-20.0" y="9.1"/>
+        <datapoints x="-15.0" y="10.2"/>
+        <datapoints x="-10.0" y="11.2"/>
+        <datapoints x="-5.0" y="12.3"/>
+        <datapoints y="13.0"/>
+        <datapoints x="5.0" y="13.2"/>
+        <datapoints x="10.0" y="13.1"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-25.0" y="8.3"/>
+        <datapoints x="-20.0" y="9.2"/>
+        <datapoints x="-15.0" y="10.5"/>
+        <datapoints x="-10.0" y="11.7"/>
+        <datapoints x="-5.0" y="12.7"/>
+        <datapoints y="13.3"/>
+        <datapoints x="5.0" y="13.2"/>
+        <datapoints x="10.0" y="13.1"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="WPL-S 18 HK 400 Premium" revisionYear="2020" manufacturer="//@manufacturers.20" installedThermalPower="21.1 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-19.0" y="2.6"/>
+        <datapoints x="-15.0" y="2.9"/>
+        <datapoints x="-5.0" y="3.7"/>
+        <datapoints y="4.0"/>
+        <datapoints x="5.0" y="4.5"/>
+        <datapoints x="11.0" y="4.9"/>
+        <datapoints x="15.0" y="5.3"/>
+        <datapoints x="25.0" y="5.6"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-19.0" y="2.2"/>
+        <datapoints x="-15.0" y="2.4"/>
+        <datapoints x="-5.0" y="3.1"/>
+        <datapoints y="3.4"/>
+        <datapoints x="5.0" y="3.8"/>
+        <datapoints x="11.0" y="4.3"/>
+        <datapoints x="15.0" y="4.5"/>
+        <datapoints x="25.0" y="4.75"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-19.0" y="2.1"/>
+        <datapoints x="-15.0" y="2.3"/>
+        <datapoints x="-5.0" y="2.8"/>
+        <datapoints y="3.2"/>
+        <datapoints x="5.0" y="3.4"/>
+        <datapoints x="11.0" y="3.9"/>
+        <datapoints x="15.0" y="4.2"/>
+        <datapoints x="25.0" y="4.4"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-19.0" y="12.8"/>
+        <datapoints x="-15.0" y="14.4"/>
+        <datapoints x="-5.0" y="18.5"/>
+        <datapoints y="22.7"/>
+        <datapoints x="5.0" y="24.0"/>
+        <datapoints x="11.0" y="29.0"/>
+        <datapoints x="15.0" y="30.7"/>
+        <datapoints x="25.0" y="33.0"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-19.0" y="13.1"/>
+        <datapoints x="-15.0" y="14.6"/>
+        <datapoints x="-5.0" y="18.5"/>
+        <datapoints y="20.5"/>
+        <datapoints x="5.0" y="23.6"/>
+        <datapoints x="11.0" y="28.5"/>
+        <datapoints x="15.0" y="30.2"/>
+        <datapoints x="25.0" y="32.3"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-19.0" y="13.4"/>
+        <datapoints x="-15.0" y="14.7"/>
+        <datapoints x="-5.0" y="18.4"/>
+        <datapoints y="20.3"/>
+        <datapoints x="5.0" y="23.4"/>
+        <datapoints x="11.0" y="28.4"/>
+        <datapoints x="15.0" y="30.0"/>
+        <datapoints x="25.0" y="32.0"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for inside" modelName="LI 24 TES" technicalLifetime="15.0" manufacturer="//@manufacturers.1" installedThermalPower="24 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="1.8"/>
+        <datapoints x="-10.0" y="2.4"/>
+        <datapoints y="3.0"/>
+        <datapoints x="5.0" y="3.5"/>
+        <datapoints x="10.0" y="3.8"/>
+        <datapoints x="15.0" y="4.4"/>
+        <datapoints x="30.0" y="5.6"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="1.6"/>
+        <datapoints x="-10.0" y="1.9"/>
+        <datapoints y="2.5"/>
+        <datapoints x="5.0" y="2.7"/>
+        <datapoints x="10.0" y="3.1"/>
+        <datapoints x="15.0" y="3.4"/>
+        <datapoints x="30.0" y="4.3"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-10.0" y="1.7"/>
+        <datapoints y="2.2"/>
+        <datapoints x="5.0" y="2.4"/>
+        <datapoints x="10.0" y="2.6"/>
+        <datapoints x="15.0" y="2.7"/>
+        <datapoints x="30.0" y="3.2"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="6.0"/>
+        <datapoints x="-10.0" y="7.5"/>
+        <datapoints y="10.0"/>
+        <datapoints x="5.0" y="12.0"/>
+        <datapoints x="10.0" y="13.5"/>
+        <datapoints x="15.0" y="15.5"/>
+        <datapoints x="30.0" y="20.5"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="6.0"/>
+        <datapoints x="-10.0" y="7.5"/>
+        <datapoints y="10.0"/>
+        <datapoints x="5.0" y="12.0"/>
+        <datapoints x="10.0" y="12.5"/>
+        <datapoints x="15.0" y="14.0"/>
+        <datapoints x="30.0" y="18.0"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-10.0" y="7.5"/>
+        <datapoints y="10.0"/>
+        <datapoints x="5.0" y="12.0"/>
+        <datapoints x="10.0" y="12.5"/>
+        <datapoints x="15.0" y="13.5"/>
+        <datapoints x="30.0" y="17.0"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="LA 28 TBS" technicalLifetime="15.0" manufacturer="//@manufacturers.1" installedThermalPower="28 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="2.0"/>
+        <datapoints x="-10.0" y="2.7"/>
+        <datapoints y="3.3"/>
+        <datapoints x="5.0" y="3.9"/>
+        <datapoints x="10.0" y="4.5"/>
+        <datapoints x="15.0" y="5.0"/>
+        <datapoints x="30.0" y="6.4"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="1.9"/>
+        <datapoints x="-10.0" y="2.1"/>
+        <datapoints y="2.8"/>
+        <datapoints x="5.0" y="3.25"/>
+        <datapoints x="10.0" y="3.6"/>
+        <datapoints x="15.0" y="4.0"/>
+        <datapoints x="30.0" y="5.3"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-20.0" y="1.5"/>
+        <datapoints x="-10.0" y="2.0"/>
+        <datapoints y="2.4"/>
+        <datapoints x="5.0" y="2.7"/>
+        <datapoints x="10.0" y="2.9"/>
+        <datapoints x="15.0" y="3.3"/>
+        <datapoints x="30.0" y="4.4"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="6.5"/>
+        <datapoints x="-10.0" y="8.5"/>
+        <datapoints y="12.0"/>
+        <datapoints x="5.0" y="13.5"/>
+        <datapoints x="10.0" y="16.0"/>
+        <datapoints x="15.0" y="18.0"/>
+        <datapoints x="30.0" y="24.0"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="6.5"/>
+        <datapoints x="-10.0" y="8.0"/>
+        <datapoints y="11.5"/>
+        <datapoints x="5.0" y="13.0"/>
+        <datapoints x="10.0" y="14.5"/>
+        <datapoints x="15.0" y="17.0"/>
+        <datapoints x="30.0" y="23.0"/>
+      </functions>
+      <functions key="55">
+        <datapoints x="-20.0" y="6.0"/>
+        <datapoints x="-10.0" y="8.0"/>
+        <datapoints y="10.5"/>
+        <datapoints x="5.0" y="12.0"/>
+        <datapoints x="10.0" y="13.5"/>
+        <datapoints x="15.0" y="16.0"/>
+        <datapoints x="30.0" y="22.0"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for inside use" modelName="OLWI 9" revisionYear="2019" manufacturer="//@manufacturers.2" installedThermalPower="9 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="2.4"/>
+        <datapoints x="-10.0" y="3.0"/>
+        <datapoints x="-5.0" y="3.3"/>
+        <datapoints y="3.7"/>
+        <datapoints x="10.0" y="4.6"/>
+        <datapoints x="15.0" y="4.9"/>
+        <datapoints x="20.0" y="5.3"/>
+        <datapoints x="25.0" y="5.1"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-20.0" y="1.8"/>
+        <datapoints x="-10.0" y="2.3"/>
+        <datapoints x="-5.0" y="2.6"/>
+        <datapoints y="2.9"/>
+        <datapoints x="10.0" y="3.4"/>
+        <datapoints x="15.0" y="3.8"/>
+        <datapoints x="20.0" y="4.0"/>
+        <datapoints x="25.0" y="4.2"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="4.6"/>
+        <datapoints x="-10.0" y="6.3"/>
+        <datapoints x="-5.0" y="6.8"/>
+        <datapoints y="7.8"/>
+        <datapoints x="10.0" y="9.5"/>
+        <datapoints x="15.0" y="11.1"/>
+        <datapoints x="20.0" y="12.2"/>
+        <datapoints x="25.0" y="12.6"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-20.0" y="4.8"/>
+        <datapoints x="-10.0" y="6.6"/>
+        <datapoints x="-5.0" y="7.3"/>
+        <datapoints y="7.8"/>
+        <datapoints x="10.0" y="8.9"/>
+        <datapoints x="15.0" y="10.7"/>
+        <datapoints x="20.0" y="11.7"/>
+        <datapoints x="25.0" y="12.2"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside use" modelName="AIR 7 C11A" revisionYear="2020" manufacturer="//@manufacturers.2" installedThermalPower="6.8 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="2.1"/>
+        <datapoints x="-10.0" y="3.0"/>
+        <datapoints x="-5.0" y="3.3"/>
+        <datapoints y="3.6"/>
+        <datapoints x="10.0" y="5.0"/>
+        <datapoints x="15.0" y="5.4"/>
+        <datapoints x="20.0" y="5.7"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="1.4"/>
+        <datapoints x="-10.0" y="2.1"/>
+        <datapoints x="-5.0" y="2.4"/>
+        <datapoints y="2.7"/>
+        <datapoints x="10.0" y="3.9"/>
+        <datapoints x="15.0" y="4.2"/>
+        <datapoints x="20.0" y="4.4"/>
+      </functions>
+      <functions key="60">
+        <datapoints x="-5.0" y="1.6"/>
+        <datapoints y="1.8"/>
+        <datapoints x="10.0" y="2.8"/>
+        <datapoints x="15.0" y="3.1"/>
+        <datapoints x="20.0" y="3.3"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-20.0" y="2.5"/>
+        <datapoints x="-10.0" y="3.7"/>
+        <datapoints x="-5.0" y="4.3"/>
+        <datapoints y="5.0"/>
+        <datapoints x="10.0" y="6.8"/>
+        <datapoints x="15.0" y="7.5"/>
+        <datapoints x="20.0" y="8.0"/>
+      </functions>
+      <functions key="45">
+        <datapoints x="-20.0" y="2.1"/>
+        <datapoints x="-10.0" y="3.25"/>
+        <datapoints x="-5.0" y="3.8"/>
+        <datapoints y="4.5"/>
+        <datapoints x="10.0" y="6.3"/>
+        <datapoints x="15.0" y="7.0"/>
+        <datapoints x="20.0" y="7.5"/>
+      </functions>
+      <functions key="60">
+        <datapoints x="-5.0" y="3.2"/>
+        <datapoints y="3.9"/>
+        <datapoints x="10.0" y="5.7"/>
+        <datapoints x="15.0" y="6.4"/>
+        <datapoints x="20.0" y="6.9"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="alira LW 310A-LUX 2.0" revisionYear="2020" manufacturer="//@manufacturers.12" installedThermalPower="19.4 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-10.0" y="2.7"/>
+        <datapoints x="-5.0" y="3.1"/>
+        <datapoints y="3.5"/>
+        <datapoints x="5.0" y="4.0"/>
+        <datapoints x="10.0" y="4.3"/>
+        <datapoints x="15.0" y="4.65"/>
+        <datapoints x="20.0" y="5.0"/>
+        <datapoints x="35.0" y="6.2"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-10.0" y="2.0"/>
+        <datapoints x="-5.0" y="2.3"/>
+        <datapoints y="2.6"/>
+        <datapoints x="5.0" y="2.9"/>
+        <datapoints x="10.0" y="3.2"/>
+        <datapoints x="15.0" y="3.5"/>
+        <datapoints x="20.0" y="3.75"/>
+        <datapoints x="35.0" y="4.4"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-10.0" y="12.0"/>
+        <datapoints x="-5.0" y="14.0"/>
+        <datapoints y="16.0"/>
+        <datapoints x="5.0" y="18.2"/>
+        <datapoints x="10.0" y="20.3"/>
+        <datapoints x="15.0" y="22.7"/>
+        <datapoints x="20.0" y="25.0"/>
+        <datapoints x="35.0" y="32.3"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-10.0" y="11.5"/>
+        <datapoints x="-5.0" y="13.5"/>
+        <datapoints y="15.5"/>
+        <datapoints x="5.0" y="17.7"/>
+        <datapoints x="10.0" y="19.8"/>
+        <datapoints x="15.0" y="22.2"/>
+        <datapoints x="20.0" y="24.5"/>
+        <datapoints x="35.0" y="31.3"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="AP CP 45a" revisionYear="2018" manufacturer="//@manufacturers.19" installedThermalPower="32.5 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="3.0"/>
+        <datapoints y="3.5"/>
+        <datapoints x="5.0" y="4.2"/>
+        <datapoints x="10.0" y="4.8"/>
+        <datapoints x="15.0" y="5.25"/>
+        <datapoints x="20.0" y="5.6"/>
+        <datapoints x="35.0" y="6.5"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-5.0" y="1.9"/>
+        <datapoints y="2.25"/>
+        <datapoints x="5.0" y="2.8"/>
+        <datapoints x="10.0" y="3.3"/>
+        <datapoints x="15.0" y="3.5"/>
+        <datapoints x="20.0" y="3.75"/>
+        <datapoints x="35.0" y="4.6"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="21.0"/>
+        <datapoints y="25.0"/>
+        <datapoints x="5.0" y="30.0"/>
+        <datapoints x="10.0" y="34.5"/>
+        <datapoints x="15.0" y="38.0"/>
+        <datapoints x="20.0" y="41.5"/>
+        <datapoints x="35.0" y="48.0"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-5.0" y="19.0"/>
+        <datapoints y="22.0"/>
+        <datapoints x="5.0" y="27.0"/>
+        <datapoints x="10.0" y="32.0"/>
+        <datapoints x="15.0" y="35.0"/>
+        <datapoints x="20.0" y="37.5"/>
+        <datapoints x="35.0" y="45.0"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="AIR 29 C12A" revisionYear="2020" manufacturer="//@manufacturers.2" installedThermalPower="25.9 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-17.0" y="2.75"/>
+        <datapoints x="-11.0" y="3.2"/>
+        <datapoints x="-5.0" y="3.7"/>
+        <datapoints x="-1.0" y="4.0"/>
+        <datapoints x="5.0" y="4.5"/>
+        <datapoints x="11.0" y="5.0"/>
+        <datapoints x="15.0" y="5.3"/>
+        <datapoints x="21.0" y="5.5"/>
+        <datapoints x="25.0" y="5.6"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-17.0" y="2.2"/>
+        <datapoints x="-11.0" y="2.5"/>
+        <datapoints x="-5.0" y="2.9"/>
+        <datapoints x="-1.0" y="3.2"/>
+        <datapoints x="5.0" y="3.45"/>
+        <datapoints x="11.0" y="3.9"/>
+        <datapoints x="15.0" y="4.2"/>
+        <datapoints x="21.0" y="4.4"/>
+        <datapoints x="25.0" y="4.45"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-17.0" y="13.6"/>
+        <datapoints x="-11.0" y="15.9"/>
+        <datapoints x="-5.0" y="18.4"/>
+        <datapoints x="-1.0" y="20.03"/>
+        <datapoints x="5.0" y="24.0"/>
+        <datapoints x="11.0" y="29.0"/>
+        <datapoints x="15.0" y="30.7"/>
+        <datapoints x="21.0" y="32.5"/>
+        <datapoints x="25.0" y="33.0"/>
+      </functions>
+      <functions key="50">
+        <datapoints x="-17.0" y="13.4"/>
+        <datapoints x="-11.0" y="16.1"/>
+        <datapoints x="-5.0" y="18.3"/>
+        <datapoints x="-1.0" y="19.8"/>
+        <datapoints x="5.0" y="23.4"/>
+        <datapoints x="11.0" y="28.4"/>
+        <datapoints x="15.0" y="29.9"/>
+        <datapoints x="21.0" y="31.5"/>
+        <datapoints x="25.0" y="32.0"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps description="for outside" modelName="WPL 130 AC" revisionYear="2020" manufacturer="//@manufacturers.20" installedThermalPower="75.6 kW" fuel="electricity">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="47.3"/>
+        <datapoints x="2.0" y="65.1"/>
+        <datapoints x="7.0" y="75.6"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-7.0" y="2.9"/>
+        <datapoints x="2.0" y="3.6"/>
+        <datapoints x="7.0" y="4.0"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="DS 5008 Ai ID09" manufacturer="//@manufacturers.24" installedThermalPower="7.06 kW" fuel="electricity" heatSource="ground">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="4.25"/>
+        <datapoints y="4.92"/>
+        <datapoints x="5.0" y="5.58"/>
+        <datapoints x="10.0" y="6.33"/>
+        <datapoints x="15.0" y="7.17"/>
+        <datapoints x="20.0" y="7.46"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="5.1"/>
+        <datapoints y="5.9"/>
+        <datapoints x="5.0" y="6.7"/>
+        <datapoints x="10.0" y="7.6"/>
+        <datapoints x="15.0" y="8.6"/>
+        <datapoints x="20.0" y="9.7"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="DS 5023.5Ai ID12" manufacturer="//@manufacturers.24" installedThermalPower="20.7 kW" fuel="electricity" heatSource="ground">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="4.25"/>
+        <datapoints y="4.83"/>
+        <datapoints x="5.0" y="5.47"/>
+        <datapoints x="10.0" y="6.0"/>
+        <datapoints x="15.0" y="6.73"/>
+        <datapoints x="20.0" y="7.54"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="15.3"/>
+        <datapoints y="17.4"/>
+        <datapoints x="5.0" y="19.7"/>
+        <datapoints x="10.0" y="22.2"/>
+        <datapoints x="15.0" y="24.9"/>
+        <datapoints x="20.0" y="27.9"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="Vitocal 300-G BWC 301.B10  " manufacturer="//@manufacturers.3" installedThermalPower="12.57 kW" fuel="electricity" heatSource="ground">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="4.38"/>
+        <datapoints y="5.0"/>
+        <datapoints x="2.0" y="5.31"/>
+        <datapoints x="10.0" y="6.59"/>
+        <datapoints x="25.0" y="9.64"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="9.02"/>
+        <datapoints y="10.36"/>
+        <datapoints x="2.0" y="10.99"/>
+        <datapoints x="10.0" y="13.51"/>
+        <datapoints x="25.0" y="19.86"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="Vitocal 300-G ID02" manufacturer="//@manufacturers.3" installedThermalPower="9.42 kW" fuel="electricity" heatSource="ground">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="4.12"/>
+        <datapoints y="4.72"/>
+        <datapoints x="2.0" y="5.06"/>
+        <datapoints x="10.0" y="6.57"/>
+        <datapoints x="25.0" y="9.58"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="6.68"/>
+        <datapoints y="7.64"/>
+        <datapoints x="2.0" y="8.14"/>
+        <datapoints x="10.0" y="10.18"/>
+        <datapoints x="25.0" y="14.76"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="SWC140 ID01" manufacturer="//@manufacturers.12" installedThermalPower="16.66 kW" fuel="electricity" heatSource="ground">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="3.63"/>
+        <datapoints y="4.48"/>
+        <datapoints x="5.0" y="5.07"/>
+        <datapoints x="10.0" y="5.49"/>
+        <datapoints x="15.0" y="5.95"/>
+        <datapoints x="20.0" y="6.29"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="11.8"/>
+        <datapoints y="13.81"/>
+        <datapoints x="5.0" y="15.87"/>
+        <datapoints x="10.0" y="17.85"/>
+        <datapoints x="15.0" y="19.51"/>
+        <datapoints x="20.0" y="21.7"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="TTF10, ID10,24,25,24" manufacturer="//@manufacturers.25" installedThermalPower="12.31 kW">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="4.27"/>
+        <datapoints y="4.93"/>
+        <datapoints x="5.0" y="5.53"/>
+        <datapoints x="10.0" y="6.48"/>
+        <datapoints x="15.0" y="7.38"/>
+        <datapoints x="20.0" y="8.21"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="8.88"/>
+        <datapoints y="10.3"/>
+        <datapoints x="5.0" y="11.66"/>
+        <datapoints x="10.0" y="13.28"/>
+        <datapoints x="15.0" y="14.84"/>
+        <datapoints x="20.0" y="16.51"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <heatPumps modelName="TTC 05 ID20,22,23" manufacturer="//@manufacturers.25" installedThermalPower="6.83 kW" fuel="electricity" heatSource="ground">
+    <coefficientOfPerformance xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="4.17"/>
+        <datapoints y="4.83"/>
+        <datapoints x="5.0" y="5.41"/>
+        <datapoints x="10.0" y="5.89"/>
+        <datapoints x="15.0" y="6.45"/>
+        <datapoints x="20.0" y="6.92"/>
+      </functions>
+    </coefficientOfPerformance>
+    <heatOutput xsi:type="encomp:TableCharacteristic">
+      <functions key="35">
+        <datapoints x="-5.0" y="5.0"/>
+        <datapoints y="5.8"/>
+        <datapoints x="5.0" y="6.55"/>
+        <datapoints x="10.0" y="7.25"/>
+        <datapoints x="15.0" y="8.0"/>
+        <datapoints x="20.0" y="8.65"/>
+      </functions>
+    </heatOutput>
+  </heatPumps>
+  <thermalStorages modelName="Vitocell 100-E, Typ SVPA, 400l" revisionYear="2019" manufacturer="//@manufacturers.3" volume="0.4 ㎥" maxTemp="110 ℃" insulationThickness="209 mm" usesMedium="//@media.0" height="1.6 m"/>
+  <thermalStorages modelName="EPS 120 " revisionYear="2019" manufacturer="//@manufacturers.13" volume="0.12 ㎥" maxTemp="110 ℃" insulationThickness="75 mm" usesMedium="//@media.0" height="1.425 m"/>
+  <thermalStorages modelName="PS-T 1500" revisionYear="2020" manufacturer="//@manufacturers.14" volume="1.5 ㎥" maxTemp="95 ℃" usesMedium="//@media.0" height="2.35 m"/>
+  <thermalStorages modelName="EPS-1W 2000" revisionYear="2019" manufacturer="//@manufacturers.13" volume="1.908 ㎥" maxTemp="110 ℃" insulationThickness="120 mm" usesMedium="//@media.0" height="2.2 m"/>
+  <thermalStorages modelName="Standard Plus 3000" revisionYear="2020" manufacturer="//@manufacturers.15" volume="3 ㎥" usesMedium="//@media.0"/>
+  <thermalStorages modelName="Oskar 10" revisionYear="2020" manufacturer="//@manufacturers.16" volume="4 ㎥" maxTemp="95 ℃" usesMedium="//@media.0"/>
+  <thermalStorages description="theoretical component with 0 m3 to parametrize simulation templates that dont use this type of component for a specific simulation run" modelName="theoretical " revisionYear="2020" manufacturer="//@manufacturers.17" volume="0 ㎥" maxTemp="110 ℃" usesMedium="//@media.0"/>
+  <thermalStorages modelName="EPS 5000" revisionYear="2019" manufacturer="//@manufacturers.13" maxTemp="110 ℃" tankThickness="5 mm" usesMedium="//@media.0"/>
+  <thermalStorages modelName="PS 5000" revisionYear="2020" manufacturer="//@manufacturers.14" maxTemp="95 ℃" usesMedium="//@media.0"/>
+  <powerStorages modelName="theoretical battery 1" revisionYear="2020" manufacturer="//@manufacturers.17" batteryCapacity="20 A·h" batteryVoltage="12 V"/>
+  <powerStorages modelName="theoretical battery 2" revisionYear="2020" manufacturer="//@manufacturers.17" batteryCapacity="300 A·h" batteryVoltage="12 V"/>
+  <fossilFuels co2EmissionsFactor="0.202 t/(MW·h)" primaryEnergyFactor="1.1" name="H-Gas (high [calorific] gas)" netCalorificValue="11.25 kW·h/m³" grossCalorificValue="12.5 kW·h/m³" density="0.7 kg/m³"/>
+  <fossilFuels co2EmissionsFactor="0.202 t/(MW·h)" primaryEnergyFactor="1.1" name="L-Gas (low [calorific] gas" netCalorificValue="8.1 kW·h/m³" grossCalorificValue="9 kW·h/m³" density="0.84 kg/m³"/>
+  <manufacturers manufacturerName="Buderus" country="Germany"/>
+  <manufacturers manufacturerName="Dimplex" country="Germany"/>
+  <manufacturers manufacturerName="OCHSNER" country="Germany"/>
+  <manufacturers manufacturerName="Viessmann" country="Germany"/>
+  <manufacturers manufacturerName="Frisquet" country="France"/>
+  <manufacturers manufacturerName="Wolf" country="Germany"/>
+  <manufacturers manufacturerName="GIESE Energie- und Regeltechnik GmbH" country="Germany"/>
+  <manufacturers manufacturerName="kraftwerk Kraft-Wärme-Kopplung GmbH" country="Germany"/>
+  <manufacturers manufacturerName="Bosch" country="Germany"/>
+  <manufacturers manufacturerName="Motoren AT GmbH" country="Germany"/>
+  <manufacturers manufacturerName="COMUNA-metall GmbH" country="Germany"/>
+  <manufacturers manufacturerName="Höfler Blockheizkraftwerke" country="Germany"/>
+  <manufacturers manufacturerName="alpha innotec" country="Germany"/>
+  <manufacturers manufacturerName="thermic energy" country="Germany"/>
+  <manufacturers manufacturerName="Flamco" country="Germany"/>
+  <manufacturers manufacturerName="Sirch" country="Germany"/>
+  <manufacturers manufacturerName="ratiotherm" country="Germany"/>
+  <manufacturers manufacturerName="none - theoretical component"/>
+  <manufacturers manufacturerName="NIBE" country="Sweden"/>
+  <manufacturers manufacturerName="CTA" country="Switzerland"/>
+  <manufacturers manufacturerName="Stiebel Eltron" country="Germany"/>
+  <manufacturers manufacturerName="Vaillant" country="Germany"/>
+  <manufacturers manufacturerName="Junkers" country="Germany"/>
+  <manufacturers manufacturerName="Laars" country="USA"/>
+  <manufacturers manufacturerName="Watterkotte" country="Germany"/>
+  <manufacturers manufacturerName="Tecalor" country="Germany"/>
+  <materials thermalConductivity="0.5 W/(K·m)" name="Steel"/>
+  <materials thermalConductivity="0.025 W/(K·m)" name="PUR"/>
+  <energycomponentscostcatalog author="HFT_Stuttgart" revisionYear="2020">
+    <costCategories componentName="CombinedHeatPower" description="investment cost for CHP module" heatSource="biogas" datasource="ASUE BHKW Kenndaten 2014/15 for investment cost, VDI 2067 for personnel, maintenance and administration cost" otherInvestmentCost="0.64" personnelHours="0 h" personnelCostShare="0.03">
+      <investmentCost xsi:type="encomp:PowerCharacteristic">
+        <functions key="11-100 kW" parameterA="10267.0" parameterB="-0.497"/>
+        <functions key="101-1000 kW" parameterA="4276.0" parameterB="-0.325"/>
+        <functions key="> 1000 kW" parameterA="1001.1" parameterB="-0.117"/>
+      </investmentCost>
+    </costCategories>
+    <costCategories componentName="CombinedHeatPower" description="investment cost for CHP module" datasource="ASUE BHKW Kenndaten 2014/15 for investment cost, VDI 2067 for personnel, maintenance and administration cost" otherInvestmentCost="0.64" personnelHours="0 h" personnelCostShare="0.03">
+      <investmentCost xsi:type="encomp:PowerCharacteristic">
+        <functions key="&lt; 10 kW" parameterA="9585.0" parameterB="-0.542"/>
+        <functions key="101-1000 kW" parameterA="4907.0" parameterB="-0.352"/>
+        <functions key="11-100 kW" parameterA="5438.0" parameterB="-0.351"/>
+        <functions key="> 1001 kW" parameterA="460.89" parameterB="-0.015"/>
+      </investmentCost>
+    </costCategories>
+  </energycomponentscostcatalog>
+</encomp:EnergyComponentsCatalog>
diff --git a/de.hftstuttgart.energycomponents.application/.classpath b/de.hftstuttgart.energycomponents.application/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..751c8f2e504c40d1c41ebbd87d8f8968529e9c30
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/de.hftstuttgart.energycomponents.application/.project b/de.hftstuttgart.energycomponents.application/.project
new file mode 100644
index 0000000000000000000000000000000000000000..306ac6bba4ceea3009036ccbad5ba9b20e23a114
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.energycomponents.application</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.energycomponents.application/Application.e4xmi b/de.hftstuttgart.energycomponents.application/Application.e4xmi
new file mode 100644
index 0000000000000000000000000000000000000000..6b960af16bd4af0a9a24982a0ec6b76d94e0dca1
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/Application.e4xmi
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_6wlLcMgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.application" bindingContexts="_6wlLecgZEeSyMNYR5xypkQ">
+  <children xsi:type="basic:TrimmedWindow" xmi:id="_6wlLccgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.window.main" label="Energy Components Catalog" width="500" height="400">
+    <mainMenu xmi:id="_6wlLicgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.main.menu">
+      <children xsi:type="menu:Menu" xmi:id="_6wlLisgZEeSyMNYR5xypkQ" elementId="file" label="File">
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLi8gZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handleditem.file.new" label="New" iconURI="" command="_CqNHQBeZEeudKqin_4DG9g"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_RhHRIBeZEeudKqin_4DG9g" elementId="de.hftstuttgart.energycomponents.app.handleditem.file.open" label="Open" iconURI="platform:/plugin/de.hftstuttgart.energycomponents.app/icons/open_in_app.png" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjMgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handleditem.save" label="Save" iconURI="platform:/plugin/de.hftstuttgart.energycomponents.app/icons/save_edit.png" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjcgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handleditem.quit" label="Quit" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
+      </children>
+      <children xsi:type="menu:Menu" xmi:id="_6wlLjsgZEeSyMNYR5xypkQ" elementId="help" label="Help">
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLj8gZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handleditem.about" label="About" command="_6wlLhsgZEeSyMNYR5xypkQ"/>
+      </children>
+    </mainMenu>
+    <trimBars xmi:id="_6wlLlcgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.trimbar.top">
+      <children xsi:type="menu:ToolBar" xmi:id="_6wlLlsgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.main.toolbar">
+        <children xsi:type="menu:HandledToolItem" xmi:id="_hhBDYBeZEeudKqin_4DG9g" elementId="de.hftstuttgart.energycomponents.app.handleditem.trimbar.top.open" label="New" iconURI="" command="_CqNHQBeZEeudKqin_4DG9g"/>
+        <children xsi:type="menu:HandledToolItem" xmi:id="_6wlLl8gZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handleditem.trimbar.top.open" iconURI="platform:/plugin/de.hftstuttgart.energycomponents.app/icons/open_in_app.png" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+        <children xsi:type="menu:HandledToolItem" xmi:id="_6wlLmMgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handleditem.trimbar.top.save" iconURI="platform:/plugin/de.hftstuttgart.energycomponents.app/icons/save_edit.png" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+      </children>
+    </trimBars>
+  </children>
+  <handlers xmi:id="_Fn8DsBeZEeudKqin_4DG9g" elementId="de.hftstuttgart.energycomponents.app.handler.newCommand" contributionURI="bundleclass://de.hftstuttgart.energycomponents.app/de.hftstuttgart.energycomponents.app.handlers.NewHandler" command="_CqNHQBeZEeudKqin_4DG9g"/>
+  <handlers xmi:id="_6wlLgcgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handler.openCommand" contributionURI="bundleclass://de.hftstuttgart.energycomponents.app/de.hftstuttgart.energycomponents.app.handlers.OpenHandler" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+  <handlers xmi:id="_6wlLhMgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handler.saveCommand" contributionURI="bundleclass://de.hftstuttgart.energycomponents.app/de.hftstuttgart.energycomponents.app.handlers.SaveHandler" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+  <handlers xmi:id="_6wlLh8gZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handler.aboutCommand" contributionURI="bundleclass://de.hftstuttgart.energycomponents.app/de.hftstuttgart.energycomponents.app.handlers.AboutHandler" command="_6wlLhsgZEeSyMNYR5xypkQ"/>
+  <handlers xmi:id="_6wlLfcgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.handler.quitCommand" contributionURI="bundleclass://de.hftstuttgart.energycomponents.app/de.hftstuttgart.energycomponents.app.handlers.QuitHandler" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
+  <bindingTables xmi:id="_6wlLfsgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.bindingtable" bindingContext="_6wlLecgZEeSyMNYR5xypkQ">
+    <bindings xmi:id="_6wlLf8gZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.keybinding.m1q" keySequence="M1+Q" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
+    <bindings xmi:id="_6wlLgsgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.keybinding.m1o" keySequence="M1+O" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+    <bindings xmi:id="_6wlLhcgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.keybinding.m1s" keySequence="M1+S" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+    <bindings xmi:id="_6wlLiMgZEeSyMNYR5xypkQ" elementId="de.hftstuttgart.energycomponents.app.keybinding.m1a" keySequence="M1+A" command="_6wlLhsgZEeSyMNYR5xypkQ"/>
+  </bindingTables>
+  <rootContext xmi:id="_6wlLecgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
+    <children xmi:id="_6wlLesgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
+    <children xmi:id="_6wlLe8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+  </rootContext>
+  <descriptors xmi:id="_JPM6kBdzEeuSnr5xc-g2BA" elementId="de.hftstuttgart.energycomponents.app.partdescriptor.catalog" iconURI="platform:/plugin/de.hftstuttgart.energycomponents.app/icons/home.png" allowMultiple="true" closeable="true" contributionURI="bundleclass://de.hftstuttgart.energycomponents.app/de.hftstuttgart.energycomponents.app.parts.CatalogPart"/>
+  <commands xmi:id="_CqNHQBeZEeudKqin_4DG9g" elementId="org.eclipse.ui.file.new" commandName="newCommand"/>
+  <commands xmi:id="_6wlLgMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.open" commandName="openCommand"/>
+  <commands xmi:id="_6wlLg8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.save" commandName="saveCommand"/>
+  <commands xmi:id="_6wlLhsgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.help.aboutAction" commandName="aboutCommand"/>
+  <commands xmi:id="_6wlLfMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.exit" commandName="quitCommand"/>
+  <addons xmi:id="_6wlLcsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+  <addons xmi:id="_6wlLc8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+  <addons xmi:id="_6wlLdMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+  <addons xmi:id="_6wlLdcgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+  <addons xmi:id="_6wlLdsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
+  <addons xmi:id="_6wlLd8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+  <addons xmi:id="_6wlLeMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+</application:Application>
diff --git a/de.hftstuttgart.energycomponents.application/META-INF/MANIFEST.MF b/de.hftstuttgart.energycomponents.application/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..20bb471d7000866c75a7f0f4c0e0bd2014283ad8
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/META-INF/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Energy Components Catalog App
+Bundle-SymbolicName: de.hftstuttgart.energycomponents.app;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: HfT Stuttgart
+Require-Bundle: javax.inject;bundle-version="1.0.0",
+ org.eclipse.core.runtime;bundle-version="[3.9.100,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="0.0.0",
+ org.eclipse.swt;bundle-version="[3.102.1,4.0.0)",
+ org.eclipse.e4.ui.model.workbench;bundle-version="[1.0.1,3.0.0)",
+ org.eclipse.jface;bundle-version="[3.9.1,4.0.0)",
+ org.eclipse.e4.ui.services;bundle-version="[1.0.1,2.0.0)",
+ org.eclipse.e4.ui.workbench;bundle-version="[1.0.2,2.0.0)",
+ org.eclipse.e4.core.di;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.e4.ui.di;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.1,2.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="0.0.0",
+ org.eclipse.emf.ecp.ui.view;bundle-version="0.0.0",
+ de.hftstuttgart.energycomponents;bundle-version="0.0.0",
+ de.hftstuttgart.energycomponents.edit;bundle-version="0.0.0",
+ de.hftstuttgart.energycomponents.viewmodel;bundle-version="0.0.0",
+ de.hftstuttgart.indriya.osgiplugin;bundle-version="0.0.0",
+ de.hftstuttgart.units;bundle-version="0.0.0",
+ de.hftstuttgart.units.ui.renderer;bundle-version="0.0.0"
+Import-Package: javax.annotation;version="1.3.5"
+Automatic-Module-Name: de.hftstuttgart.energycomponents.app
+Export-Package: de.hftstuttgart.energycomponents.app.handlers,
+ de.hftstuttgart.energycomponents.app.parts;x-internal:=true
diff --git a/de.hftstuttgart.energycomponents.application/build.properties b/de.hftstuttgart.energycomponents.application/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..04ab1e9b8f3cd4339dc61f93907610aecbd48895
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/,\
+               css/default.css,\
+               Application.e4xmi
diff --git a/de.hftstuttgart.energycomponents.application/css/default.css b/de.hftstuttgart.energycomponents.application/css/default.css
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/de.hftstuttgart.energycomponents.application/de.hftstuttgart.energycomponents.app.product b/de.hftstuttgart.energycomponents.application/de.hftstuttgart.energycomponents.app.product
new file mode 100644
index 0000000000000000000000000000000000000000..e8924e48d4c691fdcaaa12be32f483813cf3b2ad
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/de.hftstuttgart.energycomponents.app.product
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="Energy Components Catalog" uid="de.hftstuttgart.energycomponents.app.product" id="de.hftstuttgart.energycomponents.app.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="true">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher name="EnergCatalog">
+      <macosx icon="/de.hftstuttgart.energycomponents.app/icons/cyberduck-application.icns"/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-14</macos>
+   </vm>
+
+   <plugins>
+   </plugins>
+
+   <features>
+      <feature id="de.hftstuttgart.energycomponents.feature"/>
+      <feature id="org.eclipse.e4.rcp"/>
+      <feature id="org.eclipse.emf.ecp.emfforms.runtime.feature"/>
+      <feature id="org.eclipse.emf.common"/>
+      <feature id="org.eclipse.emf.common.ui"/>
+      <feature id="org.eclipse.emf.databinding"/>
+      <feature id="org.eclipse.emf.databinding.edit"/>
+      <feature id="org.eclipse.emf.ecore"/>
+      <feature id="org.eclipse.emf.ecore.edit"/>
+      <feature id="org.eclipse.emf.edit"/>
+      <feature id="org.eclipse.emf.edit.ui"/>
+   </features>
+
+
+   <preferencesInfo>
+      <targetfile overwrite="false"/>
+   </preferencesInfo>
+
+   <cssInfo>
+   </cssInfo>
+
+</product>
diff --git a/de.hftstuttgart.energycomponents.application/icons/home.png b/de.hftstuttgart.energycomponents.application/icons/home.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9ace41c655fcbe6450482aa21e4de88f6905b04
Binary files /dev/null and b/de.hftstuttgart.energycomponents.application/icons/home.png differ
diff --git a/de.hftstuttgart.energycomponents.application/icons/open_in_app.png b/de.hftstuttgart.energycomponents.application/icons/open_in_app.png
new file mode 100644
index 0000000000000000000000000000000000000000..9df4eeb7c3b8e6d1ff41f77b6032062a0edb4695
Binary files /dev/null and b/de.hftstuttgart.energycomponents.application/icons/open_in_app.png differ
diff --git a/de.hftstuttgart.energycomponents.application/icons/save_edit.png b/de.hftstuttgart.energycomponents.application/icons/save_edit.png
new file mode 100644
index 0000000000000000000000000000000000000000..b17caf5a984540e8b1448057feeecc5183c58eaa
Binary files /dev/null and b/de.hftstuttgart.energycomponents.application/icons/save_edit.png differ
diff --git a/de.hftstuttgart.energycomponents.application/plugin.xml b/de.hftstuttgart.energycomponents.application/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..19971305fbbf9e0ff91c5365d65ba254bf7388c5
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         id="product"
+         point="org.eclipse.core.runtime.products">
+      <product
+            application="org.eclipse.e4.ui.workbench.swt.E4Application"
+            name="Energy Components Catalog">
+         <property
+               name="appName"
+               value="Energy Components Catalog">
+         </property>
+      </product>
+   </extension>
+
+</plugin>
diff --git a/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/AboutHandler.java b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/AboutHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..806a7acba0daebb04ff301fbfa67eae07cd8b9e1
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/AboutHandler.java
@@ -0,0 +1,12 @@
+package de.hftstuttgart.energycomponents.app.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class AboutHandler {
+	@Execute
+	public void execute(Shell shell) {
+		MessageDialog.openInformation(shell, "About", "Energy Components Catalog");
+	}
+}
diff --git a/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/HandlerUtils.java b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/HandlerUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..6612f50b4b32a4f86644a89d4db3bb19e808c06a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/HandlerUtils.java
@@ -0,0 +1,50 @@
+package de.hftstuttgart.energycomponents.app.handlers;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+
+class HandlerUtils {
+	static final String CATALOG_PARTDESCRIPTOR_ID = "de.hftstuttgart.energycomponents.app.partdescriptor.catalog";
+	
+	public static String openFileDialog(Shell shell) {
+		return invokeFileDialog(new FileDialog(shell, SWT.OPEN));
+	}
+
+	public static String newFileDialog(Shell shell) {
+		return invokeFileDialog(new FileDialog(shell, SWT.SAVE));
+	}
+
+	private static String invokeFileDialog(FileDialog dialog) {
+		dialog.setFilterPath(System.getProperty("user.home"));
+		dialog.setFilterNames(new String [] {"Energy Component Catalog", "All Files (*)"});
+		dialog.setFilterExtensions(new String [] {"*.encomp", "*"});
+		return dialog.open();
+	}
+	
+	static void createNewPartWithCatalog(IEclipseContext context, EPartService partService, Resource energyCatalogResource) {		
+		context.set(Resource.class, energyCatalogResource);
+		MPart catalogPart = partService.createPart(CATALOG_PARTDESCRIPTOR_ID);
+		catalogPart.setDirty(true); // must listen to adapter!
+		catalogPart.setLabel(energyCatalogResource.getURI().lastSegment());
+		partService.showPart(catalogPart, PartState.ACTIVATE);
+	}
+	
+	static AdapterFactoryEditingDomain createEditingDomain() {
+		final AdapterFactory composedAdapterFactory = new ComposedAdapterFactory(
+				ComposedAdapterFactory.Descriptor.Registry.INSTANCE); // no dispose required?
+		final AdapterFactoryEditingDomain domain = new AdapterFactoryEditingDomain(composedAdapterFactory,
+				new BasicCommandStack());
+		return domain;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/NewHandler.java b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/NewHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..a5ba76df2316084a048da160d5e0296b13279c2c
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/NewHandler.java
@@ -0,0 +1,53 @@
+package de.hftstuttgart.energycomponents.app.handlers;
+
+import java.io.IOException;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.swt.widgets.Shell;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+public class NewHandler {
+
+	@Execute
+	public void execute(MApplication application, @Named(IServiceConstants.ACTIVE_SHELL) Shell shell,
+			EPartService partService) {
+
+		final String pathToNewCatalog = HandlerUtils.newFileDialog(shell);
+
+		if (pathToNewCatalog != null) {
+			// create new catalog with resource at above path
+			final AdapterFactoryEditingDomain domain = HandlerUtils.createEditingDomain();
+			
+			final Resource energyCatalogResource = (XMLResource)domain.createResource("file://" + pathToNewCatalog);
+			
+			// assume default XMI factory was used to create an XML resource
+			if (energyCatalogResource instanceof XMLResource) {
+				((XMLResource)energyCatalogResource).setEncoding("UTF-8");
+			}
+			
+			final EObject energyCatalog = EcoreUtil.create(EnCompPackage.eINSTANCE.getEnergyComponentsCatalog());
+			energyCatalogResource.getContents().add(energyCatalog);
+
+			// store new (empty) resource at selected path
+			try {
+				energyCatalogResource.save(null);
+			} catch (IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+
+			HandlerUtils.createNewPartWithCatalog(application.getContext(), partService, energyCatalogResource);
+		}
+	}
+}
\ No newline at end of file
diff --git a/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/OpenHandler.java b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/OpenHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc37d08e0cf06efce8292db8842ae5f796942890
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/OpenHandler.java
@@ -0,0 +1,33 @@
+package de.hftstuttgart.energycomponents.app.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.swt.widgets.Shell;
+
+import de.hftstuttgart.energycomponents.EnergyComponentsCatalog;
+
+public class OpenHandler {
+	@Execute
+	public void execute(MApplication application, @Named(IServiceConstants.ACTIVE_SHELL) Shell shell,
+			EPartService partService) {
+
+		final String pathToCatalog = HandlerUtils.openFileDialog(shell);
+
+		if (pathToCatalog != null) {
+			final AdapterFactoryEditingDomain domain = HandlerUtils.createEditingDomain();
+			System.out.println("Open catalog: " + pathToCatalog);
+			final Resource energyCatalogResource = domain.loadResource("file://" + pathToCatalog);
+			HandlerUtils.createNewPartWithCatalog(application.getContext(), partService, energyCatalogResource);
+		}
+	}
+}
\ No newline at end of file
diff --git a/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/QuitHandler.java b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/QuitHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..5f8fd01df8d4426f65635eadf03d37ce7fb6fe6e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/QuitHandler.java
@@ -0,0 +1,17 @@
+package de.hftstuttgart.energycomponents.app.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+
+public class QuitHandler {
+	@Execute
+	public void execute(IWorkbench workbench, Shell shell){
+		if (MessageDialog.openConfirm(shell, "Confirmation",
+				"Do you want to exit?")) {
+			workbench.close();
+		}
+	}
+}
diff --git a/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/SaveHandler.java b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/SaveHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb9e7871007f3fca9aa1bdb8431aa471f32bf804
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/handlers/SaveHandler.java
@@ -0,0 +1,26 @@
+package de.hftstuttgart.energycomponents.app.handlers;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+
+public class SaveHandler {
+	@CanExecute
+	public boolean canExecute(EPartService partService) {
+		// TODO isDirty() is not updated yet.
+		if (partService != null) {
+		MPart catalogPart = partService.findPart(HandlerUtils.CATALOG_PARTDESCRIPTOR_ID);
+			return catalogPart != null && catalogPart.isDirty();
+		}
+		return false;
+	}
+
+	@Execute
+	public void execute(EPartService partService) {	
+		MPart activeCatalog = partService.getActivePart();
+		if (activeCatalog != null) {
+			partService.savePart(activeCatalog, false);
+		}
+	}
+}
\ No newline at end of file
diff --git a/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/parts/CatalogPart.java b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/parts/CatalogPart.java
new file mode 100644
index 0000000000000000000000000000000000000000..f90d3b1ba15307257f7eed69d1cc6b6d13c09845
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/de/hftstuttgart/energycomponents/app/parts/CatalogPart.java
@@ -0,0 +1,65 @@
+package de.hftstuttgart.energycomponents.app.parts;
+
+import java.io.IOException;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.e4.ui.di.Persist;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.ui.view.ECPRendererException;
+import org.eclipse.emf.ecp.ui.view.swt.ECPSWTViewRenderer;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyComponentsCatalog;
+
+/**
+ * Part for displaying a Forms Editor for an EnergyComponentsCatalog.
+ * See https://www.vogella.com/tutorials/Eclipse4Services/article.html#implementing-editor-like-behavior
+ * Reuse ECPModelView? https://www.eclipse.org/forums/index.php/t/1070750/
+ */
+//TODO: Selection context/adapter for MPart to enable/disable Save command
+//TODO: Update Dirty state of MPart
+//TODO: resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("encomp", new  XMIResourceFactoryImpl());
+//TODO: Resource energyCatalogResource = resourceSet.getResource(URI.createURI("file://" + pathToCatalog), true);
+
+public class CatalogPart {
+	private Resource energyCatalogResource;
+	
+	@PostConstruct
+	public void createComposite(MApplication application, Composite parent) {
+		energyCatalogResource = application.getContext().get(Resource.class);
+		EObject energyCatalog = energyCatalogResource.getContents().get(0);
+		try {
+			final Composite content = new Composite(parent, SWT.NONE);
+			content.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+			content.setLayout(GridLayoutFactory.fillDefaults().margins(10, 10).create());
+			ECPSWTViewRenderer.INSTANCE.render(content, energyCatalog);
+			content.layout();
+		} catch (final ECPRendererException e) {
+			e.printStackTrace();
+		}
+		parent.layout();
+	}
+	
+	@Persist
+	public void save() {
+		System.out.println("Saved " + energyCatalogResource);
+		try {
+			energyCatalogResource.save(null);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/de.hftstuttgart.energycomponents.application/src/implementation.adoc b/de.hftstuttgart.energycomponents.application/src/implementation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..30b855409787a91fa683c883b9a3c75bad890fc3
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/implementation.adoc
@@ -0,0 +1,23 @@
+= Energy Components Library - Implementation
+
+== Components and Features
+
+* Ecore Data Model (automatic creation of Java classes with XML serialization/deserialization)
+* EMF Forms for UI generation
+* Units
+
+== Code Generation
+
+Custom code marked with `@generated NOT` in `de.hftstuttgart.energycomponents.provider` in project `de.hftstuttgart.energycomponents.edit`
+for creating custom UI labels:
+
+* `ExponentialFunctionItemProvider.java`
+* `LinearFunctionItemProvider.java`
+* `TableFunctionItemProvider.java`
+
+
+== Derived References (and Attributes)
+
+There are no derived references or attributes by now. But if one has to implement some by providing a getter, it is necessary
+to return an unmodifiable list like BasicEList.UnmodifiableEList or EcoreUtil.unmodifiableList(...) instead of EList 
+as described here: https://www.ntnu.no/wiki/plugins/servlet/mobile?contentId=112269388#content/view/112269388 .
\ No newline at end of file
diff --git a/de.hftstuttgart.energycomponents.application/src/usage.adoc b/de.hftstuttgart.energycomponents.application/src/usage.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..02149c9feff7c00b77e29e10049f1e8c548919cd
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.application/src/usage.adoc
@@ -0,0 +1,7 @@
+= Energy Components Library - Usage
+
+== Features
+
+* Ecore Data Model (automatic creation of Java classes with XML serialization/deserialization
+* EMF Forms for UI generation
+* Units
diff --git a/de.hftstuttgart.energycomponents.edit/.classpath b/de.hftstuttgart.energycomponents.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..8e001f780d1583ea6dde810158da647d3cc15a56
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/de.hftstuttgart.energycomponents.edit/.project b/de.hftstuttgart.energycomponents.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..af0b502fb91da5e16e41cb9c6bfb0675d9825a48
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.energycomponents.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.energycomponents.edit/META-INF/MANIFEST.MF b/de.hftstuttgart.energycomponents.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..941e6ee22d8c03353ba273eb81ea09df63eab4ca
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: de.hftstuttgart.energycomponents.edit;singleton:=true
+Automatic-Module-Name: de.hftstuttgart.energycomponents.edit
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: de.hftstuttgart.energycomponents.provider.EnergyComponentsEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: de.hftstuttgart.energycomponents.provider
+Require-Bundle: org.eclipse.core.runtime,
+ de.hftstuttgart.energycomponents;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ de.hftstuttgart.units;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/de.hftstuttgart.energycomponents.edit/build.properties b/de.hftstuttgart.energycomponents.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a3c4e32afd5c06df8bd4f0d371e56479e0822559
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/BioFuel.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/BioFuel.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1e5345fb3237c2f6eabcee2dbe44a371b49d8379
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/BioFuel.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Boiler.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Boiler.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Boiler.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Characteristic.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Characteristic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Characteristic.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ChemicalEnergyDevice.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ChemicalEnergyDevice.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ef56c140853105ca812564e9b12a76413c8c3fb9
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ChemicalEnergyDevice.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/CombinedHeatPower.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/CombinedHeatPower.gif
new file mode 100644
index 0000000000000000000000000000000000000000..db7414e937292c344d6fd0d0805085b67650f5c8
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/CombinedHeatPower.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Cost.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Cost.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Cost.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/DataPoint.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/DataPoint.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/DataPoint.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/DoubleToFunctionMap.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/DoubleToFunctionMap.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/DoubleToFunctionMap.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ElectricalStorage.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ElectricalStorage.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ElectricalStorage.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Electricity.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Electricity.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Electricity.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Electrolyzer.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Electrolyzer.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Electrolyzer.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyCarrier.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyCarrier.gif
new file mode 100644
index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyCarrier.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponent.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponent.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponentsCatalog.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponentsCatalog.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponentsCatalog.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponentsCostCatalog.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponentsCostCatalog.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/EnergyComponentsCostCatalog.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ExponentialFunction.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ExponentialFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ExponentialFunction.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ExponentionalCharacteristic.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ExponentionalCharacteristic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ExponentionalCharacteristic.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/FossilFuel.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/FossilFuel.gif
new file mode 100644
index 0000000000000000000000000000000000000000..badaab0664ae45de5d990f64638197daeabf31bf
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/FossilFuel.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Fuel.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Fuel.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Fuel.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/FuelCell.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/FuelCell.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/FuelCell.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Function.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Function.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/GeothermalHeatExchanger.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/GeothermalHeatExchanger.gif
new file mode 100644
index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/GeothermalHeatExchanger.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HeatExchanger.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HeatExchanger.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HeatExchanger.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HeatPump.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HeatPump.gif
new file mode 100644
index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HeatPump.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Hydrocarbon.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Hydrocarbon.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Hydrocarbon.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Hydrogen.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Hydrogen.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1e5345fb3237c2f6eabcee2dbe44a371b49d8379
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Hydrogen.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HydrogenCompressor.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HydrogenCompressor.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HydrogenCompressor.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HydrogenStorage.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HydrogenStorage.gif
new file mode 100644
index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/HydrogenStorage.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Inverter.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Inverter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Inverter.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/InvestmentCost.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/InvestmentCost.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/InvestmentCost.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/LinearCharacteristic.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/LinearCharacteristic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..db7414e937292c344d6fd0d0805085b67650f5c8
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/LinearCharacteristic.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/LinearFunction.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/LinearFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/LinearFunction.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Manufacturer.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Manufacturer.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Manufacturer.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Material.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Material.gif
new file mode 100644
index 0000000000000000000000000000000000000000..afb82ea48a50d3fb875ce03cf0ec154e51c97cb7
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Material.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Medium.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Medium.gif
new file mode 100644
index 0000000000000000000000000000000000000000..134551bff7eb3f0beb14a6c4a270a2a94f782ec5
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Medium.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/NewEClass40.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/NewEClass40.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/NewEClass40.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PersonnelCost.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PersonnelCost.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2124f3e3ab2646fd6aec35b94fe003b565ba4c2c
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PersonnelCost.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PhotovoltaicModule.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PhotovoltaicModule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PhotovoltaicModule.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PolynomialCharacteristic.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PolynomialCharacteristic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PolynomialCharacteristic.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PolynomialFunction.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PolynomialFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PolynomialFunction.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PowerCharacteristic.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PowerCharacteristic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PowerCharacteristic.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PowerFunction.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PowerFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/PowerFunction.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/RegularFuel.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/RegularFuel.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/RegularFuel.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/SaltHydrate.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/SaltHydrate.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/SaltHydrate.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/SolarThermalCollector.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/SolarThermalCollector.gif
new file mode 100644
index 0000000000000000000000000000000000000000..badaab0664ae45de5d990f64638197daeabf31bf
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/SolarThermalCollector.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/TableFunction.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/TableFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/TableFunction.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ThermalEnergyDevice.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ThermalEnergyDevice.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ThermalEnergyDevice.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ThermalStorage.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ThermalStorage.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ef56c140853105ca812564e9b12a76413c8c3fb9
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/ThermalStorage.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Water.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Water.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/Water.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/WindTurbine.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/WindTurbine.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/WindTurbine.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/icons/full/obj16/otherCost.gif b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/otherCost.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
Binary files /dev/null and b/de.hftstuttgart.energycomponents.edit/icons/full/obj16/otherCost.gif differ
diff --git a/de.hftstuttgart.energycomponents.edit/plugin.properties b/de.hftstuttgart.energycomponents.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..d4d53bfb52d33c05a8e96b2efc8582e516f3feab
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/plugin.properties
@@ -0,0 +1,375 @@
+#
+
+pluginName = EnergyComponents Model Edit Support
+providerName = www.hft-stuttgart.de
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_EnergyComponent_type = Energy Component
+_UI_ThermalStorage_type = Thermal Storage
+_UI_ElectricalStorage_type = Electrical Storage
+_UI_CombinedHeatPower_type = Combined Heat Power
+_UI_HeatPump_type = Heat Pump
+_UI_Boiler_type = Boiler
+_UI_SolarThermalCollector_type = Solar Thermal Collector
+_UI_EnergyComponentsCatalog_type = Energy Components Catalog
+_UI_Electrolyzer_type = Electrolyzer
+_UI_ChemicalEnergyDevice_type = Chemical Energy Device
+_UI_Function_type = Function
+_UI_LinearFunction_type = Linear Function
+_UI_HydrogenCompressor_type = Hydrogen Compressor
+_UI_HydrogenStorage_type = Hydrogen Storage
+_UI_FuelCell_type = Fuel Cell
+_UI_ExponentialFunction_type = Exponential Function
+_UI_EnergyCarrier_type = Energy Carrier
+_UI_FossilFuel_type = Fossil Fuel
+_UI_Hydrogen_type = Hydrogen
+_UI_Electricity_type = Electricity
+_UI_RegularFuel_type = Regular Fuel
+_UI_BioFuel_type = Bio Fuel
+_UI_Fuel_type = Fuel
+_UI_WindTurbine_type = Wind Turbine
+_UI_PhotovoltaicModule_type = Photovoltaic Module
+_UI_Inverter_type = Inverter
+_UI_HeatExchanger_type = Heat Exchanger
+_UI_GeothermalHeatExchanger_type = Geothermal Heat Exchanger
+_UI_Medium_type = Medium
+_UI_Water_type = Water
+_UI_SaltHydrate_type = Salt Hydrate
+_UI_Hydrocarbon_type = Hydrocarbon
+_UI_DoubleToFunctionMap_type = Double To Function Map
+_UI_TableFunction_type = Table Function
+_UI_DataPoint_type = Data Point
+_UI_Unknown_type = Object
+_UI_Unknown_datatype= Value
+_UI_EnergyComponent_description_feature = Description
+_UI_EnergyComponent_modelName_feature = Model Name
+_UI_EnergyComponent_revisionYear_feature = Revision Year
+_UI_EnergyComponent_technicalLifetime_feature = Technical Lifetime
+_UI_ThermalStorage_thermalLosses_feature = Thermal Losses
+_UI_ThermalStorage_volume_feature = Volume
+_UI_ThermalStorage_thermalStorageType_feature = Thermal Storage Type
+_UI_ThermalStorage_maxTemp_feature = Max Temp
+_UI_ElectricalStorage_electricalStorageType_feature = Electrical Storage Type
+_UI_ElectricalStorage_batteryCapacity_feature = Battery Capacity
+_UI_ElectricalStorage_batteryVoltage_feature = Battery Voltage
+_UI_ElectricalStorage_batteryLifeCycle_feature = Battery Life Cycle
+_UI_ElectricalStorage_selfDischarge_feature = Self Discharge
+_UI_ElectricalStorage_inverterIncluded_feature = Inverter Included
+_UI_ElectricalStorage_batteryEffiency_feature = Battery Effiency
+_UI_CombinedHeatPower_thermalEfficiency_feature = Thermal Efficiency
+_UI_CombinedHeatPower_electricalEfficiency_feature = Electrical Efficiency
+_UI_CombinedHeatPower_installedElectricalPower_feature = Installed Electrical Power
+_UI_CombinedHeatPower_electricalEfficiencyPartLoad_feature = Electrical Efficiency Part Load
+_UI_CombinedHeatPower_thermalEfficiencyPartLoad_feature = Thermal Efficiency Part Load
+_UI_HeatPump_heatSource_feature = Heat Source
+_UI_HeatPump_modulationRange_feature = Modulation Range
+_UI_HeatPump_powerSource_feature = Power Source
+_UI_HeatPump_powerInput_feature = Power Input
+_UI_HeatPump_heatOutput_feature = Heat Output
+_UI_HeatPump_coefficientOfPerformance_feature = Coefficient Of Performance
+_UI_HeatPump_installedThermalPower_feature = Installed Thermal Power
+_UI_Boiler_nominalEfficiency_feature = Nominal Efficiency
+_UI_Boiler_boilerType_feature = Boiler Type
+_UI_SolarThermalCollector_collectorType_feature = Collector Type
+_UI_SolarThermalCollector_apertureArea_feature = Aperture Area
+_UI_SolarThermalCollector_opticalEfficiency_feature = Optical Efficiency
+_UI_SolarThermalCollector_linearHeatLossCoefficient_feature = Linear Heat Loss Coefficient
+_UI_SolarThermalCollector_quadraticalHeatLossCoefficient_feature = Quadratical Heat Loss Coefficient
+_UI_EnergyComponentsCatalog_author_feature = Author
+_UI_EnergyComponentsCatalog_bioFuels_feature = Bio Fuels
+_UI_EnergyComponentsCatalog_media_feature = Media
+_UI_EnergyComponentsCatalog_combinedHeatPowerUtilities_feature = Combined Heat Power Utilities
+_UI_EnergyComponentsCatalog_boilers_feature = Boilers
+_UI_EnergyComponentsCatalog_photovoltaicModules_feature = Photovoltaic Modules
+_UI_EnergyComponentsCatalog_solarThermalCollectors_feature = Solar Thermal Collectors
+_UI_EnergyComponentsCatalog_windTurbines_feature = Wind Turbines
+_UI_EnergyComponentsCatalog_geothermalHeatExchangers_feature = Geothermal Heat Exchangers
+_UI_EnergyComponentsCatalog_heatPumps_feature = Heat Pumps
+_UI_EnergyComponentsCatalog_inverters_feature = Inverters
+_UI_EnergyComponentsCatalog_heatExchangers_feature = Heat Exchangers
+_UI_EnergyComponentsCatalog_electrolyzers_feature = Electrolyzers
+_UI_EnergyComponentsCatalog_hydrogenCompressors_feature = Hydrogen Compressors
+_UI_EnergyComponentsCatalog_fuelCells_feature = Fuel Cells
+_UI_EnergyComponentsCatalog_thermalStorages_feature = Thermal Storages
+_UI_EnergyComponentsCatalog_powerStorages_feature = Power Storages
+_UI_EnergyComponentsCatalog_hydrogenStorages_feature = Hydrogen Storages
+_UI_EnergyComponentsCatalog_fossilFuels_feature = Fossil Fuels
+_UI_Electrolyzer_cellType_feature = Cell Type
+_UI_Electrolyzer_cellArea_feature = Cell Area
+_UI_Electrolyzer_numberOfCells_feature = Number Of Cells
+_UI_Electrolyzer_maxOperatingCurrentDensity_feature = Max Operating Current Density
+_UI_Electrolyzer_minOperatingCurrentDensity_feature = Min Operating Current Density
+_UI_Electrolyzer_overloadCapacity_feature = Overload Capacity
+_UI_Electrolyzer_nominalCellVoltage_feature = Nominal Cell Voltage
+_UI_ChemicalEnergyDevice_installedThermalPower_feature = Installed Thermal Power
+_UI_ChemicalEnergyDevice_usesFuel_feature = Uses Fuel
+_UI_ChemicalEnergyDevice_modulationRange_feature = Modulation Range
+_UI_ChemicalEnergyDevice_fuelType_feature = Fuel Type
+_UI_LinearFunction_parameterM_feature = Parameter M
+_UI_LinearFunction_parameterC_feature = Parameter C
+_UI_HydrogenCompressor_efficiency_feature = Efficiency
+_UI_HydrogenCompressor_thermodynamicMode_feature = Thermodynamic Mode
+_UI_HydrogenCompressor_maxPressure_feature = Max Pressure
+_UI_HydrogenCompressor_maxDeliveryRate_feature = Max Delivery Rate
+_UI_HydrogenStorage_numberOfCylinders_feature = Number Of Cylinders
+_UI_HydrogenStorage_cylinderVolume_feature = Cylinder Volume
+_UI_HydrogenStorage_nominalPressure_feature = Nominal Pressure
+_UI_ExponentialFunction_parameterA_feature = Parameter A
+_UI_ExponentialFunction_parameterB_feature = Parameter B
+_UI_EnergyCarrier_co2EmissionsFactor_feature = Co2 Emissions Factor
+_UI_EnergyCarrier_primaryEnergyFactor_feature = Primary Energy Factor
+_UI_EnergyCarrier_name_feature = Name
+_UI_FossilFuel_fossilFuelType_feature = Fossil Fuel Type
+_UI_Hydrogen_chemicalPurity_feature = Chemical Purity
+_UI_Hydrogen_hydrogenForHydrogenStorage_feature = Hydrogen For Hydrogen Storage
+_UI_BioFuel_bioFuelType_feature = Bio Fuel Type
+_UI_BioFuel_waterContent_feature = Water Content
+_UI_BioFuel_ashContent_feature = Ash Content
+_UI_Fuel_netCalorificValue_feature = Net Calorific Value
+_UI_Fuel_grossCalorificValue_feature = Gross Calorific Value
+_UI_Fuel_density_feature = Density
+_UI_PhotovoltaicModule_cellType_feature = Cell Type
+_UI_PhotovoltaicModule_nominalPower_feature = Nominal Power
+_UI_PhotovoltaicModule_mppVoltage_feature = Mpp Voltage
+_UI_PhotovoltaicModule_mppCurrent_feature = Mpp Current
+_UI_PhotovoltaicModule_nominalEfficiency_feature = Nominal Efficiency
+_UI_PhotovoltaicModule_moduleArea_feature = Module Area
+_UI_HeatExchanger_heatRecoveryEfficiency_feature = Heat Recovery Efficiency
+_UI_HeatExchanger_nominalElectricityConsumption_feature = Nominal Electricity Consumption
+_UI_GeothermalHeatExchanger_pipeDiameter_feature = Pipe Diameter
+_UI_Medium_density_feature = Density
+_UI_Medium_heatCapacity_feature = Heat Capacity
+_UI_Medium_evaporationTemperature_feature = Evaporation Temperature
+_UI_Medium_solidificationTemperature_feature = Solidification Temperature
+_UI_Medium_meltingTemperature_feature = Melting Temperature
+_UI_Medium_mediumForThermalStorage_feature = Medium For Thermal Storage
+_UI_DoubleToFunctionMap_key_feature = Key
+_UI_DoubleToFunctionMap_value_feature = Value
+_UI_TableFunction_datapoints_feature = Datapoints
+_UI_DataPoint_x_feature = X
+_UI_DataPoint_y_feature = Y
+_UI_Unknown_feature = Unspecified
+_UI_HeatSources_air_literal = air
+_UI_HeatSources_ground_literal = ground
+_UI_HeatSources_water_literal = water
+_UI_CollectorTypes_flatPlaneCollector_literal = flatPlaneCollector
+_UI_CollectorTypes_evacuatedTubeCollector_literal = evacuatedTubeCollector
+_UI_FossilFuelTypes_naturalGas_literal = naturalGas
+_UI_FossilFuelTypes_oil_literal = oil
+_UI_FossilFuelTypes_diesel_literal = diesel
+_UI_ElectricalStorageTypes_lithiumIon_literal = lithiumIon
+_UI_ElectricalStorageTypes_leadAcid_literal = leadAcid
+_UI_ElectricalStorageTypes_niMH_literal = niMH
+_UI_ElectricalStorageTypes_lithiumPolymer_literal = lithiumPolymer
+_UI_BioFuelTypes_bioGas_literal = bioGas
+_UI_BioFuelTypes_syntheticGas_literal = syntheticGas
+_UI_BioFuelTypes_woodPellets_literal = woodPellets
+_UI_BioFuelTypes_woodChips_literal = woodChips
+_UI_BioFuelTypes_sewageGas_literal = sewageGas
+_UI_PowerSources_electricity_literal = electricity
+_UI_PowerSources_gas_literal = gas
+_UI_BoilerTypes_lowtemperatureBoiler_literal = lowtemperatureBoiler
+_UI_BoilerTypes_condensingBoiler_literal = condensingBoiler
+_UI_ThermalStorageTypes_sensible_literal = sensible
+_UI_ThermalStorageTypes_latent_literal = LITERAL1
+_UI_FuelTypes_bioFuel_literal = bioFuel
+_UI_FuelTypes_fossilFuel_literal = fossilFuel
+_UI_cellTypesElectrolyzer_PEM_literal = PEM
+_UI_Characteristic_type = Characteristic
+_UI_TableCharacteristic_type = Table Characteristic
+_UI_LinearCharacteristic_type = Linear Characteristic
+_UI_ExponentionalCharacteristic_type = Exponentional Characteristic
+_UI_LinearFunction_parameter_feature = Parameter
+_UI_TableFunction_parameter_feature = Parameter
+_UI_ExponentialFunction_parameter_feature = Parameter
+_UI_TableCharacteristic_functions_feature = Functions
+_UI_LinearCharacteristic_functions_feature = Functions
+_UI_ExponentionalCharacteristic_functions_feature = Functions
+_UI_Manufacturer_type = Manufacturer
+_UI_EnergyComponent_manufacturer_feature = Manufacturer
+_UI_EnergyComponentsCatalog_manufacturers_feature = Manufacturers
+_UI_Manufacturer_Name_feature = Name
+_UI_Manufacturer_country_feature = Country
+_UI_Manufacturer_newAttribute_feature = New Attribute
+_UI_Manufacturer_outOfBusinessSince_feature = Out Of Business Since
+_UI_PolynomialCharacteristic_type = Polynomial Characteristic
+_UI_PolynomialFunction_type = Polynomial Function
+_UI_Material_type = Material
+_UI_ThermalStorage_tankThickness_feature = Tank Thickness
+_UI_ThermalStorage_insulationThickness_feature = Insulation Thickness
+_UI_Medium_name_feature = Name
+_UI_LinearFunction_key_feature = Key
+_UI_TableFunction_key_feature = Key
+_UI_ExponentialFunction_key_feature = Key
+_UI_PolynomialCharacteristic_functions_feature = Functions
+_UI_PolynomialFunction_key_feature = Key
+_UI_PolynomialFunction_parameterA_feature = Parameter A
+_UI_PolynomialFunction_parameterB_feature = Parameter B
+_UI_PolynomialFunction_parameterC_feature = Parameter C
+_UI_Material_thermalConductivity_feature = Thermal Conductivity
+_UI_Material_materialForThermalStorage_feature = Material For Thermal Storage
+_UI_Manufacturer_manufacturerName_feature = Manufacturer Name
+_UI_EnergyComponentsCatalog_materials_feature = Materials
+_UI_ThermalStorage_usesMedium_feature = Uses Medium
+_UI_ThermalStorage_useseMaterial_feature = Usese Material
+_UI_Cost_type = Cost
+_UI_EnergyComponent_costForComponent_feature = Cost For Component
+_UI_EnergyComponentsCatalog_cost_feature = Cost
+_UI_ThermalStorage_usesMaterial_feature = Uses Material
+_UI_Cost_investmentCost_feature = Investment Cost
+_UI_FuelTypes_oil_literal = oil
+_UI_Cost_maintenanceCost_feature = Maintenance Cost
+_UI_EnergyComponentsCostCatalog_type = Energy Components Cost Catalog
+_UI_EnergyComponentsCatalog_energycomponentscostcatalog_feature = Energycomponentscostcatalog
+_UI_EnergyComponentsCostCatalog_maintenanceCost_feature = Maintenance Cost
+_UI_EnergyComponentsCostCatalog_investmentCost_feature = Investment Cost
+_UI_EnergyComponentsCostCatalog_personnelCost_feature = Personnel Cost
+_UI_EnergyComponentsCostCatalog_energycomponentscatalog_feature = Energycomponentscatalog
+_UI_EnergyComponentsCostCatalog_ComponentCost_feature = Component Cost
+_UI_EnergyComponentsCostCatalog_author_feature = Author
+_UI_EnergyComponentsCostCatalog_revisionYear_feature = Revision Year
+_UI_Cost_personnelCost_feature = Personnel Cost
+_UI_EnergyComponentsCostCatalog_cost_feature = Cost
+_UI_Cost_otherCost_feature = Other Cost
+_UI_EnergyComponentsCostCatalog_otherCost_feature = Other Cost
+_UI_NewEClass40_type = New EClass40
+_UI_NewEClass40_otherCost_feature = Other Cost
+_UI_NewEClass40_maintenanceCost_feature = Maintenance Cost
+_UI_NewEClass40_investmentCost_feature = Investment Cost
+_UI_EnergyComponentsCostCatalog_kosten_feature = Kosten
+_UI_EnergyComponentsCostCatalog_costCategories_feature = Cost Categories
+_UI_Cost_annualWorkload_feature = Annual Workload
+_UI_Cost_componentName_feature = Component Name
+_UI_Cost_investCost_feature = Invest Cost
+_UI_Cost_description_feature = Description
+_UI_Cost_administrationAndOtherCost_feature = Administration And Other Cost
+_UI_Cost_personnelHours_feature = Personnel Hours
+_UI_Cost_installedPowerRange_feature = Installed Power Range
+_UI_Cost_datasource_feature = Datasource
+_UI_Cost_maintenanceCostShare_feature = Maintenance Cost Share
+_UI_Cost_administrationAndOtherCostShare_feature = Administration And Other Cost Share
+_UI_Cost_personnelCostShare_feature = Personnel Cost Share
+_UI_Cost_otherInvestmentCost_feature = Other Investment Cost
+_UI_Cost_Fuel_feature = Fuel
+_UI_AllFuelTypes_naturalGas_literal = naturalGas
+_UI_AllFuelTypes_oil_literal = oil
+_UI_AllFuelTypes_diesel_literal = diesel
+_UI_AllFuelTypes_bioGas_literal = bioGas
+_UI_AllFuelTypes_syntheticGas_literal = syntheticGas
+_UI_AllFuelTypes_woodPellets_literal = woodPellets
+_UI_AllFuelTypes_woodChips_literal = woodChips
+_UI_AllFuelTypes_sewageGas_literal = sewageGas
+_UI_EnergyCarriers_naturalGas_literal = naturalGas
+_UI_EnergyCarriers_oil_literal = oil
+_UI_EnergyCarriers_diesel_literal = diesel
+_UI_EnergyCarriers_bioGas_literal = bioGas
+_UI_EnergyCarriers_syntheticGas_literal = syntheticGas
+_UI_EnergyCarriers_woodPellets_literal = woodPellets
+_UI_EnergyCarriers_woodChips_literal = woodChips
+_UI_EnergyCarriers_sewageGas_literal = sewageGas
+_UI_EnergyCarriers_electricity_literal = electricity
+_UI_EnergyCarriers_hydrogen_literal = hydrogen
+_UI_Cost_fuel_feature = Fuel
+_UI_FossilFuelTypes_LNG_literal = LNG
+_UI_FossilFuelTypes_CNG_literal = CNG
+_UI_FuelTypes_naturalGas_literal = naturalGas
+_UI_FuelTypes_diesel_literal = diesel
+_UI_FuelTypes_bioGas_literal = bioGas
+_UI_FuelTypes_syntheticGas_literal = syntheticGas
+_UI_FuelTypes_woodPellets_literal = woodPellets
+_UI_FuelTypes_woodChips_literal = woodChips
+_UI_FuelTypes_sewageGas_literal = sewageGas
+_UI_FuelTypes_LNG_literal = LNG
+_UI_FuelTypes_CNG_literal = CNG
+_UI_FuelTypes_none_literal = none
+_UI_EnergyComponentsCatalog_energycarriers_feature = Energycarriers
+_UI_FossilFuel_methaneContent_feature = Methane Content
+_UI_Fuel_fuelType_feature = Fuel Type
+_UI_Type_naturalGas_literal = naturalGas
+_UI_Type_oil_literal = oil
+_UI_Type_diesel_literal = diesel
+_UI_Type_bioGas_literal = bioGas
+_UI_Type_syntheticGas_literal = syntheticGas
+_UI_Type_woodPellets_literal = woodPellets
+_UI_Type_woodChips_literal = woodChips
+_UI_Type_sewageGas_literal = sewageGas
+_UI_Type_LNG_literal = LNG
+_UI_Type_CNG_literal = CNG
+_UI_Type_water-water_literal = water-water
+_UI_Type_air-water_literal = air-water
+_UI_Type_soil-water_literal = soil-water
+_UI_Type_-_literal = -
+_UI_Type_none_literal = none
+_UI_FFType_naturalGas_literal = naturalGas
+_UI_FFType_oil_literal = oil
+_UI_FFType_diesel_literal = diesel
+_UI_FFType_bioGas_literal = bioGas
+_UI_FFType_syntheticGas_literal = syntheticGas
+_UI_FFType_woodPellets_literal = woodPellets
+_UI_FFType_woodChips_literal = woodChips
+_UI_FFType_sewageGas_literal = sewageGas
+_UI_FFType_LNG_literal = LNG
+_UI_FFType_CNG_literal = CNG
+_UI_FFType_water-water_literal = water-water
+_UI_FFType_air-water_literal = air-water
+_UI_FFType_soil-water_literal = soil-water
+_UI_FFType_none_literal = none
+_UI_Type_water_literal = water
+_UI_Type_air_literal = air
+_UI_Type_soil_literal = soil
+_UI_TypeOfHeatSource_naturalGas_literal = naturalGas
+_UI_TypeOfHeatSource_biogas_literal = biogas
+_UI_TypeOfHeatSource_oil_literal = oil
+_UI_TypeOfHeatSource_diesel_literal = diesel
+_UI_TypeOfHeatSource_syntheticGas_literal = syntheticGas
+_UI_TypeOfHeatSource_woodPellets_literal = woodPellets
+_UI_TypeOfHeatSource_woodChips_literal = woodChips
+_UI_TypeOfHeatSource_sewageGas_literal = sewageGas
+_UI_TypeOfHeatSource_LNG_literal = LNG
+_UI_TypeOfHeatSource_CNG_literal = CNG
+_UI_TypeOfHeatSource_water_literal = water
+_UI_TypeOfHeatSource_air_literal = air
+_UI_TypeOfHeatSource_soil_literal = soil
+_UI_TypeOfHeatSource_none_literal = none
+_UI_PersonnelCost_type = Personnel Cost
+_UI_InvestmentCost_type = Investment Cost
+_UI_otherCost_type = other Cost
+_UI_Cost_heatSource_feature = Heat Source
+_UI_PersonnelCost_personnelHours_feature = Personnel Hours
+_UI_PersonnelCost_personnelCostShare_feature = Personnel Cost Share
+_UI_InvestmentCost_otherInvestmentCost_feature = Other Investment Cost
+_UI_InvestmentCost_investmentCost_feature = Investment Cost
+_UI_otherCost_administrationAndOtherCostShare_feature = Administration And Other Cost Share
+_UI_otherCost_maintenanceCostShare_feature = Maintenance Cost Share
+_UI_Cost_investmentcosts_feature = Investmentcosts
+_UI_Cost_personnelcosts_feature = Personnelcosts
+_UI_Cost_othercosts_feature = Othercosts
+_UI_ThermalStorage_height_feature = Height
+_UI_ThermalStorage_insulationMaterial_feature = Insulation Material
+_UI_ThermalStorage_tankMaterial_feature = Tank Material
+_UI_HeatPump_installedThemalPower_feature = Installed Themal Power
+_UI_EnergyCarrier_cost_feature = Cost
+_UI_PowerCharacteristic_type = Power Characteristic
+_UI_PowerFunction_type = Power Function
+_UI_PowerCharacteristic_functions_feature = Functions
+_UI_PowerFunction_key1_feature = Key1
+_UI_PowerFunction_parameterA_feature = Parameter A
+_UI_PowerFunction_parameterB_feature = Parameter B
+_UI_PowerFunction_key_feature = Key
+_UI_Material_name_feature = Name
+_UI_ThermalEnergyDevice_type = Thermal Energy Device
+_UI_ThermalEnergyDevice_installedThermalPower_feature = Installed Thermal Power
+_UI_ThermalEnergyDevice_usesFuel_feature = Uses Fuel
+_UI_ThermalEnergyDevice_modulationRange_feature = Modulation Range
+_UI_ThermalEnergyDevice_fuel_feature = Fuel
+_UI_Electricity_renewableShare_feature = Renewable Share
+_UI_FuelTypes_electricity_literal = electricity
+_UI_ElectricalStorage_energyContent_feature = Energy Content
diff --git a/de.hftstuttgart.energycomponents.edit/plugin.xml b/de.hftstuttgart.energycomponents.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5830c0e34caf6fe0939b0986f7bc5887bdad2b80
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated EnergyComponents -->
+      <factory
+            uri="https://www.hft-stuttgart.de/energycomponents"
+            class="de.hftstuttgart.energycomponents.provider.EnCompItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/BioFuelItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/BioFuelItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..dae818f12b2919d5c3380085dfa09655b838cfe5
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/BioFuelItemProvider.java
@@ -0,0 +1,151 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.BioFuel;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.BioFuel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BioFuelItemProvider extends FuelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BioFuelItemProvider(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);
+
+			addWaterContentPropertyDescriptor(object);
+			addAshContentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Water Content feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWaterContentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_BioFuel_waterContent_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_BioFuel_waterContent_feature",
+								"_UI_BioFuel_type"),
+						EnCompPackage.Literals.BIO_FUEL__WATER_CONTENT, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Ash Content feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAshContentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_BioFuel_ashContent_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_BioFuel_ashContent_feature",
+								"_UI_BioFuel_type"),
+						EnCompPackage.Literals.BIO_FUEL__ASH_CONTENT, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns BioFuel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BioFuel"));
+	}
+
+	/**
+	 * <!-- 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 = ((BioFuel) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_BioFuel_type")
+				: getString("_UI_BioFuel_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(BioFuel.class)) {
+		case EnCompPackage.BIO_FUEL__WATER_CONTENT:
+		case EnCompPackage.BIO_FUEL__ASH_CONTENT:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/BoilerItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/BoilerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6694ba619758f014b7cb48cceb96c519364b04b8
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/BoilerItemProvider.java
@@ -0,0 +1,151 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.Boiler;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Boiler} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BoilerItemProvider extends ThermalEnergyDeviceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoilerItemProvider(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);
+
+			addNominalEfficiencyPropertyDescriptor(object);
+			addBoilerTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Boiler_nominalEfficiency_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Boiler_nominalEfficiency_feature",
+								"_UI_Boiler_type"),
+						EnCompPackage.Literals.BOILER__NOMINAL_EFFICIENCY, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Boiler Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBoilerTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Boiler_boilerType_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Boiler_boilerType_feature",
+								"_UI_Boiler_type"),
+						EnCompPackage.Literals.BOILER__BOILER_TYPE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Boiler.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Boiler"));
+	}
+
+	/**
+	 * <!-- 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 = ((Boiler) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_Boiler_type")
+				: getString("_UI_Boiler_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(Boiler.class)) {
+		case EnCompPackage.BOILER__NOMINAL_EFFICIENCY:
+		case EnCompPackage.BOILER__BOILER_TYPE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CharacteristicItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CharacteristicItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c9dcfe616aece2ddc38ac27035fc47e806a1d8c6
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CharacteristicItemProvider.java
@@ -0,0 +1,122 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Characteristic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CharacteristicItemProvider 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 CharacteristicItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Characteristic.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Characteristic"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Characteristic_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CombinedHeatPowerItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CombinedHeatPowerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..dec1eb8a8305c10ad9cce051f9b0517a31789183
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CombinedHeatPowerItemProvider.java
@@ -0,0 +1,301 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.CombinedHeatPower;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.CombinedHeatPower} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CombinedHeatPowerItemProvider extends ThermalEnergyDeviceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CombinedHeatPowerItemProvider(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);
+
+			addThermalEfficiencyPropertyDescriptor(object);
+			addElectricalEfficiencyPropertyDescriptor(object);
+			addInstalledElectricalPowerPropertyDescriptor(object);
+			addElectricalEfficiencyPartLoadPropertyDescriptor(object);
+			addThermalEfficiencyPartLoadPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Thermal Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addThermalEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_CombinedHeatPower_thermalEfficiency_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_CombinedHeatPower_thermalEfficiency_feature",
+						"_UI_CombinedHeatPower_type"),
+				EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Electrical Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addElectricalEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_CombinedHeatPower_electricalEfficiency_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_CombinedHeatPower_electricalEfficiency_feature", "_UI_CombinedHeatPower_type"),
+						EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Installed Electrical Power feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInstalledElectricalPowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_CombinedHeatPower_installedElectricalPower_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_CombinedHeatPower_installedElectricalPower_feature", "_UI_CombinedHeatPower_type"),
+						EnCompPackage.Literals.COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Electrical Efficiency Part Load feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addElectricalEfficiencyPartLoadPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_CombinedHeatPower_electricalEfficiencyPartLoad_feature"),
+				getString("_UI_PropertyDescriptor_description",
+						"_UI_CombinedHeatPower_electricalEfficiencyPartLoad_feature", "_UI_CombinedHeatPower_type"),
+				EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD, true, false, false, null,
+				null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Thermal Efficiency Part Load feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addThermalEfficiencyPartLoadPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_CombinedHeatPower_thermalEfficiencyPartLoad_feature"),
+				getString("_UI_PropertyDescriptor_description",
+						"_UI_CombinedHeatPower_thermalEfficiencyPartLoad_feature", "_UI_CombinedHeatPower_type"),
+				EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD, true, false, false, null,
+				null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD);
+			childrenFeatures.add(EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD);
+		}
+		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 CombinedHeatPower.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CombinedHeatPower"));
+	}
+
+	/**
+	 * <!-- 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 = ((CombinedHeatPower) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_CombinedHeatPower_type")
+				: getString("_UI_CombinedHeatPower_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(CombinedHeatPower.class)) {
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY:
+		case EnCompPackage.COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD:
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD:
+			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(EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createTableCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createLinearCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createExponentionalCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createPolynomialCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createPowerCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createTableCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createLinearCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createExponentionalCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createPolynomialCharacteristic()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD,
+						EnCompFactory.eINSTANCE.createPowerCharacteristic()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify = childFeature == EnCompPackage.Literals.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD
+				|| childFeature == EnCompPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD;
+
+		if (qualify) {
+			return getString("_UI_CreateChild_text2",
+					new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CostItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CostItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7241dba3f6a185673ea032f246db00e8ec1aa821
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/CostItemProvider.java
@@ -0,0 +1,359 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.Cost;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+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.energycomponents.Cost} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CostItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+		IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CostItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addComponentNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addHeatSourcePropertyDescriptor(object);
+			addDatasourcePropertyDescriptor(object);
+			addInvestmentCostPropertyDescriptor(object);
+			addOtherInvestmentCostPropertyDescriptor(object);
+			addPersonnelHoursPropertyDescriptor(object);
+			addPersonnelCostSharePropertyDescriptor(object);
+			addAdministrationAndOtherCostSharePropertyDescriptor(object);
+			addMaintenanceCostSharePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Personnel Hours feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPersonnelHoursPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_personnelHours_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_personnelHours_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__PERSONNEL_HOURS, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Personnel Cost Share feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPersonnelCostSharePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_personnelCostShare_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_personnelCostShare_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__PERSONNEL_COST_SHARE, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Administration And Other Cost Share feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAdministrationAndOtherCostSharePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_Cost_administrationAndOtherCostShare_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Cost_administrationAndOtherCostShare_feature",
+						"_UI_Cost_type"),
+				EnCompPackage.Literals.COST__ADMINISTRATION_AND_OTHER_COST_SHARE, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Maintenance Cost Share feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaintenanceCostSharePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_maintenanceCostShare_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_maintenanceCostShare_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__MAINTENANCE_COST_SHARE, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.COST__INVESTMENT_COST);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This adds a property descriptor for the Datasource feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDatasourcePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_datasource_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_datasource_feature", "_UI_Cost_type"),
+						EnCompPackage.Literals.COST__DATASOURCE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Investment Cost feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInvestmentCostPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_investmentCost_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_investmentCost_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__INVESTMENT_COST, true, false, false, null, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Other Investment Cost feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOtherInvestmentCostPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_otherInvestmentCost_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_otherInvestmentCost_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__OTHER_INVESTMENT_COST, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Component Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addComponentNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_componentName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_componentName_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__COMPONENT_NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_description_feature",
+								"_UI_Cost_type"),
+						EnCompPackage.Literals.COST__DESCRIPTION, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Heat Source feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHeatSourcePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Cost_heatSource_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Cost_heatSource_feature", "_UI_Cost_type"),
+						EnCompPackage.Literals.COST__HEAT_SOURCE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Cost.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Cost"));
+	}
+
+	/**
+	 * <!-- 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 = ((Cost) object).getComponentName();
+		return label == null || label.length() == 0 ? getString("_UI_Cost_type")
+				: getString("_UI_Cost_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(Cost.class)) {
+		case EnCompPackage.COST__COMPONENT_NAME:
+		case EnCompPackage.COST__DESCRIPTION:
+		case EnCompPackage.COST__HEAT_SOURCE:
+		case EnCompPackage.COST__DATASOURCE:
+		case EnCompPackage.COST__OTHER_INVESTMENT_COST:
+		case EnCompPackage.COST__PERSONNEL_HOURS:
+		case EnCompPackage.COST__PERSONNEL_COST_SHARE:
+		case EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE:
+		case EnCompPackage.COST__MAINTENANCE_COST_SHARE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case EnCompPackage.COST__INVESTMENT_COST:
+			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(EnCompPackage.Literals.COST__INVESTMENT_COST,
+				EnCompFactory.eINSTANCE.createTableCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.COST__INVESTMENT_COST,
+				EnCompFactory.eINSTANCE.createLinearCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.COST__INVESTMENT_COST,
+				EnCompFactory.eINSTANCE.createExponentionalCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.COST__INVESTMENT_COST,
+				EnCompFactory.eINSTANCE.createPolynomialCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.COST__INVESTMENT_COST,
+				EnCompFactory.eINSTANCE.createPowerCharacteristic()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/DataPointItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/DataPointItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ffd3a9a062b9344151ed9614a0eab1dee68663de
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/DataPointItemProvider.java
@@ -0,0 +1,170 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.DataPoint;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+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.energycomponents.DataPoint} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DataPointItemProvider 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 DataPointItemProvider(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);
+
+			addXPropertyDescriptor(object);
+			addYPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the X feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addXPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_DataPoint_x_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_DataPoint_x_feature",
+								"_UI_DataPoint_type"),
+						EnCompPackage.Literals.DATA_POINT__X, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Y feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addYPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_DataPoint_y_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_DataPoint_y_feature",
+								"_UI_DataPoint_type"),
+						EnCompPackage.Literals.DATA_POINT__Y, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns DataPoint.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DataPoint"));
+	}
+
+	/**
+	 * <!-- 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) {
+		DataPoint dataPoint = (DataPoint) object;
+		return getString("_UI_DataPoint_type") + " " + dataPoint.getX();
+	}
+
+	/**
+	 * 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(DataPoint.class)) {
+		case EnCompPackage.DATA_POINT__X:
+		case EnCompPackage.DATA_POINT__Y:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricalStorageItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricalStorageItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..62e8b49d4888905ffb7fcdbfe3099fa14d5bc935
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricalStorageItemProvider.java
@@ -0,0 +1,259 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.ElectricalStorage;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.ElectricalStorage} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ElectricalStorageItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElectricalStorageItemProvider(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);
+
+			addElectricalStorageTypePropertyDescriptor(object);
+			addBatteryCapacityPropertyDescriptor(object);
+			addBatteryVoltagePropertyDescriptor(object);
+			addBatteryLifeCyclePropertyDescriptor(object);
+			addSelfDischargePropertyDescriptor(object);
+			addInverterIncludedPropertyDescriptor(object);
+			addBatteryEffiencyPropertyDescriptor(object);
+			addEnergyContentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Electrical Storage Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addElectricalStorageTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ElectricalStorage_electricalStorageType_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_ElectricalStorage_electricalStorageType_feature", "_UI_ElectricalStorage_type"),
+						EnCompPackage.Literals.ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Battery Capacity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBatteryCapacityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ElectricalStorage_batteryCapacity_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ElectricalStorage_batteryCapacity_feature",
+						"_UI_ElectricalStorage_type"),
+				EnCompPackage.Literals.ELECTRICAL_STORAGE__BATTERY_CAPACITY, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Battery Voltage feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBatteryVoltagePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ElectricalStorage_batteryVoltage_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ElectricalStorage_batteryVoltage_feature",
+						"_UI_ElectricalStorage_type"),
+				EnCompPackage.Literals.ELECTRICAL_STORAGE__BATTERY_VOLTAGE, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Battery Life Cycle feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBatteryLifeCyclePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ElectricalStorage_batteryLifeCycle_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ElectricalStorage_batteryLifeCycle_feature",
+						"_UI_ElectricalStorage_type"),
+				EnCompPackage.Literals.ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Self Discharge feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelfDischargePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ElectricalStorage_selfDischarge_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ElectricalStorage_selfDischarge_feature",
+						"_UI_ElectricalStorage_type"),
+				EnCompPackage.Literals.ELECTRICAL_STORAGE__SELF_DISCHARGE, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Inverter Included feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInverterIncludedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ElectricalStorage_inverterIncluded_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ElectricalStorage_inverterIncluded_feature",
+						"_UI_ElectricalStorage_type"),
+				EnCompPackage.Literals.ELECTRICAL_STORAGE__INVERTER_INCLUDED, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Battery Effiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBatteryEffiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ElectricalStorage_batteryEffiency_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ElectricalStorage_batteryEffiency_feature",
+						"_UI_ElectricalStorage_type"),
+				EnCompPackage.Literals.ELECTRICAL_STORAGE__BATTERY_EFFIENCY, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Energy Content feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEnergyContentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ElectricalStorage_energyContent_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ElectricalStorage_energyContent_feature",
+						"_UI_ElectricalStorage_type"),
+				EnCompPackage.Literals.ELECTRICAL_STORAGE__ENERGY_CONTENT, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns ElectricalStorage.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ElectricalStorage"));
+	}
+
+	/**
+	 * <!-- 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 = ((ElectricalStorage) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_ElectricalStorage_type")
+				: getString("_UI_ElectricalStorage_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(ElectricalStorage.class)) {
+		case EnCompPackage.ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE:
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_CAPACITY:
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_VOLTAGE:
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE:
+		case EnCompPackage.ELECTRICAL_STORAGE__SELF_DISCHARGE:
+		case EnCompPackage.ELECTRICAL_STORAGE__INVERTER_INCLUDED:
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_EFFIENCY:
+		case EnCompPackage.ELECTRICAL_STORAGE__ENERGY_CONTENT:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricityItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..58fc33c6070c6f7742f224b63dddd896d78cfd03
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectricityItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.Electricity;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Electricity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ElectricityItemProvider extends EnergyCarrierItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElectricityItemProvider(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);
+
+			addRenewableSharePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Renewable Share feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRenewableSharePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Electricity_renewableShare_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Electricity_renewableShare_feature",
+								"_UI_Electricity_type"),
+						EnCompPackage.Literals.ELECTRICITY__RENEWABLE_SHARE, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Electricity.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Electricity"));
+	}
+
+	/**
+	 * <!-- 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 = ((Electricity) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Electricity_type")
+				: getString("_UI_Electricity_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(Electricity.class)) {
+		case EnCompPackage.ELECTRICITY__RENEWABLE_SHARE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectrolyzerItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectrolyzerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5cd6d8739d4f8ae59bbb1bdd9560ad98d93b5402
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ElectrolyzerItemProvider.java
@@ -0,0 +1,241 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.Electrolyzer;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Electrolyzer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ElectrolyzerItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElectrolyzerItemProvider(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);
+
+			addCellTypePropertyDescriptor(object);
+			addCellAreaPropertyDescriptor(object);
+			addNumberOfCellsPropertyDescriptor(object);
+			addMaxOperatingCurrentDensityPropertyDescriptor(object);
+			addMinOperatingCurrentDensityPropertyDescriptor(object);
+			addOverloadCapacityPropertyDescriptor(object);
+			addNominalCellVoltagePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Cell Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCellTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Electrolyzer_cellType_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Electrolyzer_cellType_feature",
+								"_UI_Electrolyzer_type"),
+						EnCompPackage.Literals.ELECTROLYZER__CELL_TYPE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cell Area feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCellAreaPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Electrolyzer_cellArea_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Electrolyzer_cellArea_feature",
+								"_UI_Electrolyzer_type"),
+						EnCompPackage.Literals.ELECTROLYZER__CELL_AREA, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Number Of Cells feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNumberOfCellsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Electrolyzer_numberOfCells_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Electrolyzer_numberOfCells_feature",
+								"_UI_Electrolyzer_type"),
+						EnCompPackage.Literals.ELECTROLYZER__NUMBER_OF_CELLS, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Max Operating Current Density feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaxOperatingCurrentDensityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_Electrolyzer_maxOperatingCurrentDensity_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Electrolyzer_maxOperatingCurrentDensity_feature",
+						"_UI_Electrolyzer_type"),
+				EnCompPackage.Literals.ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Min Operating Current Density feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMinOperatingCurrentDensityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_Electrolyzer_minOperatingCurrentDensity_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Electrolyzer_minOperatingCurrentDensity_feature",
+						"_UI_Electrolyzer_type"),
+				EnCompPackage.Literals.ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Overload Capacity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOverloadCapacityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Electrolyzer_overloadCapacity_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Electrolyzer_overloadCapacity_feature",
+								"_UI_Electrolyzer_type"),
+						EnCompPackage.Literals.ELECTROLYZER__OVERLOAD_CAPACITY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Cell Voltage feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalCellVoltagePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Electrolyzer_nominalCellVoltage_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Electrolyzer_nominalCellVoltage_feature",
+								"_UI_Electrolyzer_type"),
+						EnCompPackage.Literals.ELECTROLYZER__NOMINAL_CELL_VOLTAGE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Electrolyzer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Electrolyzer"));
+	}
+
+	/**
+	 * <!-- 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 = ((Electrolyzer) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_Electrolyzer_type")
+				: getString("_UI_Electrolyzer_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(Electrolyzer.class)) {
+		case EnCompPackage.ELECTROLYZER__CELL_TYPE:
+		case EnCompPackage.ELECTROLYZER__CELL_AREA:
+		case EnCompPackage.ELECTROLYZER__NUMBER_OF_CELLS:
+		case EnCompPackage.ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY:
+		case EnCompPackage.ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY:
+		case EnCompPackage.ELECTROLYZER__OVERLOAD_CAPACITY:
+		case EnCompPackage.ELECTROLYZER__NOMINAL_CELL_VOLTAGE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnCompItemProviderAdapterFactory.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnCompItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a6e60bd2a0554a78431ef4f0bfa9fd2b80e00e6
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnCompItemProviderAdapterFactory.java
@@ -0,0 +1,1057 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.util.EnCompAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnCompItemProviderAdapterFactory extends EnCompAdapterFactory
+		implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnCompItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ThermalStorage} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ThermalStorageItemProvider thermalStorageItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ThermalStorage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createThermalStorageAdapter() {
+		if (thermalStorageItemProvider == null) {
+			thermalStorageItemProvider = new ThermalStorageItemProvider(this);
+		}
+
+		return thermalStorageItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ElectricalStorage} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ElectricalStorageItemProvider electricalStorageItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ElectricalStorage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createElectricalStorageAdapter() {
+		if (electricalStorageItemProvider == null) {
+			electricalStorageItemProvider = new ElectricalStorageItemProvider(this);
+		}
+
+		return electricalStorageItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.CombinedHeatPower} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CombinedHeatPowerItemProvider combinedHeatPowerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.CombinedHeatPower}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCombinedHeatPowerAdapter() {
+		if (combinedHeatPowerItemProvider == null) {
+			combinedHeatPowerItemProvider = new CombinedHeatPowerItemProvider(this);
+		}
+
+		return combinedHeatPowerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.HeatPump} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HeatPumpItemProvider heatPumpItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.HeatPump}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHeatPumpAdapter() {
+		if (heatPumpItemProvider == null) {
+			heatPumpItemProvider = new HeatPumpItemProvider(this);
+		}
+
+		return heatPumpItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Boiler} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoilerItemProvider boilerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Boiler}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBoilerAdapter() {
+		if (boilerItemProvider == null) {
+			boilerItemProvider = new BoilerItemProvider(this);
+		}
+
+		return boilerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.SolarThermalCollector} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SolarThermalCollectorItemProvider solarThermalCollectorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.SolarThermalCollector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSolarThermalCollectorAdapter() {
+		if (solarThermalCollectorItemProvider == null) {
+			solarThermalCollectorItemProvider = new SolarThermalCollectorItemProvider(this);
+		}
+
+		return solarThermalCollectorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentsCatalogItemProvider energyComponentsCatalogItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEnergyComponentsCatalogAdapter() {
+		if (energyComponentsCatalogItemProvider == null) {
+			energyComponentsCatalogItemProvider = new EnergyComponentsCatalogItemProvider(this);
+		}
+
+		return energyComponentsCatalogItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Electrolyzer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ElectrolyzerItemProvider electrolyzerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Electrolyzer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createElectrolyzerAdapter() {
+		if (electrolyzerItemProvider == null) {
+			electrolyzerItemProvider = new ElectrolyzerItemProvider(this);
+		}
+
+		return electrolyzerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.LinearFunction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LinearFunctionItemProvider linearFunctionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.LinearFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLinearFunctionAdapter() {
+		if (linearFunctionItemProvider == null) {
+			linearFunctionItemProvider = new LinearFunctionItemProvider(this);
+		}
+
+		return linearFunctionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.HydrogenCompressor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HydrogenCompressorItemProvider hydrogenCompressorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.HydrogenCompressor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHydrogenCompressorAdapter() {
+		if (hydrogenCompressorItemProvider == null) {
+			hydrogenCompressorItemProvider = new HydrogenCompressorItemProvider(this);
+		}
+
+		return hydrogenCompressorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.HydrogenStorage} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HydrogenStorageItemProvider hydrogenStorageItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.HydrogenStorage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHydrogenStorageAdapter() {
+		if (hydrogenStorageItemProvider == null) {
+			hydrogenStorageItemProvider = new HydrogenStorageItemProvider(this);
+		}
+
+		return hydrogenStorageItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.FuelCell} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FuelCellItemProvider fuelCellItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.FuelCell}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createFuelCellAdapter() {
+		if (fuelCellItemProvider == null) {
+			fuelCellItemProvider = new FuelCellItemProvider(this);
+		}
+
+		return fuelCellItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ExponentialFunction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExponentialFunctionItemProvider exponentialFunctionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ExponentialFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExponentialFunctionAdapter() {
+		if (exponentialFunctionItemProvider == null) {
+			exponentialFunctionItemProvider = new ExponentialFunctionItemProvider(this);
+		}
+
+		return exponentialFunctionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.TableCharacteristic} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableCharacteristicItemProvider tableCharacteristicItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.TableCharacteristic}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTableCharacteristicAdapter() {
+		if (tableCharacteristicItemProvider == null) {
+			tableCharacteristicItemProvider = new TableCharacteristicItemProvider(this);
+		}
+
+		return tableCharacteristicItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.LinearCharacteristic} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LinearCharacteristicItemProvider linearCharacteristicItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.LinearCharacteristic}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLinearCharacteristicAdapter() {
+		if (linearCharacteristicItemProvider == null) {
+			linearCharacteristicItemProvider = new LinearCharacteristicItemProvider(this);
+		}
+
+		return linearCharacteristicItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExponentionalCharacteristicItemProvider exponentionalCharacteristicItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExponentionalCharacteristicAdapter() {
+		if (exponentionalCharacteristicItemProvider == null) {
+			exponentionalCharacteristicItemProvider = new ExponentionalCharacteristicItemProvider(this);
+		}
+
+		return exponentionalCharacteristicItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Manufacturer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ManufacturerItemProvider manufacturerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Manufacturer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createManufacturerAdapter() {
+		if (manufacturerItemProvider == null) {
+			manufacturerItemProvider = new ManufacturerItemProvider(this);
+		}
+
+		return manufacturerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PolynomialCharacteristic} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PolynomialCharacteristicItemProvider polynomialCharacteristicItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PolynomialCharacteristic}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPolynomialCharacteristicAdapter() {
+		if (polynomialCharacteristicItemProvider == null) {
+			polynomialCharacteristicItemProvider = new PolynomialCharacteristicItemProvider(this);
+		}
+
+		return polynomialCharacteristicItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PolynomialFunction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PolynomialFunctionItemProvider polynomialFunctionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PolynomialFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPolynomialFunctionAdapter() {
+		if (polynomialFunctionItemProvider == null) {
+			polynomialFunctionItemProvider = new PolynomialFunctionItemProvider(this);
+		}
+
+		return polynomialFunctionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Material} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaterialItemProvider materialItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Material}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMaterialAdapter() {
+		if (materialItemProvider == null) {
+			materialItemProvider = new MaterialItemProvider(this);
+		}
+
+		return materialItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentsCostCatalogItemProvider energyComponentsCostCatalogItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEnergyComponentsCostCatalogAdapter() {
+		if (energyComponentsCostCatalogItemProvider == null) {
+			energyComponentsCostCatalogItemProvider = new EnergyComponentsCostCatalogItemProvider(this);
+		}
+
+		return energyComponentsCostCatalogItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Cost} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CostItemProvider costItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Cost}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCostAdapter() {
+		if (costItemProvider == null) {
+			costItemProvider = new CostItemProvider(this);
+		}
+
+		return costItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PowerCharacteristic} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PowerCharacteristicItemProvider powerCharacteristicItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PowerCharacteristic}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPowerCharacteristicAdapter() {
+		if (powerCharacteristicItemProvider == null) {
+			powerCharacteristicItemProvider = new PowerCharacteristicItemProvider(this);
+		}
+
+		return powerCharacteristicItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PowerFunction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PowerFunctionItemProvider powerFunctionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PowerFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPowerFunctionAdapter() {
+		if (powerFunctionItemProvider == null) {
+			powerFunctionItemProvider = new PowerFunctionItemProvider(this);
+		}
+
+		return powerFunctionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.FossilFuel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FossilFuelItemProvider fossilFuelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.FossilFuel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createFossilFuelAdapter() {
+		if (fossilFuelItemProvider == null) {
+			fossilFuelItemProvider = new FossilFuelItemProvider(this);
+		}
+
+		return fossilFuelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Hydrogen} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HydrogenItemProvider hydrogenItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Hydrogen}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHydrogenAdapter() {
+		if (hydrogenItemProvider == null) {
+			hydrogenItemProvider = new HydrogenItemProvider(this);
+		}
+
+		return hydrogenItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.BioFuel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BioFuelItemProvider bioFuelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.BioFuel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBioFuelAdapter() {
+		if (bioFuelItemProvider == null) {
+			bioFuelItemProvider = new BioFuelItemProvider(this);
+		}
+
+		return bioFuelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.WindTurbine} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WindTurbineItemProvider windTurbineItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.WindTurbine}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createWindTurbineAdapter() {
+		if (windTurbineItemProvider == null) {
+			windTurbineItemProvider = new WindTurbineItemProvider(this);
+		}
+
+		return windTurbineItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.PhotovoltaicModule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PhotovoltaicModuleItemProvider photovoltaicModuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.PhotovoltaicModule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPhotovoltaicModuleAdapter() {
+		if (photovoltaicModuleItemProvider == null) {
+			photovoltaicModuleItemProvider = new PhotovoltaicModuleItemProvider(this);
+		}
+
+		return photovoltaicModuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Inverter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InverterItemProvider inverterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Inverter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInverterAdapter() {
+		if (inverterItemProvider == null) {
+			inverterItemProvider = new InverterItemProvider(this);
+		}
+
+		return inverterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.HeatExchanger} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HeatExchangerItemProvider heatExchangerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.HeatExchanger}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHeatExchangerAdapter() {
+		if (heatExchangerItemProvider == null) {
+			heatExchangerItemProvider = new HeatExchangerItemProvider(this);
+		}
+
+		return heatExchangerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GeothermalHeatExchangerItemProvider geothermalHeatExchangerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createGeothermalHeatExchangerAdapter() {
+		if (geothermalHeatExchangerItemProvider == null) {
+			geothermalHeatExchangerItemProvider = new GeothermalHeatExchangerItemProvider(this);
+		}
+
+		return geothermalHeatExchangerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.Medium} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MediumItemProvider mediumItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.Medium}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMediumAdapter() {
+		if (mediumItemProvider == null) {
+			mediumItemProvider = new MediumItemProvider(this);
+		}
+
+		return mediumItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.TableFunction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableFunctionItemProvider tableFunctionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.TableFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTableFunctionAdapter() {
+		if (tableFunctionItemProvider == null) {
+			tableFunctionItemProvider = new TableFunctionItemProvider(this);
+		}
+
+		return tableFunctionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link de.hftstuttgart.energycomponents.DataPoint} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DataPointItemProvider dataPointItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link de.hftstuttgart.energycomponents.DataPoint}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDataPointAdapter() {
+		if (dataPointItemProvider == null) {
+			dataPointItemProvider = new DataPointItemProvider(this);
+		}
+
+		return dataPointItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (energyComponentsCatalogItemProvider != null)
+			energyComponentsCatalogItemProvider.dispose();
+		if (thermalStorageItemProvider != null)
+			thermalStorageItemProvider.dispose();
+		if (electricalStorageItemProvider != null)
+			electricalStorageItemProvider.dispose();
+		if (combinedHeatPowerItemProvider != null)
+			combinedHeatPowerItemProvider.dispose();
+		if (heatPumpItemProvider != null)
+			heatPumpItemProvider.dispose();
+		if (boilerItemProvider != null)
+			boilerItemProvider.dispose();
+		if (solarThermalCollectorItemProvider != null)
+			solarThermalCollectorItemProvider.dispose();
+		if (electrolyzerItemProvider != null)
+			electrolyzerItemProvider.dispose();
+		if (hydrogenCompressorItemProvider != null)
+			hydrogenCompressorItemProvider.dispose();
+		if (hydrogenStorageItemProvider != null)
+			hydrogenStorageItemProvider.dispose();
+		if (fuelCellItemProvider != null)
+			fuelCellItemProvider.dispose();
+		if (fossilFuelItemProvider != null)
+			fossilFuelItemProvider.dispose();
+		if (hydrogenItemProvider != null)
+			hydrogenItemProvider.dispose();
+		if (bioFuelItemProvider != null)
+			bioFuelItemProvider.dispose();
+		if (windTurbineItemProvider != null)
+			windTurbineItemProvider.dispose();
+		if (photovoltaicModuleItemProvider != null)
+			photovoltaicModuleItemProvider.dispose();
+		if (inverterItemProvider != null)
+			inverterItemProvider.dispose();
+		if (heatExchangerItemProvider != null)
+			heatExchangerItemProvider.dispose();
+		if (geothermalHeatExchangerItemProvider != null)
+			geothermalHeatExchangerItemProvider.dispose();
+		if (mediumItemProvider != null)
+			mediumItemProvider.dispose();
+		if (linearFunctionItemProvider != null)
+			linearFunctionItemProvider.dispose();
+		if (dataPointItemProvider != null)
+			dataPointItemProvider.dispose();
+		if (tableFunctionItemProvider != null)
+			tableFunctionItemProvider.dispose();
+		if (exponentialFunctionItemProvider != null)
+			exponentialFunctionItemProvider.dispose();
+		if (tableCharacteristicItemProvider != null)
+			tableCharacteristicItemProvider.dispose();
+		if (linearCharacteristicItemProvider != null)
+			linearCharacteristicItemProvider.dispose();
+		if (exponentionalCharacteristicItemProvider != null)
+			exponentionalCharacteristicItemProvider.dispose();
+		if (manufacturerItemProvider != null)
+			manufacturerItemProvider.dispose();
+		if (polynomialCharacteristicItemProvider != null)
+			polynomialCharacteristicItemProvider.dispose();
+		if (polynomialFunctionItemProvider != null)
+			polynomialFunctionItemProvider.dispose();
+		if (materialItemProvider != null)
+			materialItemProvider.dispose();
+		if (energyComponentsCostCatalogItemProvider != null)
+			energyComponentsCostCatalogItemProvider.dispose();
+		if (costItemProvider != null)
+			costItemProvider.dispose();
+		if (powerCharacteristicItemProvider != null)
+			powerCharacteristicItemProvider.dispose();
+		if (powerFunctionItemProvider != null)
+			powerFunctionItemProvider.dispose();
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyCarrierItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyCarrierItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba4cf51d8767833ebd124ca40a80a49e05bac05a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyCarrierItemProvider.java
@@ -0,0 +1,207 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyCarrier;
+
+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.energycomponents.EnergyCarrier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnergyCarrierItemProvider 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 EnergyCarrierItemProvider(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);
+
+			addCo2EmissionsFactorPropertyDescriptor(object);
+			addPrimaryEnergyFactorPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+			addCostPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Co2 Emissions Factor feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCo2EmissionsFactorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyCarrier_co2EmissionsFactor_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyCarrier_co2EmissionsFactor_feature",
+								"_UI_EnergyCarrier_type"),
+						EnCompPackage.Literals.ENERGY_CARRIER__CO2_EMISSIONS_FACTOR, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Primary Energy Factor feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPrimaryEnergyFactorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyCarrier_primaryEnergyFactor_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyCarrier_primaryEnergyFactor_feature",
+								"_UI_EnergyCarrier_type"),
+						EnCompPackage.Literals.ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR, true, false, false,
+						ItemPropertyDescriptor.REAL_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_EnergyCarrier_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyCarrier_name_feature",
+								"_UI_EnergyCarrier_type"),
+						EnCompPackage.Literals.ENERGY_CARRIER__NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cost feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCostPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyCarrier_cost_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyCarrier_cost_feature",
+								"_UI_EnergyCarrier_type"),
+						EnCompPackage.Literals.ENERGY_CARRIER__COST, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns EnergyCarrier.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EnergyCarrier"));
+	}
+
+	/**
+	 * <!-- 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 = ((EnergyCarrier) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_EnergyCarrier_type")
+				: getString("_UI_EnergyCarrier_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(EnergyCarrier.class)) {
+		case EnCompPackage.ENERGY_CARRIER__CO2_EMISSIONS_FACTOR:
+		case EnCompPackage.ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR:
+		case EnCompPackage.ENERGY_CARRIER__NAME:
+		case EnCompPackage.ENERGY_CARRIER__COST:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6fcc7a9a941b91b22743eaa8e8ff1facfa231650
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentItemProvider.java
@@ -0,0 +1,223 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyComponent;
+
+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.energycomponents.EnergyComponent} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnergyComponentItemProvider 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 EnergyComponentItemProvider(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);
+
+			addDescriptionPropertyDescriptor(object);
+			addModelNamePropertyDescriptor(object);
+			addRevisionYearPropertyDescriptor(object);
+			addTechnicalLifetimePropertyDescriptor(object);
+			addManufacturerPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyComponent_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_description_feature",
+								"_UI_EnergyComponent_type"),
+						EnCompPackage.Literals.ENERGY_COMPONENT__DESCRIPTION, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Model Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addModelNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyComponent_modelName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_modelName_feature",
+								"_UI_EnergyComponent_type"),
+						EnCompPackage.Literals.ENERGY_COMPONENT__MODEL_NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Revision Year feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRevisionYearPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyComponent_revisionYear_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_revisionYear_feature",
+								"_UI_EnergyComponent_type"),
+						EnCompPackage.Literals.ENERGY_COMPONENT__REVISION_YEAR, true, false, false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Technical Lifetime feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTechnicalLifetimePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_EnergyComponent_technicalLifetime_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_technicalLifetime_feature",
+						"_UI_EnergyComponent_type"),
+				EnCompPackage.Literals.ENERGY_COMPONENT__TECHNICAL_LIFETIME, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Manufacturer feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addManufacturerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyComponent_manufacturer_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_manufacturer_feature",
+								"_UI_EnergyComponent_type"),
+						EnCompPackage.Literals.ENERGY_COMPONENT__MANUFACTURER, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This returns EnergyComponent.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EnergyComponent"));
+	}
+
+	/**
+	 * <!-- 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 = ((EnergyComponent) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_EnergyComponent_type")
+				: getString("_UI_EnergyComponent_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(EnergyComponent.class)) {
+		case EnCompPackage.ENERGY_COMPONENT__DESCRIPTION:
+		case EnCompPackage.ENERGY_COMPONENT__MODEL_NAME:
+		case EnCompPackage.ENERGY_COMPONENT__REVISION_YEAR:
+		case EnCompPackage.ENERGY_COMPONENT__TECHNICAL_LIFETIME:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsCatalogItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsCatalogItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c840309bedc7601679cb3b44fa5cc282985f9cd
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsCatalogItemProvider.java
@@ -0,0 +1,332 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyComponentsCatalog;
+
+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.energycomponents.EnergyComponentsCatalog} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnergyComponentsCatalogItemProvider 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 EnergyComponentsCatalogItemProvider(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);
+
+			addAuthorPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Author feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAuthorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_EnergyComponentsCatalog_author_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponentsCatalog_author_feature",
+						"_UI_EnergyComponentsCatalog_type"),
+				EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__AUTHOR, 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(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__BIO_FUELS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__MEDIA);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__BOILERS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__INVERTERS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__MATERIALS);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS);
+		}
+		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 EnergyComponentsCatalog.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EnergyComponentsCatalog"));
+	}
+
+	/**
+	 * <!-- 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 = ((EnergyComponentsCatalog) object).getAuthor();
+		return label == null || label.length() == 0 ? getString("_UI_EnergyComponentsCatalog_type")
+				: getString("_UI_EnergyComponentsCatalog_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(EnergyComponentsCatalog.class)) {
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BIO_FUELS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MEDIA:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MATERIALS:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG:
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS:
+			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(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__BIO_FUELS,
+				EnCompFactory.eINSTANCE.createBioFuel()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__MEDIA,
+				EnCompFactory.eINSTANCE.createMedium()));
+
+		newChildDescriptors.add(
+				createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES,
+						EnCompFactory.eINSTANCE.createCombinedHeatPower()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__BOILERS,
+				EnCompFactory.eINSTANCE.createBoiler()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES,
+						EnCompFactory.eINSTANCE.createPhotovoltaicModule()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS,
+						EnCompFactory.eINSTANCE.createSolarThermalCollector()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES,
+				EnCompFactory.eINSTANCE.createWindTurbine()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS,
+						EnCompFactory.eINSTANCE.createGeothermalHeatExchanger()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS,
+				EnCompFactory.eINSTANCE.createHeatPump()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__INVERTERS,
+				EnCompFactory.eINSTANCE.createInverter()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS,
+				EnCompFactory.eINSTANCE.createHeatExchanger()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS,
+				EnCompFactory.eINSTANCE.createElectrolyzer()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS,
+						EnCompFactory.eINSTANCE.createHydrogenCompressor()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS,
+				EnCompFactory.eINSTANCE.createFuelCell()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES,
+				EnCompFactory.eINSTANCE.createThermalStorage()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES,
+				EnCompFactory.eINSTANCE.createElectricalStorage()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES,
+						EnCompFactory.eINSTANCE.createHydrogenStorage()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS,
+				EnCompFactory.eINSTANCE.createFossilFuel()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS,
+				EnCompFactory.eINSTANCE.createManufacturer()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__MATERIALS,
+				EnCompFactory.eINSTANCE.createMaterial()));
+
+		newChildDescriptors
+				.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG,
+						EnCompFactory.eINSTANCE.createEnergyComponentsCostCatalog()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS,
+				EnCompFactory.eINSTANCE.createFossilFuel()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS,
+				EnCompFactory.eINSTANCE.createHydrogen()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS,
+				EnCompFactory.eINSTANCE.createBioFuel()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify = childFeature == EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__BIO_FUELS
+				|| childFeature == EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS
+				|| childFeature == EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS;
+
+		if (qualify) {
+			return getString("_UI_CreateChild_text2",
+					new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsCostCatalogItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsCostCatalogItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..aaf20cb08bed8ac5448c1d4715bacac4d037dd72
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsCostCatalogItemProvider.java
@@ -0,0 +1,229 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog;
+
+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.energycomponents.EnergyComponentsCostCatalog} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnergyComponentsCostCatalogItemProvider 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 EnergyComponentsCostCatalogItemProvider(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);
+
+			addAuthorPropertyDescriptor(object);
+			addRevisionYearPropertyDescriptor(object);
+			addPersonnelCostPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Author feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAuthorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_EnergyComponentsCostCatalog_author_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponentsCostCatalog_author_feature",
+						"_UI_EnergyComponentsCostCatalog_type"),
+				EnCompPackage.Literals.ENERGY_COMPONENTS_COST_CATALOG__AUTHOR, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Revision Year feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRevisionYearPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_EnergyComponentsCostCatalog_revisionYear_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponentsCostCatalog_revisionYear_feature",
+						"_UI_EnergyComponentsCostCatalog_type"),
+				EnCompPackage.Literals.ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR, true, false, false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Personnel Cost feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPersonnelCostPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_EnergyComponentsCostCatalog_personnelCost_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponentsCostCatalog_personnelCost_feature",
+						"_UI_EnergyComponentsCostCatalog_type"),
+				EnCompPackage.Literals.ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES);
+		}
+		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 EnergyComponentsCostCatalog.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EnergyComponentsCostCatalog"));
+	}
+
+	/**
+	 * <!-- 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 = ((EnergyComponentsCostCatalog) object).getAuthor();
+		return label == null || label.length() == 0 ? getString("_UI_EnergyComponentsCostCatalog_type")
+				: getString("_UI_EnergyComponentsCostCatalog_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(EnergyComponentsCostCatalog.class)) {
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__AUTHOR:
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR:
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES:
+			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(EnCompPackage.Literals.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES,
+						EnCompFactory.eINSTANCE.createCost()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsEditPlugin.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..13a504d6f11f1b000a857ca2dbe43ecd664d473e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/EnergyComponentsEditPlugin.java
@@ -0,0 +1,87 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the EnergyComponents edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class EnergyComponentsEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final EnergyComponentsEditPlugin INSTANCE = new EnergyComponentsEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnergyComponentsEditPlugin() {
+		super(new ResourceLocator[] {});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentialFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentialFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..61154ac44f6803f44e24ebf2045c458e78e7638c
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentialFunctionItemProvider.java
@@ -0,0 +1,194 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.ExponentialFunction;
+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.energycomponents.ExponentialFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExponentialFunctionItemProvider 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 ExponentialFunctionItemProvider(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);
+
+			addKeyPropertyDescriptor(object);
+			addParameterAPropertyDescriptor(object);
+			addParameterBPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ExponentialFunction_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ExponentialFunction_key_feature",
+								"_UI_ExponentialFunction_type"),
+						EnCompPackage.Literals.EXPONENTIAL_FUNCTION__KEY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter A feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterAPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ExponentialFunction_parameterA_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ExponentialFunction_parameterA_feature",
+						"_UI_ExponentialFunction_type"),
+				EnCompPackage.Literals.EXPONENTIAL_FUNCTION__PARAMETER_A, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter B feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterBPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ExponentialFunction_parameterB_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ExponentialFunction_parameterB_feature",
+						"_UI_ExponentialFunction_type"),
+				EnCompPackage.Literals.EXPONENTIAL_FUNCTION__PARAMETER_B, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns ExponentialFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExponentialFunction"));
+	}
+
+	/**
+	 * <!-- 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 NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final ExponentialFunction exponentialFunction = (ExponentialFunction) object;
+		final StringBuilder txt = new StringBuilder("Parameter ");
+		txt.append(String.valueOf(exponentialFunction.getKey()));
+		txt.append(":  ");
+		txt.append(" y = ");
+		txt.append(String.valueOf(exponentialFunction.getParameterB()));
+		txt.append(" * ");
+		txt.append(String.valueOf(exponentialFunction.getParameterA()));
+		txt.append("^x");
+		return txt.toString();
+	}
+
+	/**
+	 * 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(ExponentialFunction.class)) {
+		case EnCompPackage.EXPONENTIAL_FUNCTION__KEY:
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_A:
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_B:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentionalCharacteristicItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentionalCharacteristicItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ac07bbaea73e8f0a25cd6cade0408334959512d
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ExponentionalCharacteristicItemProvider.java
@@ -0,0 +1,165 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.ExponentionalCharacteristic;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExponentionalCharacteristicItemProvider extends CharacteristicItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExponentionalCharacteristicItemProvider(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);
+
+			addFunctionsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Functions feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFunctionsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ExponentionalCharacteristic_functions_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ExponentionalCharacteristic_functions_feature",
+						"_UI_ExponentionalCharacteristic_type"),
+				EnCompPackage.Literals.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS, true, false, false, null, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS);
+		}
+		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 ExponentionalCharacteristic.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExponentionalCharacteristic"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ExponentionalCharacteristic_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ExponentionalCharacteristic.class)) {
+		case EnCompPackage.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS:
+			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(EnCompPackage.Literals.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS,
+				EnCompFactory.eINSTANCE.createExponentialFunction()));
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FossilFuelItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FossilFuelItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..36a619f051e7b8d08d86d47b331ac364ac6f5232
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FossilFuelItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.FossilFuel;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.FossilFuel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FossilFuelItemProvider extends FuelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FossilFuelItemProvider(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);
+
+			addMethaneContentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Methane Content feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMethaneContentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_FossilFuel_methaneContent_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_FossilFuel_methaneContent_feature",
+								"_UI_FossilFuel_type"),
+						EnCompPackage.Literals.FOSSIL_FUEL__METHANE_CONTENT, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns FossilFuel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FossilFuel"));
+	}
+
+	/**
+	 * <!-- 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 = ((FossilFuel) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_FossilFuel_type")
+				: getString("_UI_FossilFuel_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(FossilFuel.class)) {
+		case EnCompPackage.FOSSIL_FUEL__METHANE_CONTENT:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FuelCellItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FuelCellItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a798a77a541de9aa845cec79e218bf77f2ae215d
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FuelCellItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.FuelCell;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.FuelCell} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FuelCellItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FuelCellItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns FuelCell.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FuelCell"));
+	}
+
+	/**
+	 * <!-- 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 = ((FuelCell) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_FuelCell_type")
+				: getString("_UI_FuelCell_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FuelItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FuelItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c7c9b53360f1de8de9b8d1cab76187e551f34a9e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FuelItemProvider.java
@@ -0,0 +1,185 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Fuel;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Fuel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FuelItemProvider extends EnergyCarrierItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FuelItemProvider(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);
+
+			addNetCalorificValuePropertyDescriptor(object);
+			addGrossCalorificValuePropertyDescriptor(object);
+			addDensityPropertyDescriptor(object);
+			addFuelTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Net Calorific Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNetCalorificValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Fuel_netCalorificValue_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Fuel_netCalorificValue_feature",
+								"_UI_Fuel_type"),
+						EnCompPackage.Literals.FUEL__NET_CALORIFIC_VALUE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Gross Calorific Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGrossCalorificValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Fuel_grossCalorificValue_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Fuel_grossCalorificValue_feature",
+								"_UI_Fuel_type"),
+						EnCompPackage.Literals.FUEL__GROSS_CALORIFIC_VALUE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Density feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDensityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Fuel_density_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Fuel_density_feature", "_UI_Fuel_type"),
+						EnCompPackage.Literals.FUEL__DENSITY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Fuel Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFuelTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Fuel_fuelType_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Fuel_fuelType_feature", "_UI_Fuel_type"),
+						EnCompPackage.Literals.FUEL__FUEL_TYPE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Fuel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Fuel"));
+	}
+
+	/**
+	 * <!-- 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 = ((Fuel) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Fuel_type")
+				: getString("_UI_Fuel_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(Fuel.class)) {
+		case EnCompPackage.FUEL__NET_CALORIFIC_VALUE:
+		case EnCompPackage.FUEL__GROSS_CALORIFIC_VALUE:
+		case EnCompPackage.FUEL__DENSITY:
+		case EnCompPackage.FUEL__FUEL_TYPE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c1fc47678b6b33cc4840465b89d53666a4a1ae1
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/FunctionItemProvider.java
@@ -0,0 +1,122 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Function} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+		IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Function.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Function"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Function_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/GeothermalHeatExchangerItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/GeothermalHeatExchangerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1df32ef1e509764c114affb912992c15fff54bb
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/GeothermalHeatExchangerItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.GeothermalHeatExchanger;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GeothermalHeatExchangerItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GeothermalHeatExchangerItemProvider(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);
+
+			addPipeDiameterPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Pipe Diameter feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPipeDiameterPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_GeothermalHeatExchanger_pipeDiameter_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_GeothermalHeatExchanger_pipeDiameter_feature", "_UI_GeothermalHeatExchanger_type"),
+						EnCompPackage.Literals.GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns GeothermalHeatExchanger.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/GeothermalHeatExchanger"));
+	}
+
+	/**
+	 * <!-- 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 = ((GeothermalHeatExchanger) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_GeothermalHeatExchanger_type")
+				: getString("_UI_GeothermalHeatExchanger_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(GeothermalHeatExchanger.class)) {
+		case EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HeatExchangerItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HeatExchangerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8586e619399121c413f42c4138b66f7b6b45aa7e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HeatExchangerItemProvider.java
@@ -0,0 +1,151 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HeatExchanger;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.HeatExchanger} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HeatExchangerItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HeatExchangerItemProvider(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);
+
+			addHeatRecoveryEfficiencyPropertyDescriptor(object);
+			addNominalElectricityConsumptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Heat Recovery Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHeatRecoveryEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_HeatExchanger_heatRecoveryEfficiency_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_HeatExchanger_heatRecoveryEfficiency_feature",
+						"_UI_HeatExchanger_type"),
+				EnCompPackage.Literals.HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Electricity Consumption feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalElectricityConsumptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HeatExchanger_nominalElectricityConsumption_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_HeatExchanger_nominalElectricityConsumption_feature", "_UI_HeatExchanger_type"),
+						EnCompPackage.Literals.HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns HeatExchanger.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HeatExchanger"));
+	}
+
+	/**
+	 * <!-- 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 = ((HeatExchanger) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_HeatExchanger_type")
+				: getString("_UI_HeatExchanger_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(HeatExchanger.class)) {
+		case EnCompPackage.HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY:
+		case EnCompPackage.HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HeatPumpItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HeatPumpItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0dbd7287ea310a3de151dfffda489aeb5e63b9c
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HeatPumpItemProvider.java
@@ -0,0 +1,289 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HeatPump;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.HeatPump} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HeatPumpItemProvider extends ThermalEnergyDeviceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HeatPumpItemProvider(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);
+
+			addHeatSourcePropertyDescriptor(object);
+			addCoefficientOfPerformancePropertyDescriptor(object);
+			addPowerInputPropertyDescriptor(object);
+			addHeatOutputPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Heat Source feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHeatSourcePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HeatPump_heatSource_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_HeatPump_heatSource_feature",
+								"_UI_HeatPump_type"),
+						EnCompPackage.Literals.HEAT_PUMP__HEAT_SOURCE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Coefficient Of Performance feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCoefficientOfPerformancePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HeatPump_coefficientOfPerformance_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_HeatPump_coefficientOfPerformance_feature",
+								"_UI_HeatPump_type"),
+						EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, true, false, false, null, null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Power Input feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPowerInputPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HeatPump_powerInput_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_HeatPump_powerInput_feature",
+								"_UI_HeatPump_type"),
+						EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT, true, false, false, null, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Heat Output feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHeatOutputPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HeatPump_heatOutput_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_HeatPump_heatOutput_feature",
+								"_UI_HeatPump_type"),
+						EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT, true, false, false, null, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE);
+			childrenFeatures.add(EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT);
+			childrenFeatures.add(EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT);
+		}
+		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 HeatPump.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HeatPump"));
+	}
+
+	/**
+	 * <!-- 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 = ((HeatPump) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_HeatPump_type")
+				: getString("_UI_HeatPump_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(HeatPump.class)) {
+		case EnCompPackage.HEAT_PUMP__HEAT_SOURCE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE:
+		case EnCompPackage.HEAT_PUMP__POWER_INPUT:
+		case EnCompPackage.HEAT_PUMP__HEAT_OUTPUT:
+			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(EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
+				EnCompFactory.eINSTANCE.createTableCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
+				EnCompFactory.eINSTANCE.createLinearCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
+				EnCompFactory.eINSTANCE.createExponentionalCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
+				EnCompFactory.eINSTANCE.createPolynomialCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
+				EnCompFactory.eINSTANCE.createPowerCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT,
+				EnCompFactory.eINSTANCE.createTableCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT,
+				EnCompFactory.eINSTANCE.createLinearCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT,
+				EnCompFactory.eINSTANCE.createExponentionalCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT,
+				EnCompFactory.eINSTANCE.createPolynomialCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT,
+				EnCompFactory.eINSTANCE.createPowerCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT,
+				EnCompFactory.eINSTANCE.createTableCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT,
+				EnCompFactory.eINSTANCE.createLinearCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT,
+				EnCompFactory.eINSTANCE.createExponentionalCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT,
+				EnCompFactory.eINSTANCE.createPolynomialCharacteristic()));
+
+		newChildDescriptors.add(createChildParameter(EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT,
+				EnCompFactory.eINSTANCE.createPowerCharacteristic()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify = childFeature == EnCompPackage.Literals.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE
+				|| childFeature == EnCompPackage.Literals.HEAT_PUMP__POWER_INPUT
+				|| childFeature == EnCompPackage.Literals.HEAT_PUMP__HEAT_OUTPUT;
+
+		if (qualify) {
+			return getString("_UI_CreateChild_text2",
+					new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrocarbonItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrocarbonItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a4d64fc55fc959ff9f1015f9b9b5d95bf5a5c1c
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrocarbonItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.Hydrocarbon;
+
+import de.hftstuttgart.units.NullableQuantity;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Hydrocarbon} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HydrocarbonItemProvider extends MediumItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HydrocarbonItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Hydrocarbon.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Hydrocarbon"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		NullableQuantity labelValue = ((Hydrocarbon) object).getDensity();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_Hydrocarbon_type")
+				: getString("_UI_Hydrocarbon_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenCompressorItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenCompressorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..249994444a305039530a33821b0df8a80f2f62ee
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenCompressorItemProvider.java
@@ -0,0 +1,187 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HydrogenCompressor;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.HydrogenCompressor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HydrogenCompressorItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HydrogenCompressorItemProvider(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);
+
+			addEfficiencyPropertyDescriptor(object);
+			addThermodynamicModePropertyDescriptor(object);
+			addMaxPressurePropertyDescriptor(object);
+			addMaxDeliveryRatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HydrogenCompressor_efficiency_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_HydrogenCompressor_efficiency_feature",
+								"_UI_HydrogenCompressor_type"),
+						EnCompPackage.Literals.HYDROGEN_COMPRESSOR__EFFICIENCY, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Thermodynamic Mode feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addThermodynamicModePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_HydrogenCompressor_thermodynamicMode_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_HydrogenCompressor_thermodynamicMode_feature",
+						"_UI_HydrogenCompressor_type"),
+				EnCompPackage.Literals.HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE, true, false, false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Max Pressure feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaxPressurePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_HydrogenCompressor_maxPressure_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_HydrogenCompressor_maxPressure_feature",
+						"_UI_HydrogenCompressor_type"),
+				EnCompPackage.Literals.HYDROGEN_COMPRESSOR__MAX_PRESSURE, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Max Delivery Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaxDeliveryRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_HydrogenCompressor_maxDeliveryRate_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_HydrogenCompressor_maxDeliveryRate_feature",
+						"_UI_HydrogenCompressor_type"),
+				EnCompPackage.Literals.HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns HydrogenCompressor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HydrogenCompressor"));
+	}
+
+	/**
+	 * <!-- 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 = ((HydrogenCompressor) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_HydrogenCompressor_type")
+				: getString("_UI_HydrogenCompressor_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(HydrogenCompressor.class)) {
+		case EnCompPackage.HYDROGEN_COMPRESSOR__EFFICIENCY:
+		case EnCompPackage.HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE:
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_PRESSURE:
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7903ec683c0bc3e8099e2ce87d3f197e40991165
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenItemProvider.java
@@ -0,0 +1,149 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Hydrogen;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Hydrogen} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HydrogenItemProvider extends FuelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HydrogenItemProvider(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);
+
+			addChemicalPurityPropertyDescriptor(object);
+			addHydrogenForHydrogenStoragePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Chemical Purity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addChemicalPurityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Hydrogen_chemicalPurity_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Hydrogen_chemicalPurity_feature",
+								"_UI_Hydrogen_type"),
+						EnCompPackage.Literals.HYDROGEN__CHEMICAL_PURITY, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Hydrogen For Hydrogen Storage feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHydrogenForHydrogenStoragePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_Hydrogen_hydrogenForHydrogenStorage_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Hydrogen_hydrogenForHydrogenStorage_feature",
+						"_UI_Hydrogen_type"),
+				EnCompPackage.Literals.HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This returns Hydrogen.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Hydrogen"));
+	}
+
+	/**
+	 * <!-- 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 = ((Hydrogen) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Hydrogen_type")
+				: getString("_UI_Hydrogen_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(Hydrogen.class)) {
+		case EnCompPackage.HYDROGEN__CHEMICAL_PURITY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenStorageItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenStorageItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..34a8a022bd67e0552b8b322fb347386524495c15
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/HydrogenStorageItemProvider.java
@@ -0,0 +1,169 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HydrogenStorage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.HydrogenStorage} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HydrogenStorageItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HydrogenStorageItemProvider(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);
+
+			addNumberOfCylindersPropertyDescriptor(object);
+			addCylinderVolumePropertyDescriptor(object);
+			addNominalPressurePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Number Of Cylinders feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNumberOfCylindersPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_HydrogenStorage_numberOfCylinders_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_HydrogenStorage_numberOfCylinders_feature",
+						"_UI_HydrogenStorage_type"),
+				EnCompPackage.Literals.HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS, true, false, false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cylinder Volume feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCylinderVolumePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HydrogenStorage_cylinderVolume_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_HydrogenStorage_cylinderVolume_feature",
+								"_UI_HydrogenStorage_type"),
+						EnCompPackage.Literals.HYDROGEN_STORAGE__CYLINDER_VOLUME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Pressure feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalPressurePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_HydrogenStorage_nominalPressure_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_HydrogenStorage_nominalPressure_feature",
+								"_UI_HydrogenStorage_type"),
+						EnCompPackage.Literals.HYDROGEN_STORAGE__NOMINAL_PRESSURE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns HydrogenStorage.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HydrogenStorage"));
+	}
+
+	/**
+	 * <!-- 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 = ((HydrogenStorage) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_HydrogenStorage_type")
+				: getString("_UI_HydrogenStorage_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(HydrogenStorage.class)) {
+		case EnCompPackage.HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS:
+		case EnCompPackage.HYDROGEN_STORAGE__CYLINDER_VOLUME:
+		case EnCompPackage.HYDROGEN_STORAGE__NOMINAL_PRESSURE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/InverterItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/InverterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8de47792e5716580661429ee32a29ae923eb22f2
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/InverterItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.Inverter;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Inverter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InverterItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InverterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Inverter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Inverter"));
+	}
+
+	/**
+	 * <!-- 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 = ((Inverter) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_Inverter_type")
+				: getString("_UI_Inverter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearCharacteristicItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearCharacteristicItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d9d5249db35d52149620eb80a3ed2839f25f52f
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearCharacteristicItemProvider.java
@@ -0,0 +1,165 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.LinearCharacteristic;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.LinearCharacteristic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinearCharacteristicItemProvider extends CharacteristicItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinearCharacteristicItemProvider(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);
+
+			addFunctionsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Functions feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFunctionsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_LinearCharacteristic_functions_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LinearCharacteristic_functions_feature",
+								"_UI_LinearCharacteristic_type"),
+						EnCompPackage.Literals.LINEAR_CHARACTERISTIC__FUNCTIONS, true, false, false, null, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.LINEAR_CHARACTERISTIC__FUNCTIONS);
+		}
+		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 LinearCharacteristic.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LinearCharacteristic"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LinearCharacteristic_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LinearCharacteristic.class)) {
+		case EnCompPackage.LINEAR_CHARACTERISTIC__FUNCTIONS:
+			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(EnCompPackage.Literals.LINEAR_CHARACTERISTIC__FUNCTIONS,
+				EnCompFactory.eINSTANCE.createLinearFunction()));
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..53a68b94b58ebc96045e4a989630ac016a317ad6
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/LinearFunctionItemProvider.java
@@ -0,0 +1,192 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.LinearFunction;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+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.energycomponents.LinearFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinearFunctionItemProvider 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 LinearFunctionItemProvider(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);
+
+			addKeyPropertyDescriptor(object);
+			addParameterMPropertyDescriptor(object);
+			addParameterCPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_LinearFunction_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LinearFunction_key_feature",
+								"_UI_LinearFunction_type"),
+						EnCompPackage.Literals.LINEAR_FUNCTION__KEY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter M feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterMPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_LinearFunction_parameterM_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LinearFunction_parameterM_feature",
+								"_UI_LinearFunction_type"),
+						EnCompPackage.Literals.LINEAR_FUNCTION__PARAMETER_M, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter C feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterCPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_LinearFunction_parameterC_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LinearFunction_parameterC_feature",
+								"_UI_LinearFunction_type"),
+						EnCompPackage.Literals.LINEAR_FUNCTION__PARAMETER_C, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns LinearFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LinearFunction"));
+	}
+
+	/**
+	 * <!-- 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 NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final LinearFunction linearFunction = (LinearFunction) object;
+		final StringBuilder txt = new StringBuilder("Parameter ");
+		txt.append(String.valueOf(linearFunction.getKey()));
+		txt.append(":  ");
+		txt.append(" y = ");
+		txt.append(String.valueOf(linearFunction.getParameterM()));
+		txt.append("*x + ");
+		txt.append(String.valueOf(linearFunction.getParameterC()));
+		return txt.toString();
+	}
+
+	/**
+	 * 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(LinearFunction.class)) {
+		case EnCompPackage.LINEAR_FUNCTION__KEY:
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_M:
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_C:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ManufacturerItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ManufacturerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..13d2293bbb0a68550acfc21351a3c53823d08ef5
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ManufacturerItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Manufacturer;
+
+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.energycomponents.Manufacturer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ManufacturerItemProvider 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 ManufacturerItemProvider(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);
+
+			addManufacturerNamePropertyDescriptor(object);
+			addCountryPropertyDescriptor(object);
+			addOutOfBusinessSincePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Manufacturer Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addManufacturerNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Manufacturer_manufacturerName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Manufacturer_manufacturerName_feature",
+								"_UI_Manufacturer_type"),
+						EnCompPackage.Literals.MANUFACTURER__MANUFACTURER_NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Country feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCountryPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Manufacturer_country_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Manufacturer_country_feature",
+								"_UI_Manufacturer_type"),
+						EnCompPackage.Literals.MANUFACTURER__COUNTRY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Out Of Business Since feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOutOfBusinessSincePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Manufacturer_outOfBusinessSince_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Manufacturer_outOfBusinessSince_feature",
+								"_UI_Manufacturer_type"),
+						EnCompPackage.Literals.MANUFACTURER__OUT_OF_BUSINESS_SINCE, true, false, false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Manufacturer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Manufacturer"));
+	}
+
+	/**
+	 * <!-- 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 = ((Manufacturer) object).getManufacturerName();
+		return label == null || label.length() == 0 ? getString("_UI_Manufacturer_type")
+				: getString("_UI_Manufacturer_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(Manufacturer.class)) {
+		case EnCompPackage.MANUFACTURER__MANUFACTURER_NAME:
+		case EnCompPackage.MANUFACTURER__COUNTRY:
+		case EnCompPackage.MANUFACTURER__OUT_OF_BUSINESS_SINCE:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MaterialItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MaterialItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e90d5cbd7452c91ff3a6073ae4fbef7af9eadd85
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MaterialItemProvider.java
@@ -0,0 +1,170 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Material;
+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.energycomponents.Material} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MaterialItemProvider 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 MaterialItemProvider(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);
+
+			addThermalConductivityPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Thermal Conductivity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addThermalConductivityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Material_thermalConductivity_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Material_thermalConductivity_feature",
+								"_UI_Material_type"),
+						EnCompPackage.Literals.MATERIAL__THERMAL_CONDUCTIVITY, 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_Material_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Material_name_feature",
+								"_UI_Material_type"),
+						EnCompPackage.Literals.MATERIAL__NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Material.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Material"));
+	}
+
+	/**
+	 * <!-- 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 = ((Material) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Material_type")
+				: getString("_UI_Material_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(Material.class)) {
+		case EnCompPackage.MATERIAL__THERMAL_CONDUCTIVITY:
+		case EnCompPackage.MATERIAL__NAME:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MediumItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MediumItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d632889c347657aaea8caf1d5a4adedf315c41aa
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/MediumItemProvider.java
@@ -0,0 +1,223 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Medium;
+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.energycomponents.Medium} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MediumItemProvider 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 MediumItemProvider(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);
+
+			addDensityPropertyDescriptor(object);
+			addHeatCapacityPropertyDescriptor(object);
+			addEvaporationTemperaturePropertyDescriptor(object);
+			addMeltingTemperaturePropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Density feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDensityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Medium_density_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Medium_density_feature",
+								"_UI_Medium_type"),
+						EnCompPackage.Literals.MEDIUM__DENSITY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Heat Capacity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHeatCapacityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Medium_heatCapacity_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Medium_heatCapacity_feature",
+								"_UI_Medium_type"),
+						EnCompPackage.Literals.MEDIUM__HEAT_CAPACITY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Evaporation Temperature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEvaporationTemperaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Medium_evaporationTemperature_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Medium_evaporationTemperature_feature",
+								"_UI_Medium_type"),
+						EnCompPackage.Literals.MEDIUM__EVAPORATION_TEMPERATURE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Melting Temperature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMeltingTemperaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Medium_meltingTemperature_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Medium_meltingTemperature_feature",
+								"_UI_Medium_type"),
+						EnCompPackage.Literals.MEDIUM__MELTING_TEMPERATURE, 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_Medium_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Medium_name_feature", "_UI_Medium_type"),
+						EnCompPackage.Literals.MEDIUM__NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Medium.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Medium"));
+	}
+
+	/**
+	 * <!-- 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 = ((Medium) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Medium_type")
+				: getString("_UI_Medium_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(Medium.class)) {
+		case EnCompPackage.MEDIUM__DENSITY:
+		case EnCompPackage.MEDIUM__HEAT_CAPACITY:
+		case EnCompPackage.MEDIUM__EVAPORATION_TEMPERATURE:
+		case EnCompPackage.MEDIUM__MELTING_TEMPERATURE:
+		case EnCompPackage.MEDIUM__NAME:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PhotovoltaicModuleItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PhotovoltaicModuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4841b18a19dd87a93e443c0f78be35c16e71fac0
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PhotovoltaicModuleItemProvider.java
@@ -0,0 +1,223 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PhotovoltaicModule;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.PhotovoltaicModule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PhotovoltaicModuleItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PhotovoltaicModuleItemProvider(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);
+
+			addCellTypePropertyDescriptor(object);
+			addNominalPowerPropertyDescriptor(object);
+			addMppVoltagePropertyDescriptor(object);
+			addMppCurrentPropertyDescriptor(object);
+			addNominalEfficiencyPropertyDescriptor(object);
+			addModuleAreaPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Cell Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCellTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PhotovoltaicModule_cellType_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PhotovoltaicModule_cellType_feature",
+								"_UI_PhotovoltaicModule_type"),
+						EnCompPackage.Literals.PHOTOVOLTAIC_MODULE__CELL_TYPE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Power feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalPowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_PhotovoltaicModule_nominalPower_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_PhotovoltaicModule_nominalPower_feature",
+						"_UI_PhotovoltaicModule_type"),
+				EnCompPackage.Literals.PHOTOVOLTAIC_MODULE__NOMINAL_POWER, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Mpp Voltage feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMppVoltagePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PhotovoltaicModule_mppVoltage_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PhotovoltaicModule_mppVoltage_feature",
+								"_UI_PhotovoltaicModule_type"),
+						EnCompPackage.Literals.PHOTOVOLTAIC_MODULE__MPP_VOLTAGE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Mpp Current feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMppCurrentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PhotovoltaicModule_mppCurrent_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PhotovoltaicModule_mppCurrent_feature",
+								"_UI_PhotovoltaicModule_type"),
+						EnCompPackage.Literals.PHOTOVOLTAIC_MODULE__MPP_CURRENT, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_PhotovoltaicModule_nominalEfficiency_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_PhotovoltaicModule_nominalEfficiency_feature",
+						"_UI_PhotovoltaicModule_type"),
+				EnCompPackage.Literals.PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Module Area feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addModuleAreaPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PhotovoltaicModule_moduleArea_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PhotovoltaicModule_moduleArea_feature",
+								"_UI_PhotovoltaicModule_type"),
+						EnCompPackage.Literals.PHOTOVOLTAIC_MODULE__MODULE_AREA, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns PhotovoltaicModule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PhotovoltaicModule"));
+	}
+
+	/**
+	 * <!-- 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 = ((PhotovoltaicModule) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_PhotovoltaicModule_type")
+				: getString("_UI_PhotovoltaicModule_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(PhotovoltaicModule.class)) {
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__CELL_TYPE:
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_POWER:
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_VOLTAGE:
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_CURRENT:
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY:
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MODULE_AREA:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialCharacteristicItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialCharacteristicItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2fcabbf60ad43ef23c259409e2ab0f81b88502e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialCharacteristicItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PolynomialCharacteristic;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.PolynomialCharacteristic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PolynomialCharacteristicItemProvider extends CharacteristicItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PolynomialCharacteristicItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS);
+		}
+		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 PolynomialCharacteristic.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PolynomialCharacteristic"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_PolynomialCharacteristic_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PolynomialCharacteristic.class)) {
+		case EnCompPackage.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS:
+			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(EnCompPackage.Literals.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS,
+				EnCompFactory.eINSTANCE.createPolynomialFunction()));
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..cfcf7f9180d5365294a79f49d47f0335f385cca5
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PolynomialFunctionItemProvider.java
@@ -0,0 +1,218 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PolynomialFunction;
+
+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.energycomponents.PolynomialFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PolynomialFunctionItemProvider 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 PolynomialFunctionItemProvider(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);
+
+			addKeyPropertyDescriptor(object);
+			addParameterAPropertyDescriptor(object);
+			addParameterBPropertyDescriptor(object);
+			addParameterCPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PolynomialFunction_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PolynomialFunction_key_feature",
+								"_UI_PolynomialFunction_type"),
+						EnCompPackage.Literals.POLYNOMIAL_FUNCTION__KEY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter A feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterAPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PolynomialFunction_parameterA_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PolynomialFunction_parameterA_feature",
+								"_UI_PolynomialFunction_type"),
+						EnCompPackage.Literals.POLYNOMIAL_FUNCTION__PARAMETER_A, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter B feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterBPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PolynomialFunction_parameterB_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PolynomialFunction_parameterB_feature",
+								"_UI_PolynomialFunction_type"),
+						EnCompPackage.Literals.POLYNOMIAL_FUNCTION__PARAMETER_B, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter C feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterCPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PolynomialFunction_parameterC_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PolynomialFunction_parameterC_feature",
+								"_UI_PolynomialFunction_type"),
+						EnCompPackage.Literals.POLYNOMIAL_FUNCTION__PARAMETER_C, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns PolynomialFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PolynomialFunction"));
+	}
+
+	/**
+	 * <!-- 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 NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final PolynomialFunction polynomialFunction = (PolynomialFunction) object;
+		final StringBuilder txt = new StringBuilder("Parameter ");
+		txt.append(String.valueOf(polynomialFunction.getKey()));
+		txt.append(":  ");
+		txt.append(" y = ");
+		txt.append(String.valueOf(polynomialFunction.getParameterA()));
+		txt.append(" * ");
+		txt.append("x^2");
+		txt.append(" + ");
+		txt.append(String.valueOf(polynomialFunction.getParameterB()));
+		txt.append("x");
+		txt.append(" + ");
+		txt.append(String.valueOf(polynomialFunction.getParameterC()));
+		return txt.toString();
+	}
+
+	/**
+	 * 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(PolynomialFunction.class)) {
+		case EnCompPackage.POLYNOMIAL_FUNCTION__KEY:
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_A:
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_B:
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_C:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerCharacteristicItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerCharacteristicItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe51101cbb56500171299392a8320a3e5ddf7caf
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerCharacteristicItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PowerCharacteristic;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.PowerCharacteristic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PowerCharacteristicItemProvider extends CharacteristicItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PowerCharacteristicItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.POWER_CHARACTERISTIC__FUNCTIONS);
+		}
+		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 PowerCharacteristic.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PowerCharacteristic"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_PowerCharacteristic_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PowerCharacteristic.class)) {
+		case EnCompPackage.POWER_CHARACTERISTIC__FUNCTIONS:
+			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(EnCompPackage.Literals.POWER_CHARACTERISTIC__FUNCTIONS,
+				EnCompFactory.eINSTANCE.createPowerFunction()));
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..33904f071c0b79c6596e16b290d7e2bcaa50ba11
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/PowerFunctionItemProvider.java
@@ -0,0 +1,198 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PowerFunction;
+
+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.energycomponents.PowerFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PowerFunctionItemProvider 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 PowerFunctionItemProvider(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);
+
+			addKeyPropertyDescriptor(object);
+			addParameterAPropertyDescriptor(object);
+			addParameterBPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PowerFunction_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PowerFunction_key_feature",
+								"_UI_PowerFunction_type"),
+						EnCompPackage.Literals.POWER_FUNCTION__KEY, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter A feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterAPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PowerFunction_parameterA_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PowerFunction_parameterA_feature",
+								"_UI_PowerFunction_type"),
+						EnCompPackage.Literals.POWER_FUNCTION__PARAMETER_A, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter B feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterBPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_PowerFunction_parameterB_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PowerFunction_parameterB_feature",
+								"_UI_PowerFunction_type"),
+						EnCompPackage.Literals.POWER_FUNCTION__PARAMETER_B, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns PowerFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PowerFunction"));
+	}
+
+	/**
+	 * <!-- 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 NOT
+	 */
+	@Override
+
+	public String getText(Object object) {
+		final PowerFunction powerFunction = (PowerFunction) object;
+		final StringBuilder txt = new StringBuilder("Parameter ");
+		txt.append(String.valueOf(powerFunction.getKey()));
+		txt.append(":  ");
+		txt.append(" y = ");
+		txt.append(String.valueOf(powerFunction.getParameterA()));
+		txt.append(" * ");
+		txt.append("x^");
+		txt.append(String.valueOf(powerFunction.getParameterB()));
+
+		return txt.toString();
+	}
+
+	/**
+	 * 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(PowerFunction.class)) {
+		case EnCompPackage.POWER_FUNCTION__KEY:
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_A:
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_B:
+			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 EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/RegularFuelItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/RegularFuelItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fb6190ac5e4e3838f3b9afb791125efa0a866600
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/RegularFuelItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.RegularFuel;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.RegularFuel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RegularFuelItemProvider extends FuelItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RegularFuelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns RegularFuel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/RegularFuel"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((RegularFuel) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_RegularFuel_type")
+				: getString("_UI_RegularFuel_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SaltHydrateItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SaltHydrateItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc34a1ebcce0c8ac7777daf49788e173925b5b17
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SaltHydrateItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.SaltHydrate;
+
+import de.hftstuttgart.units.NullableQuantity;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.SaltHydrate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SaltHydrateItemProvider extends MediumItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SaltHydrateItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns SaltHydrate.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SaltHydrate"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		NullableQuantity labelValue = ((SaltHydrate) object).getDensity();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_SaltHydrate_type")
+				: getString("_UI_SaltHydrate_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SolarThermalCollectorItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SolarThermalCollectorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c9ba28f90ca38615f990772d7feb37c5c2e1558d
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/SolarThermalCollectorItemProvider.java
@@ -0,0 +1,207 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.SolarThermalCollector;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.SolarThermalCollector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SolarThermalCollectorItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SolarThermalCollectorItemProvider(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);
+
+			addCollectorTypePropertyDescriptor(object);
+			addApertureAreaPropertyDescriptor(object);
+			addOpticalEfficiencyPropertyDescriptor(object);
+			addLinearHeatLossCoefficientPropertyDescriptor(object);
+			addQuadraticalHeatLossCoefficientPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Collector Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCollectorTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_SolarThermalCollector_collectorType_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_SolarThermalCollector_collectorType_feature", "_UI_SolarThermalCollector_type"),
+						EnCompPackage.Literals.SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Aperture Area feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addApertureAreaPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_SolarThermalCollector_apertureArea_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_SolarThermalCollector_apertureArea_feature", "_UI_SolarThermalCollector_type"),
+						EnCompPackage.Literals.SOLAR_THERMAL_COLLECTOR__APERTURE_AREA, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Optical Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOpticalEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_SolarThermalCollector_opticalEfficiency_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_SolarThermalCollector_opticalEfficiency_feature",
+						"_UI_SolarThermalCollector_type"),
+				EnCompPackage.Literals.SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Linear Heat Loss Coefficient feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLinearHeatLossCoefficientPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_SolarThermalCollector_linearHeatLossCoefficient_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_SolarThermalCollector_linearHeatLossCoefficient_feature",
+								"_UI_SolarThermalCollector_type"),
+						EnCompPackage.Literals.SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT, true, false,
+						false, ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Quadratical Heat Loss Coefficient feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addQuadraticalHeatLossCoefficientPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_SolarThermalCollector_quadraticalHeatLossCoefficient_feature"),
+				getString("_UI_PropertyDescriptor_description",
+						"_UI_SolarThermalCollector_quadraticalHeatLossCoefficient_feature",
+						"_UI_SolarThermalCollector_type"),
+				EnCompPackage.Literals.SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns SolarThermalCollector.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SolarThermalCollector"));
+	}
+
+	/**
+	 * <!-- 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 = ((SolarThermalCollector) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_SolarThermalCollector_type")
+				: getString("_UI_SolarThermalCollector_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(SolarThermalCollector.class)) {
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE:
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__APERTURE_AREA:
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY:
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT:
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableCharacteristicItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableCharacteristicItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..af808066340a081f1981cc852e075a192fdf53ca
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableCharacteristicItemProvider.java
@@ -0,0 +1,154 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.TableCharacteristic;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.TableCharacteristic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TableCharacteristicItemProvider extends CharacteristicItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TableCharacteristicItemProvider(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);
+
+			addFunctionsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Functions feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFunctionsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_TableCharacteristic_functions_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_TableCharacteristic_functions_feature",
+								"_UI_TableCharacteristic_type"),
+						EnCompPackage.Literals.TABLE_CHARACTERISTIC__FUNCTIONS, true, false, false, null, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(EnCompPackage.Literals.TABLE_CHARACTERISTIC__FUNCTIONS);
+		}
+		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);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_TableCharacteristic_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(TableCharacteristic.class)) {
+		case EnCompPackage.TABLE_CHARACTERISTIC__FUNCTIONS:
+			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(EnCompPackage.Literals.TABLE_CHARACTERISTIC__FUNCTIONS,
+				EnCompFactory.eINSTANCE.createTableFunction()));
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableFunctionItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a270545017ecf93c3b6d0bd786abcbf0ebe5b2b
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/TableFunctionItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.DataPoint;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.TableFunction;
+
+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.EList;
+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.energycomponents.TableFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TableFunctionItemProvider 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 TableFunctionItemProvider(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);
+
+			addKeyPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_TableFunction_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_TableFunction_key_feature",
+								"_UI_TableFunction_type"),
+						EnCompPackage.Literals.TABLE_FUNCTION__KEY, 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(EnCompPackage.Literals.TABLE_FUNCTION__DATAPOINTS);
+		}
+		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 TableFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TableFunction"));
+	}
+
+	/**
+	 * <!-- 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 NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final TableFunction tableFunction = ((TableFunction) object);
+		final EList<DataPoint> dataPoints = tableFunction.getDatapoints();
+		final int maxDisplayed = 5;
+		final StringBuilder txt = new StringBuilder("Parameter ");
+		txt.append(String.valueOf(tableFunction.getKey()));
+		txt.append(":  ");
+		dataPoints.stream().limit(maxDisplayed).forEach(dp -> {
+			txt.append("(");
+			txt.append(String.valueOf(dp.getX()));
+			txt.append("|");
+			txt.append(String.valueOf(dp.getY()));
+			txt.append(") ");
+		});
+		if (dataPoints.size() > maxDisplayed) {
+			txt.append("...");
+		}
+		return txt.toString();
+	}
+
+	/**
+	 * 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(TableFunction.class)) {
+		case EnCompPackage.TABLE_FUNCTION__KEY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case EnCompPackage.TABLE_FUNCTION__DATAPOINTS:
+			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(EnCompPackage.Literals.TABLE_FUNCTION__DATAPOINTS,
+				EnCompFactory.eINSTANCE.createDataPoint()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EnergyComponentsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ThermalEnergyDeviceItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ThermalEnergyDeviceItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..458c0a54706496acc72e61ecd18944d73916f2ab
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ThermalEnergyDeviceItemProvider.java
@@ -0,0 +1,169 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.ThermalEnergyDevice;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.ThermalEnergyDevice} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ThermalEnergyDeviceItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ThermalEnergyDeviceItemProvider(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);
+
+			addInstalledThermalPowerPropertyDescriptor(object);
+			addModulationRangePropertyDescriptor(object);
+			addFuelPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Installed Thermal Power feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInstalledThermalPowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ThermalEnergyDevice_installedThermalPower_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ThermalEnergyDevice_installedThermalPower_feature",
+						"_UI_ThermalEnergyDevice_type"),
+				EnCompPackage.Literals.THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Modulation Range feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addModulationRangePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ThermalEnergyDevice_modulationRange_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ThermalEnergyDevice_modulationRange_feature",
+						"_UI_ThermalEnergyDevice_type"),
+				EnCompPackage.Literals.THERMAL_ENERGY_DEVICE__MODULATION_RANGE, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Fuel feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFuelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalEnergyDevice_fuel_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalEnergyDevice_fuel_feature",
+								"_UI_ThermalEnergyDevice_type"),
+						EnCompPackage.Literals.THERMAL_ENERGY_DEVICE__FUEL, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns ThermalEnergyDevice.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ThermalEnergyDevice"));
+	}
+
+	/**
+	 * <!-- 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 = ((ThermalEnergyDevice) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_ThermalEnergyDevice_type")
+				: getString("_UI_ThermalEnergyDevice_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(ThermalEnergyDevice.class)) {
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__MODULATION_RANGE:
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__FUEL:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ThermalStorageItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ThermalStorageItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe1bfd703c7a5d7a0e05fc9df7a0337ed21faafb
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/ThermalStorageItemProvider.java
@@ -0,0 +1,272 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.ThermalStorage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.ThermalStorage} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ThermalStorageItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ThermalStorageItemProvider(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);
+
+			addVolumePropertyDescriptor(object);
+			addThermalStorageTypePropertyDescriptor(object);
+			addMaxTempPropertyDescriptor(object);
+			addTankThicknessPropertyDescriptor(object);
+			addInsulationThicknessPropertyDescriptor(object);
+			addUsesMediumPropertyDescriptor(object);
+			addInsulationMaterialPropertyDescriptor(object);
+			addHeightPropertyDescriptor(object);
+			addTankMaterialPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Volume feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVolumePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalStorage_volume_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_volume_feature",
+								"_UI_ThermalStorage_type"),
+						EnCompPackage.Literals.THERMAL_STORAGE__VOLUME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Thermal Storage Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addThermalStorageTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ThermalStorage_thermalStorageType_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_thermalStorageType_feature",
+						"_UI_ThermalStorage_type"),
+				EnCompPackage.Literals.THERMAL_STORAGE__THERMAL_STORAGE_TYPE, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Max Temp feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaxTempPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalStorage_maxTemp_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_maxTemp_feature",
+								"_UI_ThermalStorage_type"),
+						EnCompPackage.Literals.THERMAL_STORAGE__MAX_TEMP, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tank Thickness feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTankThicknessPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalStorage_tankThickness_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_tankThickness_feature",
+								"_UI_ThermalStorage_type"),
+						EnCompPackage.Literals.THERMAL_STORAGE__TANK_THICKNESS, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Insulation Thickness feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInsulationThicknessPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ThermalStorage_insulationThickness_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_insulationThickness_feature",
+						"_UI_ThermalStorage_type"),
+				EnCompPackage.Literals.THERMAL_STORAGE__INSULATION_THICKNESS, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uses Medium feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUsesMediumPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalStorage_usesMedium_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_usesMedium_feature",
+								"_UI_ThermalStorage_type"),
+						EnCompPackage.Literals.THERMAL_STORAGE__USES_MEDIUM, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Insulation Material feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInsulationMaterialPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalStorage_insulationMaterial_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_insulationMaterial_feature",
+								"_UI_ThermalStorage_type"),
+						EnCompPackage.Literals.THERMAL_STORAGE__INSULATION_MATERIAL, true, false, true, null, null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Height feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHeightPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalStorage_height_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_height_feature",
+								"_UI_ThermalStorage_type"),
+						EnCompPackage.Literals.THERMAL_STORAGE__HEIGHT, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tank Material feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTankMaterialPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_ThermalStorage_tankMaterial_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ThermalStorage_tankMaterial_feature",
+								"_UI_ThermalStorage_type"),
+						EnCompPackage.Literals.THERMAL_STORAGE__TANK_MATERIAL, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This returns ThermalStorage.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ThermalStorage"));
+	}
+
+	/**
+	 * <!-- 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 = ((ThermalStorage) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_ThermalStorage_type")
+				: getString("_UI_ThermalStorage_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(ThermalStorage.class)) {
+		case EnCompPackage.THERMAL_STORAGE__VOLUME:
+		case EnCompPackage.THERMAL_STORAGE__THERMAL_STORAGE_TYPE:
+		case EnCompPackage.THERMAL_STORAGE__MAX_TEMP:
+		case EnCompPackage.THERMAL_STORAGE__TANK_THICKNESS:
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_THICKNESS:
+		case EnCompPackage.THERMAL_STORAGE__HEIGHT:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WaterItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WaterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a2cdb4cfbbf99857188592352080e51ac47c7c7
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WaterItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.Water;
+
+import de.hftstuttgart.units.NullableQuantity;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.Water} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WaterItemProvider extends MediumItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WaterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Water.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Water"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		NullableQuantity labelValue = ((Water) object).getDensity();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_Water_type")
+				: getString("_UI_Water_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WindTurbineItemProvider.java b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WindTurbineItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ec66d631dadc468efe2d3168db5a7d4bb6b21958
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.edit/src-gen/de/hftstuttgart/energycomponents/provider/WindTurbineItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.provider;
+
+import de.hftstuttgart.energycomponents.WindTurbine;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link de.hftstuttgart.energycomponents.WindTurbine} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WindTurbineItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WindTurbineItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns WindTurbine.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/WindTurbine"));
+	}
+
+	/**
+	 * <!-- 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 = ((WindTurbine) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_WindTurbine_type")
+				: getString("_UI_WindTurbine_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/de.hftstuttgart.energycomponents.feature/.project b/de.hftstuttgart.energycomponents.feature/.project
new file mode 100644
index 0000000000000000000000000000000000000000..0d70d9daea6b48d17326334924bd9d1e1288889e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.energycomponents.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.energycomponents.feature/build.properties b/de.hftstuttgart.energycomponents.feature/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..64f93a9f0b7328eb563aa5ad6cec7f828020e124
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/de.hftstuttgart.energycomponents.feature/feature.xml b/de.hftstuttgart.energycomponents.feature/feature.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f911894ccb4642589000b7f298cbb4202782118e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.feature/feature.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="de.hftstuttgart.energycomponents.feature"
+      label="Energy Components Feature"
+      version="1.0.0.qualifier"
+      provider-name="HfT Stuttgart">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="de.hftstuttgart.energycomponents.viewmodel"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="de.hftstuttgart.energycomponents.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="de.hftstuttgart.units"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="de.hftstuttgart.energycomponents"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="de.hftstuttgart.units.ui.renderer"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="de.hftstuttgart.indriya.osgiplugin"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ui.views"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ui.workbench"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.help"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.core.resources"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.core.filesystem"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.jface.text"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.text"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="de.hftstuttgart.energycomponents.app"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/.project b/de.hftstuttgart.energycomponents.viewmodel/.project
new file mode 100644
index 0000000000000000000000000000000000000000..d673eb348a40a823399412b0d66bb598f5592cb2
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.energycomponents.viewmodel</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.emfforms.ide.builder.viewModelBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.emfforms.ide.builder.viewModelNature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/META-INF/MANIFEST.MF b/de.hftstuttgart.energycomponents.viewmodel/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..3be854e3ece9f093f564de665c82d67d67ce8f51
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: de.hftstuttgart.energycomponents.viewmodel
+Bundle-SymbolicName: de.hftstuttgart.energycomponents.viewmodel;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi
diff --git a/de.hftstuttgart.energycomponents.viewmodel/build.properties b/de.hftstuttgart.energycomponents.viewmodel/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9122d2dcfd2806e6ac8f1130014cc13d4e712b18
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin.xml,\
+               viewmodels/
+               
diff --git a/de.hftstuttgart.energycomponents.viewmodel/plugin.xml b/de.hftstuttgart.energycomponents.viewmodel/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4e0892dc0dd32dac32b43aa02f42e5ef535e084c
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+<file filePath="viewmodels/PowerCharacteristic.view"/>
+
+
+
+
+
+
+
+
+
+
+
+<file filePath="viewmodels/PolynomialCharacteristic.view"/>
+
+		<file filePath="viewmodels/TableFunction.view"/>
+		<file filePath="viewmodels/TableCharacteristic.view"/>
+		<file filePath="viewmodels/ExponentionalCharacteristic.view"/>
+		<file filePath="viewmodels/LinearCharacteristic.view"/>
+		<file filePath="viewmodels/EnergyComponentsCatalog.view"/>
+   </extension>
+</plugin>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/viewmodels/EnergyComponentsCatalog.view b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/EnergyComponentsCatalog.view
new file mode 100644
index 0000000000000000000000000000000000000000..3e0fc0655be9858087504c29e801d5a2fbc37cd4
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/EnergyComponentsCatalog.view
@@ -0,0 +1,569 @@
+<?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.categorization.model="http://org/eclipse/emf/ecp/view/categorization/model" 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" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_r4jP0KcHEeqqzsn4YJcnhg" name="EnergyComponentsCatalog">
+  <rootEClass href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_r4wEIKcHEeqqzsn4YJcnhg" name="Control author">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_r4wEIacHEeqqzsn4YJcnhg">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/author"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.categorization.model:CategorizationElement" xmi:id="_DLXcwKcNEeqqzsn4YJcnhg">
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_zDDH0KcsEeqqzsn4YJcnhg" name="Chemical Energy Devices">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_8KWDUKcHEeqqzsn4YJcnhg" name="Boilers">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_FT3zoKcIEeqqzsn4YJcnhg" name="Boilers" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_86CmoKciEeqqzsn4YJcnhg">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Sv-w0BLfEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_C7iBcRKvEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_C7iBdBKvEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalEnergyDevice/installedThermalPower"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_C7iBdhKvEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Boiler/nominalEfficiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_C7iBdxKvEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Boiler/boilerType"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_86CmoaciEeqqzsn4YJcnhg">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/boilers"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_lGWG8KctEeqqzsn4YJcnhg" name="Combined Heat Power">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_nuLr4KctEeqqzsn4YJcnhg" name="Combined Heat Power" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_sGFgQKctEeqqzsn4YJcnhg">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_hmpWQOFfEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_uwB94cEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_MqYEghLfEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalEnergyDevice/installedThermalPower"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_uwB96cEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//CombinedHeatPower/installedElectricalPower"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_uwB958EfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//CombinedHeatPower/thermalEfficiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_uwB96MEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//CombinedHeatPower/electricalEfficiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_uwB94sEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_sGFgQactEeqqzsn4YJcnhg">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/combinedHeatPowerUtilities"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+    </categorizations>
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_zdF_gKcsEeqqzsn4YJcnhg" name="Renewable Energy Devices">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_WItqAKctEeqqzsn4YJcnhg" name="Photovoltaic Modules" tooltip="hellooo">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_wLJ4MKctEeqqzsn4YJcnhg" name="Photovoltaic Modules" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_zRev8KctEeqqzsn4YJcnhg">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_kAC2kOFfEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_FP-uAcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_FP-uBMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//PhotovoltaicModule/cellType"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_FP-uBcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//PhotovoltaicModule/nominalPower"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_FP-uCMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//PhotovoltaicModule/nominalEfficiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_FP-uAsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_zRev8actEeqqzsn4YJcnhg">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/photovoltaicModules"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_cfov0KctEeqqzsn4YJcnhg" name="Solar Thermal Collectors">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_30F_gKctEeqqzsn4YJcnhg" name="Solar Thermal Collectors" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_64FU8KctEeqqzsn4YJcnhg">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_l3rGkOFfEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_HZEhccEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_HZEhdMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//SolarThermalCollector/collectorType"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_HZEhdsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//SolarThermalCollector/opticalEfficiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_HZEhd8EmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//SolarThermalCollector/linearHeatLossCoefficient"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_HZEheMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//SolarThermalCollector/quadraticalHeatLossCoefficient"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_HZEhcsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_64FU8actEeqqzsn4YJcnhg">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/solarThermalCollectors"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_XH9u4LMSEeq7PM-WLoFu_w" name="Wind Turbines">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_ZI2XYBLfEeuZnv6TCI6_zQ" name="Wind Turbines" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_c3FjsBLfEeuZnv6TCI6_zQ">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_c3FjsRLfEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/windTurbines"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_Y_eqILMSEeq7PM-WLoFu_w" name="Geothermal Heat Exchangers">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_dyKE0BLfEeuZnv6TCI6_zQ" name="Geothermal Heat Exchangers" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_fpTzsBLfEeuZnv6TCI6_zQ">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_fpTzsRLfEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/geothermalHeatExchangers"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_ZxIHwMEvEeq7PM-WLoFu_w" name="Heat Pumps">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_0Z0vcPEYEeqrmeSkFyyQrA" name="Heat Pumps" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_2UxZMPEYEeqrmeSkFyyQrA">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_6GO4oPEYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_21MlsfEYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_XL7GkRKxEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalEnergyDevice/installedThermalPower"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_21MltPEYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HeatPump/heatSource"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_21MlsvEYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_2UxZMfEYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/heatPumps"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+    </categorizations>
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_z0o80KcsEeqqzsn4YJcnhg" name="Energy Conversion Devices">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_Mg7awKcJEeqqzsn4YJcnhg" name="Inverters">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_P9r1gKcJEeqqzsn4YJcnhg" name="Inverters" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="__ZmZUKciEeqqzsn4YJcnhg">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_qUOKYOFfEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OquxMcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OquxM8EmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/technicalLifetime"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OquxMsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="__ZmZUaciEeqqzsn4YJcnhg">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/inverters"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_HT2rALMUEeq7PM-WLoFu_w" name="Heat Exchangers">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_I4yBcLMUEeq7PM-WLoFu_w" name="Heat Exchangers" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_Mbvx4LMUEeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_ske80OFfEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_QpPsUcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_QpPsVMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HeatExchanger/heatRecoveryEfficiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_QpPsVcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HeatExchanger/nominalElectricityConsumption"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_QpPsUsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Mbvx4bMUEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/heatExchangers"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+    </categorizations>
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_pK8zMLMSEeq7PM-WLoFu_w" name="Electrochemical Conversion Devices">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_rgu-0LMSEeq7PM-WLoFu_w" name="Electrolyzer">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_u97B8LMTEeq7PM-WLoFu_w" name="Elektrolyzer" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_yN_rkLMTEeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_ulJNAOFfEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX8cEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX9MEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Electrolyzer/cellType"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX9cEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Electrolyzer/cellArea"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX-sEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Electrolyzer/nominalCellVoltage"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX9sEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Electrolyzer/numberOfCells"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX-MEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Electrolyzer/minOperatingCurrentDensity"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX98EmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Electrolyzer/maxOperatingCurrentDensity"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_TXcX-cEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Electrolyzer/overloadCapacity"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_yN_rkbMTEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/electrolyzers"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_tBOhMLMSEeq7PM-WLoFu_w" name="Hydogen Compressor">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_0pfdoLMTEeq7PM-WLoFu_w" name="Hydrogen Compressors" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_4IkzoLMTEeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_8zh-UOFfEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VGwZccEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VGwZdMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HydrogenCompressor/efficiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VGwZdcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HydrogenCompressor/thermodynamicMode"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VGwZdsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HydrogenCompressor/maxPressure"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VGwZd8EmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HydrogenCompressor/maxDeliveryRate"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_4IkzobMTEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/hydrogenCompressors"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_uYDKMLMSEeq7PM-WLoFu_w" name="Fuel Cell">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_7gR6kBLfEeuZnv6TCI6_zQ" name="Fuel Cells" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_9gqd8BLfEeuZnv6TCI6_zQ">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_9gqd8RLfEeuZnv6TCI6_zQ">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/fuelCells"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+    </categorizations>
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_wMuz4LMSEeq7PM-WLoFu_w" name="Storages">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_1OI4QLMSEeq7PM-WLoFu_w" name="Thermal Storages">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_pNuk8LMTEeq7PM-WLoFu_w" name="Thermal Storages" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_tkaRULMTEeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_h2I6UcEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_h2I6VsEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalStorage/thermalStorageType"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_h2I6UsEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_DMiHwOFgEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_h2I6VcEfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalStorage/volume"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_h2I6V8EfEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalStorage/maxTemp"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_A3mQsuFgEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalStorage/tankThickness"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_A3mQs-FgEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ThermalStorage/insulationThickness"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_tkaRUbMTEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/thermalStorages"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_1fBM4LMSEeq7PM-WLoFu_w" name="Power Storages">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_Z-B3ULx5Eeq7PM-WLoFu_w" name="Power Storages" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_ctkmwLx5Eeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_LBcOgOFgEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Z2_1UcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Z2_1VMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ElectricalStorage/electricalStorageType"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Z2_1VcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ElectricalStorage/batteryCapacity"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Z2_1WsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ElectricalStorage/batteryEffiency"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_LhpYkuFgEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ElectricalStorage/batteryVoltage"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_LhpYk-FgEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//ElectricalStorage/batteryLifeCycle"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Z2_1UsEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_ctkmwbx5Eeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/powerStorages"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_12f4wLMSEeq7PM-WLoFu_w" name="Hydrogen Storages">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_cG1J8MEmEeq7PM-WLoFu_w" name="HydrogenStorages" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_fcp2QMEmEeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_SOE0UOFgEeqtNPSEI5W18w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/manufacturer"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gM8DscEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/modelName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gM8DtcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HydrogenStorage/cylinderVolume"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gM8DtMEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//HydrogenStorage/numberOfCylinders"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gM8DssEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponent/revisionYear"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_fcp2QcEmEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/hydrogenStorages"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+    </categorizations>
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_QTfEoLx5Eeq7PM-WLoFu_w" name="Energy Carrier">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_SCzGILx5Eeq7PM-WLoFu_w" name="Bio Fuels">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_jCb3ELx5Eeq7PM-WLoFu_w" name="Bio Fuels" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_OBQK0MEwEeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OnsfwsEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyCarrier/name"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OnsfwMEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyCarrier/co2EmissionsFactor"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OnsfwcEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyCarrier/primaryEnergyFactor"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Onsfw8EwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Fuel/netCalorificValue"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OnsfxMEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Fuel/grossCalorificValue"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OnsfxcEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Fuel/density"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Onsfx8EwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//BioFuel/waterContent"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OnsfyMEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//BioFuel/ashContent"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_OBQK0cEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/bioFuels"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_oYHiULx5Eeq7PM-WLoFu_w" name="Fossil Fuels">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_quoGsLx5Eeq7PM-WLoFu_w" name="Fossil Fuels" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_MLY1YMEwEeq7PM-WLoFu_w">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_RYIAAsEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyCarrier/name"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_RYIAAMEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyCarrier/co2EmissionsFactor"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_RYIAAcEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyCarrier/primaryEnergyFactor"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_RYIAA8EwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Fuel/netCalorificValue"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_RYIABMEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Fuel/grossCalorificValue"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_RYIABcEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Fuel/density"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_MLY1YcEwEeq7PM-WLoFu_w">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/fossilFuels"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+    </categorizations>
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_Z330oNWWEeqxyISDsRhqww" name="Other">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_b0aZ0NWWEeqxyISDsRhqww" name="Manufacturers">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_ftingNWWEeqxyISDsRhqww" name="Manufacturers" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_sNvYsNWWEeqxyISDsRhqww">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_erREsOOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/manufacturerName"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_erREseOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/country"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_erREsuOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Manufacturer/outOfBusinessSince"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_sNvYsdWWEeqxyISDsRhqww">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/manufacturers"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_UbfuIOFgEeqtNPSEI5W18w" name="Materials">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_VzBhwOFgEeqtNPSEI5W18w" name="Materials" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_Wd6owOOYEeqrmeSkFyyQrA">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_fZeOgOOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Material/thermalConductivity"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Wd6oweOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/materials"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_W7KlcOOYEeqrmeSkFyyQrA" name="Medium">
+        <composite xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_Y4lUYOOYEeqrmeSkFyyQrA" name="Medium" detailEditing="WithPanel">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_ah9F8OOYEeqrmeSkFyyQrA">
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gAcu9eOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Medium/name"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gAcu8OOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Medium/density"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gAcu8eOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Medium/heatCapacity"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_gAcu8uOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Medium/evaporationTemperature"/>
+            </columnDomainModelReferences>
+            <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_zQDlECsuEeuX7NehQjN5PA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Medium/meltingTemperature"/>
+            </columnDomainModelReferences>
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_ah9F8eOYEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/media"/>
+            </domainModelReference>
+          </domainModelReference>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_G4KDoOLOEeqrmeSkFyyQrA" name="Cost">
+        <composite xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_HipyIOLOEeqrmeSkFyyQrA">
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_H7X0IOLOEeqrmeSkFyyQrA" name="Cost catalog author">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_FADp0OLfEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCostCatalog/author"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/energycomponentscostcatalog"/>
+            </domainModelReference>
+          </children>
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_bb92MOLfEeqrmeSkFyyQrA" name="Cost catalog revision year">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_d06qkOLfEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCostCatalog/revisionYear"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/energycomponentscostcatalog"/>
+            </domainModelReference>
+          </children>
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_HFsfoOLqEeqrmeSkFyyQrA" name="Personnel cost">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_LbYtgOLqEeqrmeSkFyyQrA">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCostCatalog/personnelCost"/>
+              <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/energycomponentscostcatalog"/>
+            </domainModelReference>
+          </children>
+          <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_IaMeIOLOEeqrmeSkFyyQrA" name="Cost categories" detailEditing="WithPanel">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_G8VJQOLfEeqrmeSkFyyQrA">
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX0PGbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/componentName"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX0vGbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/heatSource"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX0fGbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/description"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX1fGbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/personnelHours"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX1vGbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/personnelCostShare"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX1_GbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/administrationAndOtherCostShare"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX2PGbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/maintenanceCostShare"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX1PGbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/otherInvestmentCost"/>
+              </columnDomainModelReferences>
+              <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_cdhX0_GbEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//Cost/datasource"/>
+              </columnDomainModelReferences>
+              <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_G8VJQeLfEeqrmeSkFyyQrA">
+                <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCostCatalog/costCategories"/>
+                <domainModelEReferencePath href="https://www.hft-stuttgart.de/energycomponents#//EnergyComponentsCatalog/energycomponentscostcatalog"/>
+              </domainModelReference>
+            </domainModelReference>
+          </children>
+        </composite>
+      </categorizations>
+    </categorizations>
+  </children>
+  <ecorePaths>/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/viewmodels/ExponentionalCharacteristic.view b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/ExponentionalCharacteristic.view
new file mode 100644
index 0000000000000000000000000000000000000000..c7a1fa0e7d285629e2eb26796aa63c7c4507e4a1
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/ExponentionalCharacteristic.view
@@ -0,0 +1,10 @@
+<?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" xmi:id="_IBwdwNWNEeqGXM8gpSKWmQ" name="ExponentionalCharacteristic">
+  <rootEClass href="https://www.hft-stuttgart.de/energycomponents#//ExponentionalCharacteristic"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_IBzhENWNEeqGXM8gpSKWmQ" name="Control functions">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_IBzhEdWNEeqGXM8gpSKWmQ">
+      <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//ExponentionalCharacteristic/functions"/>
+    </domainModelReference>
+  </children>
+  <ecorePaths>/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/viewmodels/LinearCharacteristic.view b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/LinearCharacteristic.view
new file mode 100644
index 0000000000000000000000000000000000000000..47f0b2d5b6910afece75968081ad0c7f9db88bed
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/LinearCharacteristic.view
@@ -0,0 +1,10 @@
+<?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" xmi:id="_rtOJ0NTLEeq9PKNrk0Xjyg" name="LinearCharacteristic">
+  <rootEClass href="https://www.hft-stuttgart.de/energycomponents#//LinearCharacteristic"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_rtTpYNTLEeq9PKNrk0Xjyg" name="Control functions">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_rtTpYdTLEeq9PKNrk0Xjyg">
+      <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//LinearCharacteristic/functions"/>
+    </domainModelReference>
+  </children>
+  <ecorePaths>/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/viewmodels/PolynomialCharacteristic.view b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/PolynomialCharacteristic.view
new file mode 100644
index 0000000000000000000000000000000000000000..e43d2f50e95e24e2901ac5b1a05fa264d2893842
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/PolynomialCharacteristic.view
@@ -0,0 +1,10 @@
+<?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" xmi:id="_GDys8OFZEequR_36GR_fPA" name="PolynomialCharacteristic">
+  <rootEClass href="https://www.hft-stuttgart.de/energycomponents#//PolynomialCharacteristic"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_GD4MgOFZEequR_36GR_fPA" name="Control functions">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_GD4MgeFZEequR_36GR_fPA">
+      <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//PolynomialCharacteristic/functions"/>
+    </domainModelReference>
+  </children>
+  <ecorePaths>/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/viewmodels/PowerCharacteristic.view b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/PowerCharacteristic.view
new file mode 100644
index 0000000000000000000000000000000000000000..9054ff79690f6af918675f1ae04c166307224859
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/PowerCharacteristic.view
@@ -0,0 +1,10 @@
+<?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" xmi:id="_i9LYsPHkEeqrmeSkFyyQrA" name="PowerCharacteristic">
+  <rootEClass href="https://www.hft-stuttgart.de/energycomponents#//PowerCharacteristic"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_i9Xl8PHkEeqrmeSkFyyQrA" name="Control functions">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_i9Xl8fHkEeqrmeSkFyyQrA">
+      <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//PowerCharacteristic/functions"/>
+    </domainModelReference>
+  </children>
+  <ecorePaths>/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/viewmodels/TableCharacteristic.view b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/TableCharacteristic.view
new file mode 100644
index 0000000000000000000000000000000000000000..c948cb5a66a7c0b3d8b082eaf8d3aedaf40647ae
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/TableCharacteristic.view
@@ -0,0 +1,10 @@
+<?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" xmi:id="_LpI0INWNEeqGXM8gpSKWmQ" name="TableCharacteristic">
+  <rootEClass href="https://www.hft-stuttgart.de/energycomponents#//TableCharacteristic"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_LpKCQNWNEeqGXM8gpSKWmQ" name="Control functions">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_LpKCQdWNEeqGXM8gpSKWmQ">
+      <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//TableCharacteristic/functions"/>
+    </domainModelReference>
+  </children>
+  <ecorePaths>/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/de.hftstuttgart.energycomponents.viewmodel/viewmodels/TableFunction.view b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/TableFunction.view
new file mode 100644
index 0000000000000000000000000000000000000000..46050369c98cb126ed10718ddedc237e147208c9
--- /dev/null
+++ b/de.hftstuttgart.energycomponents.viewmodel/viewmodels/TableFunction.view
@@ -0,0 +1,17 @@
+<?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="_AaR5kNWOEeqGXM8gpSKWmQ" name="TableFunction">
+  <rootEClass href="https://www.hft-stuttgart.de/energycomponents#//TableFunction"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_AaSgoNWOEeqGXM8gpSKWmQ" name="Control parameter">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_wUoxgOFbEeqtNPSEI5W18w">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="https://www.hft-stuttgart.de/energycomponents#//TableFunction/key"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_CeU08NWOEeqGXM8gpSKWmQ" detailEditing="WithPanel">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_EhMEkNWOEeqGXM8gpSKWmQ">
+      <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_EhMEkdWOEeqGXM8gpSKWmQ">
+        <domainModelEFeature xsi:type="ecore:EReference" href="https://www.hft-stuttgart.de/energycomponents#//TableFunction/datapoints"/>
+      </domainModelReference>
+    </domainModelReference>
+  </children>
+  <ecorePaths>/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/de.hftstuttgart.energycomponents/.classpath b/de.hftstuttgart.energycomponents/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..af08aa696f0db5ea8d27d261f4cb6f76ac3a3c46
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/de.hftstuttgart.energycomponents/.project b/de.hftstuttgart.energycomponents/.project
new file mode 100644
index 0000000000000000000000000000000000000000..ab5af7844e1921b1daed1b23a32022c9b567ba0e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.energycomponents</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.sirius.nature.modelingproject</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.energycomponents/META-INF/MANIFEST.MF b/de.hftstuttgart.energycomponents/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..8cf545d5d7e35968c203248554ee5f72eb82d7fa
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: de.hftstuttgart.energycomponents;singleton:=true
+Automatic-Module-Name: de.hftstuttgart.energycomponents
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: de.hftstuttgart.energycomponents,
+ de.hftstuttgart.energycomponents.impl,
+ de.hftstuttgart.energycomponents.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ de.hftstuttgart.units;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/de.hftstuttgart.energycomponents/build.properties b/de.hftstuttgart.energycomponents/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..0e10ab4ffe9c6ffaf083fd3e7b4668ca8be8339d
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/de.hftstuttgart.energycomponents/model/EnergyComponents.aird b/de.hftstuttgart.energycomponents/model/EnergyComponents.aird
new file mode 100644
index 0000000000000000000000000000000000000000..78c8bd60e25ad33db27046e1896ae56503db6734
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/model/EnergyComponents.aird
@@ -0,0 +1,4771 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
+  <viewpoint:DAnalysis uid="_xDanIFezEeq_N_dFIDFqhA" selectedViews="_xbAAsFezEeq_N_dFIDFqhA" version="14.3.0.201909031200">
+    <semanticResources>EnergyComponents.ecore</semanticResources>
+    <semanticResources>EnergyComponents.genmodel</semanticResources>
+    <ownedViews xmi:type="viewpoint:DView" uid="_xbAAsFezEeq_N_dFIDFqhA">
+      <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_xgdIcFezEeq_N_dFIDFqhA" name="Energy Components Class Diagram" repPath="#_xdAy4FezEeq_N_dFIDFqhA" changeId="754a5fff-0989-4763-ba99-183e58dc0339">
+        <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+        <target xmi:type="ecore:EPackage" href="EnergyComponents.ecore#/"/>
+      </ownedRepresentationDescriptors>
+    </ownedViews>
+  </viewpoint:DAnalysis>
+  <diagram:DSemanticDiagram uid="_xdAy4FezEeq_N_dFIDFqhA">
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_xgXB0FezEeq_N_dFIDFqhA" source="DANNOTATION_CUSTOMIZATION_KEY">
+      <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_xgXo4FezEeq_N_dFIDFqhA">
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_8xbjElfXEeq_N_dFIDFqhA" showIcon="false" labelExpression="service:render">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </centerLabelStyleDescription>
+          <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_8xbjE1fXEeq_N_dFIDFqhA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_mtuVUGROEeqhPrUG4-cQcg" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+          <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <labelFormat>bold</labelFormat>
+          <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_AMV8WLuIEeq7PM-WLoFu_w" 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="_AMV8WbuIEeq7PM-WLoFu_w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_kmvnkNWVEeqxyISDsRhqww" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_kmvnkdWVEeqxyISDsRhqww" 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="_kmvnktWVEeqxyISDsRhqww" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_xhEzgFezEeq_N_dFIDFqhA" source="GMF_DIAGRAMS">
+      <data xmi:type="notation:Diagram" xmi:id="_xhEzgVezEeq_N_dFIDFqhA" type="Sirius" element="_xdAy4FezEeq_N_dFIDFqhA" measurementUnit="Pixel">
+        <children xmi:type="notation:Node" xmi:id="_QKTmoFe0Eeq_N_dFIDFqhA" type="2003" element="_QITbgFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_QKkFUFe0Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_QKnvsFe0Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_5NzYUFioEeq_N_dFIDFqhA" type="3010" element="_5NpnUFioEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_5NzYUVioEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_5NzYUlioEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_jMOmsGRdEeqhPrUG4-cQcg" type="3010" element="_3EuL8FioEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_jMOmsWRdEeqhPrUG4-cQcg" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_jMOmsmRdEeqhPrUG4-cQcg"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_FQZSoMEDEeq7PM-WLoFu_w" type="3010" element="_FP9NwMEDEeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_FQZSocEDEeq7PM-WLoFu_w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_FQZSosEDEeq7PM-WLoFu_w"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_oTv1zMEFEeq7PM-WLoFu_w" type="3010" element="_3EvaEFioEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_oTv1zcEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_oTv1zsEFEeq7PM-WLoFu_w"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_QKnvsVe0Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_QKnvsle0Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_QKUNsFe0Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QKUNsVe0Eeq_N_dFIDFqhA" x="918" y="1635" width="465" height="110"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_E5MQAFe6Eeq_N_dFIDFqhA" type="2003" element="_E5DGEFe6Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_E5M3EFe6Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_E5M3EVe6Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_vHCgYFe7Eeq_N_dFIDFqhA" type="3010" element="_vG4vYFe7Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_vHCgYVe7Eeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_vHCgYle7Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Dz0uMJkHEeq7RunjHU3yiA" type="3010" element="_DzldoJkHEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Dz0uMZkHEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Dz0uMpkHEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_v05jLqGxEeq7RunjHU3yiA" type="3010" element="_n7Z-4I4bEeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_v05jL6GxEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_v05jMKGxEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_RFEJYOFWEequR_36GR_fPA" type="3010" element="_RE2G8OFWEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_RFEJYeFWEequR_36GR_fPA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_RFEJYuFWEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_RYHBMOFWEequR_36GR_fPA" type="3010" element="_RX3woOFWEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_RYHBMeFWEequR_36GR_fPA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_RYHBMuFWEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_SF53cPEREeqrmeSkFyyQrA" type="3010" element="_SFp_0PEREeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_SF53cfEREeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_SF53cvEREeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_E5M3Ele6Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_E5M3E1e6Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_E5MQAVe6Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E5MQAle6Eeq_N_dFIDFqhA" x="2040" y="1103" width="213" height="255"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_JL40QFe6Eeq_N_dFIDFqhA" type="2003" element="_JLxfgFe6Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_JL40Q1e6Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_JL40RFe6Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_jiKscHSuEeqHf7kMgRZPUQ" type="3010" element="_jiCJkHSuEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_jiKscXSuEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_jiKscnSuEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ErFOEHSvEeqHf7kMgRZPUQ" type="3010" element="_Eq95UHSvEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_ErFOEXSvEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_ErFOEnSvEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_GW3acHSvEeqHf7kMgRZPUQ" type="3010" element="_GWu3lXSvEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_GW3acXSvEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_GW3acnSvEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_NQ_T8HSvEeqHf7kMgRZPUQ" type="3010" element="_NQ3_MHSvEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_NQ_T8XSvEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_NQ_T8nSvEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_kxP5QHSvEeqHf7kMgRZPUQ" type="3010" element="_kxIkgHSvEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_kxP5QXSvEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_kxP5QnSvEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_3qauELUuEeq7PM-WLoFu_w" type="3010" element="_3qFW4LUuEeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_3qauEbUuEeq7PM-WLoFu_w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_3qauErUuEeq7PM-WLoFu_w"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_KE5FULUvEeq7PM-WLoFu_w" type="3010" element="_KEmKYLUvEeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_KE5FUbUvEeq7PM-WLoFu_w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_KE5FUrUvEeq7PM-WLoFu_w"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_WksSzoGdEeu4guSGPeRSOA" type="3010" element="_WkPmYIGdEeu4guSGPeRSOA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_WksSz4GdEeu4guSGPeRSOA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_WksS0IGdEeu4guSGPeRSOA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_JL40RVe6Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_JL40Rle6Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_JL40QVe6Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JL40Qle6Eeq_N_dFIDFqhA" x="2265" y="1104" width="198" height="254"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_LWm4AFe9Eeq_N_dFIDFqhA" type="2003" element="_LWh_gFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_LWm4A1e9Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_LWnfEFe9Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_6xBJUFe9Eeq_N_dFIDFqhA" type="3010" element="_6wqkAFe9Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_6xBJUVe9Eeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_6xBJUle9Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7mPhIFe9Eeq_N_dFIDFqhA" type="3010" element="_7mA3oVe9Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7mPhIVe9Eeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7mPhIle9Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_IQsO0FlQEeq_N_dFIDFqhA" type="3010" element="_IQZ69llQEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_IQsO0VlQEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_IQsO0llQEeq_N_dFIDFqhA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_LWnfEVe9Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_LWnfEle9Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_LWm4AVe9Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LWm4Ale9Eeq_N_dFIDFqhA" x="-15" y="1103" width="161" height="149"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_W61JIFe9Eeq_N_dFIDFqhA" type="2003" element="_W6vCgFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_W61JI1e9Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_W62XQFe9Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7-C9IFe9Eeq_N_dFIDFqhA" type="3010" element="_790To1e9Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7-C9IVe9Eeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7-C9Ile9Eeq_N_dFIDFqhA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_W62XQVe9Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_W62XQle9Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_W61JIVe9Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_W61JIle9Eeq_N_dFIDFqhA" x="335" y="1104" width="153" height="148"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_bWMhMFe9Eeq_N_dFIDFqhA" type="2003" element="_bWFzgFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_bWMhM1e9Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_bWMhNFe9Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_8OFkQFe9Eeq_N_dFIDFqhA" type="3010" element="_8N6lJVe9Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_8OFkQVe9Eeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_8OFkQle9Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_9-L9QJkWEeq7RunjHU3yiA" type="3010" element="_9-A-IJkWEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_9-L9QZkWEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_9-L9QpkWEeq7RunjHU3yiA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_bWMhNVe9Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_bWMhNle9Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_bWMhMVe9Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bWMhMle9Eeq_N_dFIDFqhA" x="163" y="1103" width="156" height="150"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_l87PUFe9Eeq_N_dFIDFqhA" type="2003" element="_l8zTgFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_l872YFe9Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_l872YVe9Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_8ZpUAFe9Eeq_N_dFIDFqhA" type="3010" element="_8Zaqgle9Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_8ZpUAVe9Eeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_8ZpUAle9Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_oHVNMFfEEeq_N_dFIDFqhA" type="3010" element="_oHMqUFfEEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_oHVNMVfEEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_oHVNMlfEEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_sK4iMFfEEeq_N_dFIDFqhA" type="3010" element="_sKvYQFfEEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_sK4iMVfEEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_sK4iMlfEEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_wDJNMFfEEeq_N_dFIDFqhA" type="3010" element="_wC7x31fEEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_wDJNMVfEEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_wDJNMlfEEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_yi07sFfEEeq_N_dFIDFqhA" type="3010" element="_yiqjrFfEEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_yi07sVfEEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_yi07slfEEeq_N_dFIDFqhA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_l872Yle9Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_l872Y1e9Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_l87PUVe9Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l87PUle9Eeq_N_dFIDFqhA" x="510" y="1103" width="172" height="213"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_t4Rf0Fe-Eeq_N_dFIDFqhA" type="2003" element="_t4I88Fe-Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_t4SG4Fe-Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_t4SG4Ve-Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_0mC_YFe-Eeq_N_dFIDFqhA" type="3010" element="_0l6cgFe-Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_0mC_YVe-Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_0mC_Yle-Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_4twboFe-Eeq_N_dFIDFqhA" type="3010" element="_4teHxFe-Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_4twboVe-Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_4twbole-Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="__WDlUFe-Eeq_N_dFIDFqhA" type="3010" element="__V3_IFe-Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="__WDlUVe-Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="__WDlUle-Eeq_N_dFIDFqhA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_t4SG4le-Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_t4SG41e-Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_t4Rf0Ve-Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t4Rf0le-Eeq_N_dFIDFqhA" x="250" y="1258" width="141" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_dKbawFfEEeq_N_dFIDFqhA" type="2003" element="_dKAkAFfEEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_dKcB0FfEEeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_dKcB0VfEEeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_fgn2EFfEEeq_N_dFIDFqhA" type="3010" element="_fgdeAFfEEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_fgprQFfEEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_fgprQVfEEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_fv_HwFfEEeq_N_dFIDFqhA" type="3010" element="_fvzhkFfEEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_fv_HwVfEEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_fv_HwlfEEeq_N_dFIDFqhA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_dKcB0lfEEeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_dKcB01fEEeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_dKbawVfEEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dKbawlfEEeq_N_dFIDFqhA" x="510" y="1324" width="172" height="83"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_wOXxcFijEeq_N_dFIDFqhA" type="2003" element="_wK94IFijEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_wOd4EFijEeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_wOd4EVijEeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_1dQ4MFijEeq_N_dFIDFqhA" type="3010" element="_tnh80Fe4Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_1dQ4MVijEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_1dQ4MlijEeq_N_dFIDFqhA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_wOfGMFijEeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_wOfGMVijEeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_wOXxcVijEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wOYYgFijEeq_N_dFIDFqhA" x="673" y="883" width="398" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_2bRUYFiqEeq_N_dFIDFqhA" type="2003" element="_2bHjYFiqEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_2bRUY1iqEeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_2bRUZFiqEeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_KLNCsFirEeq_N_dFIDFqhA" type="3010" element="_KLD4wFirEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_KLNCsVirEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_KLNCslirEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_NOBTcFirEeq_N_dFIDFqhA" type="3010" element="_NN5XoFirEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_NOBTcVirEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_NOBTclirEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_RxwkYFirEeq_N_dFIDFqhA" type="3010" element="_RxnacFirEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_RxwkYVirEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_RxwkYlirEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_UWjcYFirEeq_N_dFIDFqhA" type="3010" element="_UWUy4FirEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_UWjcYVirEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_UWjcYlirEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_nq5a4FirEeq_N_dFIDFqhA" type="3010" element="_nqubwFirEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_nq5a4VirEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_nq5a4lirEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_srltkFirEeq_N_dFIDFqhA" type="3010" element="_srb8kFirEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_srltkVirEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_srltklirEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_s4dr8FirEeq_N_dFIDFqhA" type="3010" element="_s4VJEFirEeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_s4dr8VirEeq_N_dFIDFqhA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_s4dr8lirEeq_N_dFIDFqhA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_2bRUZViqEeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_2bRUZliqEeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_2bRUYViqEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bRUYliqEeq_N_dFIDFqhA" x="1490" y="1104" width="167" height="322"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_1Wzp4FiuEeq_N_dFIDFqhA" type="2003" element="_1Ws8MFiuEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_1Wzp41iuEeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_1W0Q8FiuEeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_GvBnwFlQEeq_N_dFIDFqhA" type="3010" element="_xfrdoFe5Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_GvBnwVlQEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_GvBnwllQEeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Aenk0JEjEeqHr9mTN7_zWg" type="3010" element="_KtHVcFo2Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Aenk0ZEjEeqHr9mTN7_zWg" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Aenk0pEjEeqHr9mTN7_zWg"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_WSiPYCs6EeuX7NehQjN5PA" type="3010" element="_BXwwgCs4EeuX7NehQjN5PA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_WSiPYSs6EeuX7NehQjN5PA" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_WSiPYis6EeuX7NehQjN5PA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_1W0Q8ViuEeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_1W0Q8liuEeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_1Wzp4ViuEeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1Wzp4liuEeq_N_dFIDFqhA" x="90" y="1407" width="301" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_f4RhEFo1Eeq_N_dFIDFqhA" type="2003" element="_f32qUFo1Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_f4RhE1o1Eeq_N_dFIDFqhA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_f4RhFFo1Eeq_N_dFIDFqhA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_8QpE0Fo1Eeq_N_dFIDFqhA" type="3010" element="_8QfT0Fo1Eeq_N_dFIDFqhA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_8QpE0Vo1Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_8QpE0lo1Eeq_N_dFIDFqhA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_6uxLYHStEeqHf7kMgRZPUQ" type="3010" element="_6up2oHStEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_6uxLYXStEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_6uxLYnStEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_9BPkUHStEeqHf7kMgRZPUQ" type="3010" element="_9BIPkHStEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_9BPkUXStEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_9BPkUnStEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_CfU9oHSuEeqHf7kMgRZPUQ" type="3010" element="_CfNo4HSuEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_CfU9oXSuEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_CfU9onSuEeqHf7kMgRZPUQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_f4RhFVo1Eeq_N_dFIDFqhA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_f4RhFlo1Eeq_N_dFIDFqhA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_f4RhEVo1Eeq_N_dFIDFqhA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f4RhElo1Eeq_N_dFIDFqhA" x="2370" y="1370" width="153" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_H7hG8GdwEeqHf7kMgRZPUQ" type="2003" element="_H7TEgGdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_H7iVEGdwEeqHf7kMgRZPUQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_H7i8IGdwEeqHf7kMgRZPUQ" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_H7i8IWdwEeqHf7kMgRZPUQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_H7i8ImdwEeqHf7kMgRZPUQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_H7huAGdwEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H7huAWdwEeqHf7kMgRZPUQ" x="210" y="1682" width="261" height="91"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_MSnDAGdwEeqHf7kMgRZPUQ" type="2003" element="_MScD4GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_MSnDA2dwEeqHf7kMgRZPUQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_MSnqEGdwEeqHf7kMgRZPUQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_x_ItcNJSEeqURrng_SOYKA" type="3010" element="_x-5c5tJSEeqURrng_SOYKA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_x_ItcdJSEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_x_ItctJSEeqURrng_SOYKA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_rI8eAGdwEeqHf7kMgRZPUQ" type="3010" element="_rIw32mdwEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_rI8eAWdwEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_rI8eAmdwEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Zvf00OFUEequR_36GR_fPA" type="3010" element="_ZvNg8OFUEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Zvf00eFUEequR_36GR_fPA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Zvf00uFUEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_uXtgEGdwEeqHf7kMgRZPUQ" type="3010" element="_uXh54mdwEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_uXtgEWdwEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_uXtgEmdwEeqHf7kMgRZPUQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_MSnqEWdwEeqHf7kMgRZPUQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_MSnqEmdwEeqHf7kMgRZPUQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_MSnDAWdwEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MSnDAmdwEeqHf7kMgRZPUQ" x="272" y="1912" width="168" height="151"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_GJ4zXXSoEeqHf7kMgRZPUQ" type="2003" element="_GJvBkHSoEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_GJ4zYHSoEeqHf7kMgRZPUQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_GJ4zYXSoEeqHf7kMgRZPUQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_LInWvXSoEeqHf7kMgRZPUQ" type="3010" element="_LIeMcHSoEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_LInWvnSoEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_LInWv3SoEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_EkMgc3SrEeqHf7kMgRZPUQ" type="3010" element="_EkDV0HSrEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_EkMgdHSrEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_EkMgdXSrEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Q_xQdHSrEeqHf7kMgRZPUQ" type="3010" element="_Q_xPoHSrEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Q_xQdXSrEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Q_xQdnSrEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_aHS1onSrEeqHf7kMgRZPUQ" type="3010" element="_aHJD0HSrEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_aHS1o3SrEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_aHS1pHSrEeqHf7kMgRZPUQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_GJ4zYnSoEeqHf7kMgRZPUQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_GJ4zY3SoEeqHf7kMgRZPUQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_GJ4zXnSoEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GJ4zX3SoEeqHf7kMgRZPUQ" x="1680" y="1104" width="143" height="182"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_hV04ZHSrEeqHf7kMgRZPUQ" type="2003" element="_hVruIHSrEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_hV04Z3SrEeqHf7kMgRZPUQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_hV04aHSrEeqHf7kMgRZPUQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_j2wkknSrEeqHf7kMgRZPUQ" type="3010" element="_j2mywHSrEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_j2wkk3SrEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_j2wklHSrEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_k7mskXSrEeqHf7kMgRZPUQ" type="3010" element="_k7c68HSrEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_k7msknSrEeqHf7kMgRZPUQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_k7msk3SrEeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_z2hTkMFAEeq7PM-WLoFu_w" type="3010" element="_z2FOsMFAEeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_z2hTkcFAEeq7PM-WLoFu_w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_z2hTksFAEeq7PM-WLoFu_w"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_hV04aXSrEeqHf7kMgRZPUQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_hV04anSrEeqHf7kMgRZPUQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_hV04ZXSrEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hV04ZnSrEeqHf7kMgRZPUQ" x="2475" y="1103" width="168" height="168"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_B-0jgHSsEeqHf7kMgRZPUQ" type="2003" element="_B-qygHSsEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_B-0jg3SsEeqHf7kMgRZPUQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_B-0jhHSsEeqHf7kMgRZPUQ" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_B-0jhXSsEeqHf7kMgRZPUQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_B-0jhnSsEeqHf7kMgRZPUQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_B-0jgXSsEeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B-0jgnSsEeqHf7kMgRZPUQ" x="1837" y="1103" width="128" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_QxW0oHS1EeqHf7kMgRZPUQ" type="2003" element="_QxQG8HS1EeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_QxW0o3S1EeqHf7kMgRZPUQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_QxW0pHS1EeqHf7kMgRZPUQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_dXiXUNJSEeqURrng_SOYKA" type="3010" element="_biTDENJJEeqURrng_SOYKA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_dXiXUdJSEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_dXiXUtJSEeqURrng_SOYKA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_XZMEQHS1EeqHf7kMgRZPUQ" type="3010" element="_XZCTQnS1EeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_XZMEQXS1EeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_XZMEQnS1EeqHf7kMgRZPUQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_g_DLwOFUEequR_36GR_fPA" type="3010" element="_g-qKNOFUEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_g_DLweFUEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_g_DLwuFUEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_JN2KcHS2EeqHf7kMgRZPUQ" type="3010" element="_JNtAgXS2EeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_JN2KcXS2EeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_JN2KcnS2EeqHf7kMgRZPUQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_QxW0pXS1EeqHf7kMgRZPUQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_QxW0pnS1EeqHf7kMgRZPUQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_QxW0oXS1EeqHf7kMgRZPUQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QxW0onS1EeqHf7kMgRZPUQ" x="80" y="1912" width="158" height="151"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_cjg-84yMEeqO3KkprL3Vfw" type="2003" element="_cjXM4IyMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_cjqH0IyMEeqO3KkprL3Vfw" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_cjqH0YyMEeqO3KkprL3Vfw" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_10OorpB1EeqO3KkprL3Vfw" type="3010" element="_10E2UJB1EeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_10Oor5B1EeqO3KkprL3Vfw" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_10OosJB1EeqO3KkprL3Vfw"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_90jqi6GzEeq7RunjHU3yiA" type="3010" element="_90Z4MKGzEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_90jqjKGzEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_90jqjaGzEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_CYd5mqG0Eeq7RunjHU3yiA" type="3010" element="_CYUIQKG0Eeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_CYd5m6G0Eeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_CYd5nKG0Eeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ZZsWQPGiEeqrmeSkFyyQrA" type="3010" element="_ZZceoPGiEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_ZZsWQfGiEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_ZZsWQvGiEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_cjqH0oyMEeqO3KkprL3Vfw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_cjqH04yMEeqO3KkprL3Vfw"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_cjg-9IyMEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cjg-9YyMEeqO3KkprL3Vfw" x="1534" y="94" width="552" height="134"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_jWu_O4yMEeqO3KkprL3Vfw" type="2003" element="_jWl0MIyMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_jWu_PoyMEeqO3KkprL3Vfw" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_jWu_P4yMEeqO3KkprL3Vfw" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_GAdSoOOqEeqrmeSkFyyQrA" type="3010" element="_GAPQMOOqEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_GAdSoeOqEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_GAdSouOqEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_jWu_QIyMEeqO3KkprL3Vfw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_jWu_QYyMEeqO3KkprL3Vfw"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_jWu_PIyMEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jWu_PYyMEeqO3KkprL3Vfw" x="1534" y="427" width="120" height="92"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_nq3GrIyMEeqO3KkprL3Vfw" type="2003" element="_nqtUwIyMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_nq3Gr4yMEeqO3KkprL3Vfw" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_nq3GsIyMEeqO3KkprL3Vfw" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_nFaQNJD_EeqO3KkprL3Vfw" type="3010" element="_nFRE0JD_EeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_nFaQNZD_EeqO3KkprL3Vfw" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_nFaQNpD_EeqO3KkprL3Vfw"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_nq3GsYyMEeqO3KkprL3Vfw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_nq3GsoyMEeqO3KkprL3Vfw"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_nq3GrYyMEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nq3GroyMEeqO3KkprL3Vfw" x="1808" y="427" width="130" height="112"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_qxVvJIyMEeqO3KkprL3Vfw" type="2003" element="_qxMkkIyMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_qxVvJ4yMEeqO3KkprL3Vfw" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_qxVvKIyMEeqO3KkprL3Vfw" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_cBadwCs6EeuX7NehQjN5PA" type="3010" element="_cBIw8Cs6EeuX7NehQjN5PA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_cBadwSs6EeuX7NehQjN5PA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_cBadwis6EeuX7NehQjN5PA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_qxVvKYyMEeqO3KkprL3Vfw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_qxVvKoyMEeqO3KkprL3Vfw"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_qxVvJYyMEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qxVvJoyMEeqO3KkprL3Vfw" x="1957" y="276" width="129" height="112"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_l2iNYJB7EeqO3KkprL3Vfw" type="2003" element="_l2Yb0JB7EeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_l2iNY5B7EeqO3KkprL3Vfw" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_l2iNZJB7EeqO3KkprL3Vfw" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_Adl5IZEDEeqO3KkprL3Vfw" type="3010" element="_AdctsJEDEeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Adl5IpEDEeqO3KkprL3Vfw" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Adl5I5EDEeqO3KkprL3Vfw"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_hQlNy5EDEeqO3KkprL3Vfw" type="3010" element="_hQbbkJEDEeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_hQlNzJEDEeqO3KkprL3Vfw" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_hQlNzZEDEeqO3KkprL3Vfw"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_l2iNZZB7EeqO3KkprL3Vfw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_l2iNZpB7EeqO3KkprL3Vfw"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_l2iNYZB7EeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l2iNYpB7EeqO3KkprL3Vfw" x="1670" y="427" width="120" height="152"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_mYqXmZECEeqO3KkprL3Vfw" type="2003" element="_mYqWIJECEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_mY0HIJECEeqO3KkprL3Vfw" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_mY0HIZECEeqO3KkprL3Vfw" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_5t6UaJECEeqO3KkprL3Vfw" type="3010" element="_iPPb8JD9EeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_5t6UaZECEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_5t6UapECEeqO3KkprL3Vfw"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_6BuojZECEeqO3KkprL3Vfw" type="3010" element="_iiUI8JD9EeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_6BuojpECEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_6Buoj5ECEeqO3KkprL3Vfw"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_6U8eYJECEeqO3KkprL3Vfw" type="3010" element="_zZblsIyMEeqO3KkprL3Vfw">
+              <styles xmi:type="notation:FontStyle" xmi:id="_6U8eYZECEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_6U8eYpECEeqO3KkprL3Vfw"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_B4Z4IOOqEeqrmeSkFyyQrA" type="3010" element="_B4JZcOOqEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_B4Z4IeOqEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_B4Z4IuOqEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_mY0HIpECEeqO3KkprL3Vfw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_mY0HI5ECEeqO3KkprL3Vfw"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_mYqXmpECEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mYqXm5ECEeqO3KkprL3Vfw" x="1534" y="275" width="404" height="114"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_AWD_IJkNEeq7RunjHU3yiA" type="2003" element="_AV18sJkNEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_AWD_I5kNEeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_AWD_JJkNEeq7RunjHU3yiA" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_AWD_JZkNEeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_AWD_JpkNEeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_AWD_IZkNEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AWD_IpkNEeq7RunjHU3yiA" x="1197" y="1103" width="120" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_YS_SUJkNEeq7RunjHU3yiA" type="2003" element="_YSzFEJkNEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_YS_SU5kNEeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_YS_SVJkNEeq7RunjHU3yiA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_9-A3gJmtEeq7RunjHU3yiA" type="3010" element="_990qQJmtEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_9-A3gZmtEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_9-A3gpmtEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_IjscwJmuEeq7RunjHU3yiA" type="3010" element="_Ijg2kJmuEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_IjscwZmuEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_IjscwpmuEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_OEyGwJmuEeq7RunjHU3yiA" type="3010" element="_OEnHoJmuEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_OEyGwZmuEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_OEyGwpmuEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_RUEGMJmuEeq7RunjHU3yiA" type="3010" element="_RT5HEJmuEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_RUEGMZmuEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_RUEGMpmuEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_b2uMoJmuEeq7RunjHU3yiA" type="3010" element="_b2jNgJmuEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_b2uMoZmuEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_b2uMopmuEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_rTYu8JmuEeq7RunjHU3yiA" type="3010" element="_rTNv0JmuEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_rTYu8ZmuEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_rTYu8pmuEeq7RunjHU3yiA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_YS_SVZkNEeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_YS_SVpkNEeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_YS_SUZkNEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YS_SUpkNEeq7RunjHU3yiA" x="699" y="1103" width="181" height="213"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_cHiiAJkNEeq7RunjHU3yiA" type="2003" element="_cHVtsJkNEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_cHiiA5kNEeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_cHiiBJkNEeq7RunjHU3yiA" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_cHiiBZkNEeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_cHiiBpkNEeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_cHiiAZkNEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cHiiApkNEeq7RunjHU3yiA" x="895" y="1103" width="120" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_Uv6iQJkPEeq7RunjHU3yiA" type="2003" element="_UvwKMJkPEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_Uv6iQ5kPEeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_Uv6iRJkPEeq7RunjHU3yiA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_3_Tc66G1Eeq7RunjHU3yiA" type="3010" element="_3_JqIKG1Eeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_3_Tc7KG1Eeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_3_Tc7aG1Eeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_8kQOzKG1Eeq7RunjHU3yiA" type="3010" element="_8kHDEKG1Eeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_8kQOzaG1Eeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_8kQOzqG1Eeq7RunjHU3yiA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_Uv6iRZkPEeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv6iRpkPEeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_Uv6iQZkPEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv6iQpkPEeq7RunjHU3yiA" x="1335" y="1103" width="136" height="157"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_PvgRgJkREeq7RunjHU3yiA" type="2003" element="_PvVSYJkREeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_PvgRg5kREeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_PvgRhJkREeq7RunjHU3yiA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_L5fz0JkSEeq7RunjHU3yiA" type="3010" element="_L5U0sJkSEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_L5fz0ZkSEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_L5fz0pkSEeq7RunjHU3yiA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_PvgRhZkREeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_PvgRhpkREeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_PvgRgZkREeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PvgRgpkREeq7RunjHU3yiA" x="1040" y="1102" width="134" height="101"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_aUEikJm4Eeq7RunjHU3yiA" type="2003" element="_aT6KgJm4Eeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_aUFJoJm4Eeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_aUFJoZm4Eeq7RunjHU3yiA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_btjeAJm4Eeq7RunjHU3yiA" type="3010" element="_btZF8Jm4Eeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_btjeAZm4Eeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_btjeApm4Eeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_muRpECs6EeuX7NehQjN5PA" type="3010" element="_muAjUCs6EeuX7NehQjN5PA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_muRpESs6EeuX7NehQjN5PA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_muRpEis6EeuX7NehQjN5PA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_aUFJopm4Eeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_aUFJo5m4Eeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_aUEikZm4Eeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aUEikpm4Eeq7RunjHU3yiA" x="90" y="1258" width="137" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_nYbtjqGxEeq7RunjHU3yiA" type="2003" element="_nYR7UKGxEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_nYbtkaGxEeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_nYbtkqGxEeq7RunjHU3yiA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_plOUAKGxEeq7RunjHU3yiA" type="3010" element="_plEjAKGxEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_plOUAaGxEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_plOUAqGxEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_p4UPmKGxEeq7RunjHU3yiA" type="3010" element="_p4LFMKGxEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_p4UPmaGxEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_p4UPmqGxEeq7RunjHU3yiA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_nYbtk6GxEeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_nYbtlKGxEeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_nYbtj6GxEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nYbtkKGxEeq7RunjHU3yiA" x="1957" y="1370" width="178" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_48k5yqGxEeq7RunjHU3yiA" type="2003" element="_48bHgKGxEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_48k5zaGxEeq7RunjHU3yiA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_48k5zqGxEeq7RunjHU3yiA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_GXxSUKGyEeq7RunjHU3yiA" type="3010" element="_GXe_BKGyEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_GXxSUaGyEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_GXxSUqGyEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Hgyv4KGyEeq7RunjHU3yiA" type="3010" element="_Hgf08KGyEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Hgyv4aGyEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Hgyv4qGyEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_JwlpnaGyEeq7RunjHU3yiA" type="3010" element="_Jwb3QKGyEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_JwlpnqGyEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Jwlpn6GyEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_6Zl0r6GyEeq7RunjHU3yiA" type="3010" element="_6ZcCoKGyEeq7RunjHU3yiA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_6Zl0sKGyEeq7RunjHU3yiA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_6Zl0saGyEeq7RunjHU3yiA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_rMs2EOFVEequR_36GR_fPA" type="3010" element="_rMdlgOFVEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_rMs2EeFVEequR_36GR_fPA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_rMs2EuFVEequR_36GR_fPA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_48k5z6GxEeq7RunjHU3yiA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_48k50KGxEeq7RunjHU3yiA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_48k5y6GxEeq7RunjHU3yiA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_48k5zKGxEeq7RunjHU3yiA" x="2285" y="94" width="323" height="134"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_pZCYMLuGEeq7PM-WLoFu_w" type="2003" element="_pYlsQLuGEeq7PM-WLoFu_w">
+          <children xmi:type="notation:Node" xmi:id="_pZCYM7uGEeq7PM-WLoFu_w" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_pZCYNLuGEeq7PM-WLoFu_w" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_xkpJ0NJSEeqURrng_SOYKA" type="3010" element="_xkZ5R9JSEeqURrng_SOYKA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_xkpJ0dJSEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_xkpJ0tJSEeqURrng_SOYKA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_pZCYNbuGEeq7PM-WLoFu_w"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_pZCYNruGEeq7PM-WLoFu_w"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_pZCYMbuGEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pZCYMruGEeq7PM-WLoFu_w" x="544" y="1912" width="158" height="151"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_Cdv0f7uHEeq7PM-WLoFu_w" type="2003" element="_CdmB0LuHEeq7PM-WLoFu_w">
+          <children xmi:type="notation:Node" xmi:id="_Cdv0gruHEeq7PM-WLoFu_w" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_Cdv0g7uHEeq7PM-WLoFu_w" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_FkOcVruHEeq7PM-WLoFu_w" type="3010" element="_Fj7goLuHEeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_FkOcV7uHEeq7PM-WLoFu_w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_FkOcWLuHEeq7PM-WLoFu_w"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_F0d3ALuHEeq7PM-WLoFu_w" type="3010" element="_F0K8ELuHEeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_F0d3AbuHEeq7PM-WLoFu_w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_F0d3AruHEeq7PM-WLoFu_w"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_Cdv0hLuHEeq7PM-WLoFu_w"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_Cdv0hbuHEeq7PM-WLoFu_w"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_Cdv0gLuHEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cdv0gbuHEeq7PM-WLoFu_w" x="830" y="1920" width="148" height="63"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_OR4Xy8D3Eeq7PM-WLoFu_w" type="2003" element="_ORk1sMD3Eeq7PM-WLoFu_w">
+          <children xmi:type="notation:Node" xmi:id="_OR4XzsD3Eeq7PM-WLoFu_w" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_OR4Xz8D3Eeq7PM-WLoFu_w" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_OR4X0sD3Eeq7PM-WLoFu_w" type="3010" element="_ORunbMD3Eeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_OR4X08D3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8" italic="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_OR4X1MD3Eeq7PM-WLoFu_w"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_OR4X0MD3Eeq7PM-WLoFu_w"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_OR4X0cD3Eeq7PM-WLoFu_w"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_OR4XzMD3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OR4XzcD3Eeq7PM-WLoFu_w" x="318" y="738" width="153" height="63"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_biBZ08D3Eeq7PM-WLoFu_w" type="2003" element="_bht2EMD3Eeq7PM-WLoFu_w">
+          <children xmi:type="notation:Node" xmi:id="_biBZ1sD3Eeq7PM-WLoFu_w" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_biBZ18D3Eeq7PM-WLoFu_w" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_biBZ2sD3Eeq7PM-WLoFu_w" type="3010" element="_biBYbsD3Eeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_biBZ28D3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8" italic="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_biBZ3MD3Eeq7PM-WLoFu_w"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_biBZ2MD3Eeq7PM-WLoFu_w"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_biBZ2cD3Eeq7PM-WLoFu_w"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_biBZ1MD3Eeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_biBZ1cD3Eeq7PM-WLoFu_w" x="318" y="668" width="153" height="63"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_F6kJd8FBEeq7PM-WLoFu_w" type="2003" element="_F6aW0MFBEeq7PM-WLoFu_w">
+          <children xmi:type="notation:Node" xmi:id="_F6kJesFBEeq7PM-WLoFu_w" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_F6kJe8FBEeq7PM-WLoFu_w" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_SOia4MFBEeq7PM-WLoFu_w" type="3010" element="_SOPf8MFBEeq7PM-WLoFu_w">
+              <styles xmi:type="notation:FontStyle" xmi:id="_SOia4cFBEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_SOia4sFBEeq7PM-WLoFu_w"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_F6kJfMFBEeq7PM-WLoFu_w"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_F6kJfcFBEeq7PM-WLoFu_w"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_F6kJeMFBEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F6kJecFBEeq7PM-WLoFu_w" x="1580" y="1440" width="143" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_vm8q4NJOEeqURrng_SOYKA" type="2003" element="_vmn6wNJOEeqURrng_SOYKA">
+          <children xmi:type="notation:Node" xmi:id="_vm9R8NJOEeqURrng_SOYKA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_vm9R8dJOEeqURrng_SOYKA" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_vm9R8tJOEeqURrng_SOYKA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_vm9R89JOEeqURrng_SOYKA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_vm8q4dJOEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8" italic="true"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vm8q4tJOEeqURrng_SOYKA" x="544" y="1816" width="158" height="65"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_XQ-wINJPEeqURrng_SOYKA" type="2003" element="_XQxUwNJPEeqURrng_SOYKA">
+          <children xmi:type="notation:Node" xmi:id="_XQ_XMNJPEeqURrng_SOYKA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_XQ_XMdJPEeqURrng_SOYKA" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_XQ_XMtJPEeqURrng_SOYKA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_XQ_XM9JPEeqURrng_SOYKA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_XQ-wIdJPEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XQ-wItJPEeqURrng_SOYKA" x="272" y="1813" width="168" height="65"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_YKP6cNJPEeqURrng_SOYKA" type="2003" element="_YKDGINJPEeqURrng_SOYKA">
+          <children xmi:type="notation:Node" xmi:id="_YKQhgNJPEeqURrng_SOYKA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_YKQhgdJPEeqURrng_SOYKA" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_YKQhgtJPEeqURrng_SOYKA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_YKQhg9JPEeqURrng_SOYKA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_YKP6cdJPEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YKP6ctJPEeqURrng_SOYKA" x="80" y="1816" width="158" height="66"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_8UvjYNWUEeqxyISDsRhqww" type="2003" element="_8T_8gNWUEeqxyISDsRhqww">
+          <children xmi:type="notation:Node" xmi:id="_8UwxgNWUEeqxyISDsRhqww" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_8UxYkNWUEeqxyISDsRhqww" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_-ANmsNWUEeqxyISDsRhqww" type="3010" element="_9_vsoNWUEeqxyISDsRhqww">
+              <styles xmi:type="notation:FontStyle" xmi:id="_-ANmsdWUEeqxyISDsRhqww" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_-ANmstWUEeqxyISDsRhqww"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_K9WykNWVEeqxyISDsRhqww" type="3010" element="_K9CpgNWVEeqxyISDsRhqww">
+              <styles xmi:type="notation:FontStyle" xmi:id="_K9WykdWVEeqxyISDsRhqww" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_K9WyktWVEeqxyISDsRhqww"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_PVURUNWVEeqxyISDsRhqww" type="3010" element="_PVCkgNWVEeqxyISDsRhqww">
+              <styles xmi:type="notation:FontStyle" xmi:id="_PVURUdWVEeqxyISDsRhqww" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_PVURUtWVEeqxyISDsRhqww"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_8UxYkdWUEeqxyISDsRhqww"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_8UxYktWUEeqxyISDsRhqww"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_8UvjYdWUEeqxyISDsRhqww" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8UvjYtWUEeqxyISDsRhqww" x="1212" y="728" width="233" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_kvvEkOFTEequR_36GR_fPA" type="2003" element="_kvE9QOFTEequR_36GR_fPA">
+          <children xmi:type="notation:Node" xmi:id="_kvw5wOFTEequR_36GR_fPA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_kvxg0OFTEequR_36GR_fPA" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_kvxg0eFTEequR_36GR_fPA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_kvxg0uFTEequR_36GR_fPA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_kvvEkeFTEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kvvEkuFTEequR_36GR_fPA" x="-115" y="1816" width="165" height="65"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_rCh4UOFTEequR_36GR_fPA" type="2003" element="_rCFzcOFTEequR_36GR_fPA">
+          <children xmi:type="notation:Node" xmi:id="_rCh4U-FTEequR_36GR_fPA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_rCh4VOFTEequR_36GR_fPA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_E3zNMOFUEequR_36GR_fPA" type="3010" element="_E3aLoOFUEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_E3zNMeFUEequR_36GR_fPA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_E3zNMuFUEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Gcn18-FUEequR_36GR_fPA" type="3010" element="_GcJU0-FUEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Gcn19OFUEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Gcn19eFUEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_H5omgOFUEequR_36GR_fPA" type="3010" element="_XvMJhHS1EeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_H5omgeFUEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_H5omguFUEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_IR2SMOFUEequR_36GR_fPA" type="3010" element="_rIxe4WdwEeqHf7kMgRZPUQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_IR2SMeFUEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_IR2SMuFUEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_j9cPgOFUEequR_36GR_fPA" type="3010" element="_j9IGcOFUEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_j9cPgeFUEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_j9cPguFUEequR_36GR_fPA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_rCh4VeFTEequR_36GR_fPA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_rCh4VuFTEequR_36GR_fPA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_rCh4UeFTEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rCh4UuFTEequR_36GR_fPA" x="-115" y="1912" width="165" height="171"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_tFV9QOFWEequR_36GR_fPA" type="2003" element="_tFH60OFWEequR_36GR_fPA">
+          <children xmi:type="notation:Node" xmi:id="_tFV9Q-FWEequR_36GR_fPA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_tFV9ROFWEequR_36GR_fPA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_x6pfUOFWEequR_36GR_fPA" type="3010" element="_x6bc4OFWEequR_36GR_fPA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_x6pfUeFWEequR_36GR_fPA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_x6pfUuFWEequR_36GR_fPA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Y2vFcPHqEeqrmeSkFyyQrA" type="3010" element="_Y2cxkPHqEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Y2vFcfHqEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Y2vFcvHqEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_tFV9ReFWEequR_36GR_fPA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_tFV9RuFWEequR_36GR_fPA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_tFV9QeFWEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tFV9QuFWEequR_36GR_fPA" x="2660" y="94" width="258" height="134"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_tafM8OH9EeqrmeSkFyyQrA" type="2003" element="_tZcEEOH9EeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_taksgOH9EeqrmeSkFyyQrA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_taksgeH9EeqrmeSkFyyQrA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="__wfHUOISEeqrmeSkFyyQrA" type="3010" element="__wOooOISEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="__wfHUeISEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="__wfHUuISEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_AB19EOITEeqrmeSkFyyQrA" type="3010" element="_ABleYOITEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_AB19EeITEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_AB19EuITEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_qf0oQOIhEeqrmeSkFyyQrA" type="3010" element="__lArkOIcEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_qf0oQeIhEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_qf0oQuIhEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_talTkOH9EeqrmeSkFyyQrA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_talTkeH9EeqrmeSkFyyQrA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_tafM8eH9EeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tafM8uH9EeqrmeSkFyyQrA" x="-480" y="810" width="378" height="138"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_QdMN0OIWEeqrmeSkFyyQrA" type="2003" element="_Qc-LYOIWEeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_QdM04OIWEeqrmeSkFyyQrA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_QdM04eIWEeqrmeSkFyyQrA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_sYhI4OIZEeqrmeSkFyyQrA" type="3010" element="_sYSfYOIZEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_sYhI4eIZEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_sYhI4uIZEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_vNV5kOIcEeqrmeSkFyyQrA" type="3010" element="_vNH3IOIcEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_vNV5keIcEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_vNV5kuIcEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_1TkwoOIfEeqrmeSkFyyQrA" type="3010" element="_1TUR8OIfEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_1TkwoeIfEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_1TkwouIfEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_NpTlYOIgEeqrmeSkFyyQrA" type="3010" element="_NpEU0OIgEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_NpTlYeIgEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_NpTlYuIgEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Q7xL4PGbEeqrmeSkFyyQrA" type="3010" element="_3QQN0OIhEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Q7xL4fGbEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Q7xL4vGbEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_RPc84PGbEeqrmeSkFyyQrA" type="3010" element="_Bc3lEOIdEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_RPc84fGbEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_RPc84vGbEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_RfztEPGbEeqrmeSkFyyQrA" type="3010" element="_uOCmcOIhEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_RfztEfGbEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_RfztEvGbEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Ruaw0PGbEeqrmeSkFyyQrA" type="3010" element="_2w38cOIcEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Ruaw0fGbEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Ruaw0vGbEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_R_tVIPGbEeqrmeSkFyyQrA" type="3010" element="_00BOMOIcEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_R_tVIfGbEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_R_tVIvGbEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_QdM04uIWEeqrmeSkFyyQrA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_QdM04-IWEeqrmeSkFyyQrA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_QdMN0eIWEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QdMN0uIWEeqrmeSkFyyQrA" x="-440" y="1025" width="277" height="218"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_sQ9GAOOSEeqrmeSkFyyQrA" type="2003" element="_sQt1cOOSEeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_sQ9tEOOSEeqrmeSkFyyQrA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_sQ9tEeOSEeqrmeSkFyyQrA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_6iXWIOOSEeqrmeSkFyyQrA" type="3010" element="_6iAw0OOSEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_6iXWIeOSEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_6iXWIuOSEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7oLusOOSEeqrmeSkFyyQrA" type="3010" element="_7n3loeOSEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7oLuseOSEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7oLusuOSEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_8i5DcOOSEeqrmeSkFyyQrA" type="3010" element="_8ik6euOSEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_8i5DceOSEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_8i5DcuOSEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_9Ob60OOSEeqrmeSkFyyQrA" type="3010" element="_9OIY2-OSEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_9Ob60eOSEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_9Ob60uOSEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_9yIdwOOSEeqrmeSkFyyQrA" type="3010" element="_9x0UveOSEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_9yIdweOSEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_9yIdwuOSEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_R5jfAOOTEeqrmeSkFyyQrA" type="3010" element="_R5P9EuOTEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_R5jfAeOTEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_R5jfAuOTEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_SZimoOOTEeqrmeSkFyyQrA" type="3010" element="_SZN2ruOTEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_SZimoeOTEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_SZimouOTEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_S4LDYOOTEeqrmeSkFyyQrA" type="3010" element="_S326cuOTEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_S4LDYeOTEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_S4LDYuOTEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Ys3j0Cs6EeuX7NehQjN5PA" type="3010" element="_Ysl3ACs6EeuX7NehQjN5PA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Ys3j0Ss6EeuX7NehQjN5PA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Ys3j0is6EeuX7NehQjN5PA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_sQ9tEuOSEeqrmeSkFyyQrA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_sQ9tE-OSEeqrmeSkFyyQrA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_sQ9GAeOSEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sQ9GAuOSEeqrmeSkFyyQrA" x="1962" y="414" width="120" height="213"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_MpIvcOOtEeqrmeSkFyyQrA" type="2003" element="_Mo6F8OOtEeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_MpIvc-OtEeqrmeSkFyyQrA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_MpIvdOOtEeqrmeSkFyyQrA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_O7_i4OOtEeqrmeSkFyyQrA" type="3010" element="_O7xgcOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_O7_i4eOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_O7_i4uOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_PL0uoOOtEeqrmeSkFyyQrA" type="3010" element="_PLleEOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_PL0uoeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_PL0uouOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_PcckkOOtEeqrmeSkFyyQrA" type="3010" element="_PcN7EOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_PcckkeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_PcckkuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_TQfd8OOtEeqrmeSkFyyQrA" type="3010" element="_TQQNYOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_TQfd8eOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_TQfd8uOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_TkQHcOOtEeqrmeSkFyyQrA" type="3010" element="_TkA24OOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_TkQHceOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_TkQHcuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_TzJfEOOtEeqrmeSkFyyQrA" type="3010" element="_Ty61kOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_TzJfEeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_TzJfEuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_XCYbMOOtEeqrmeSkFyyQrA" type="3010" element="_XCAAsOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_XCYbMeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_XCYbMuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_XSGSMOOtEeqrmeSkFyyQrA" type="3010" element="_XR1McOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_XSGSMeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_XSGSMuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_XiwkYOOtEeqrmeSkFyyQrA" type="3010" element="_XigswOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_XiwkYeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_XiwkYuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_aeumQOOtEeqrmeSkFyyQrA" type="3010" element="_aegj0OOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_aeumQeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_aeumQuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_bB6y4OOtEeqrmeSkFyyQrA" type="3010" element="_bBswcOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_bB6y4eOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_bB6y4uOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_bSeXYOOtEeqrmeSkFyyQrA" type="3010" element="_bSPt4OOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_bSeXYeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_bSeXYuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_bkIvIOOtEeqrmeSkFyyQrA" type="3010" element="_bj6ssOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_bkIvIeOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_bkIvIuOtEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_b0HE0OOtEeqrmeSkFyyQrA" type="3010" element="_bz4bUOOtEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_b0HE0eOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_b0HE0uOtEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_MpIvdeOtEeqrmeSkFyyQrA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_MpIvduOtEeqrmeSkFyyQrA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_MpIvceOtEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MpIvcuOtEeqrmeSkFyyQrA" x="-316" y="1240" width="120" height="263"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_YbXHIPHhEeqrmeSkFyyQrA" type="2003" element="_YbHPgPHhEeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_YbXHI_HhEeqrmeSkFyyQrA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_YbXHJPHhEeqrmeSkFyyQrA" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_YbXHJfHhEeqrmeSkFyyQrA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_YbXHJvHhEeqrmeSkFyyQrA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_YbXHIfHhEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YbXHIvHhEeqrmeSkFyyQrA" x="-316" y="1816" width="153" height="62"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_Yu6VQPHhEeqrmeSkFyyQrA" type="2003" element="_YurEsPHhEeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_Yu6VQ_HhEeqrmeSkFyyQrA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_Yu6VRPHhEeqrmeSkFyyQrA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_x47GoPHhEeqrmeSkFyyQrA" type="3010" element="_x4rPAPHhEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_x47GofHhEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_x47GovHhEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_yap6sPHhEeqrmeSkFyyQrA" type="3010" element="_yaaDEPHhEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_yap6sfHhEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_yap6svHhEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ysDMsPHhEeqrmeSkFyyQrA" type="3010" element="_yr0jMPHhEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_ysDMsfHhEeqrmeSkFyyQrA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_ysDMsvHhEeqrmeSkFyyQrA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_5kwJ4PHhEeqrmeSkFyyQrA" type="3010" element="_5kGCkPHhEeqrmeSkFyyQrA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_5kwJ4fHhEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_5kwJ4vHhEeqrmeSkFyyQrA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_Yu6VRfHhEeqrmeSkFyyQrA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_Yu6VRvHhEeqrmeSkFyyQrA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_Yu6VQfHhEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Yu6VQvHhEeqrmeSkFyyQrA" x="-316" y="1912" width="153" height="171"/>
+        </children>
+        <styles xmi:type="notation:DiagramStyle" xmi:id="_xhEzglezEeq_N_dFIDFqhA"/>
+        <edges xmi:type="notation:Edge" xmi:id="_4sy1Y5ECEeqO3KkprL3Vfw" type="4001" element="_4spEbJECEeqO3KkprL3Vfw" source="_nq3GrIyMEeqO3KkprL3Vfw" target="_mYqXmZECEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_4sy1Z5ECEeqO3KkprL3Vfw" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4sy1aJECEeqO3KkprL3Vfw" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_4sy1aZECEeqO3KkprL3Vfw" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4sy1apECEeqO3KkprL3Vfw" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_4sy1a5ECEeqO3KkprL3Vfw" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4sy1bJECEeqO3KkprL3Vfw" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_4sy1ZJECEeqO3KkprL3Vfw" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_4sy1ZZECEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4sy1ZpECEeqO3KkprL3Vfw" points="[-1, 0, -1, 60]$[-1, -60, -1, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4sy1bZECEeqO3KkprL3Vfw" id="(0.578125,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4sy1bpECEeqO3KkprL3Vfw" id="(0.5870646766169154,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_atT45JEEEeqO3KkprL3Vfw" type="4001" element="_atT3ZpEEEeqO3KkprL3Vfw" source="_mYqXmZECEeqO3KkprL3Vfw" target="_cjg-84yMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_atT46JEEEeqO3KkprL3Vfw" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_atT46ZEEEeqO3KkprL3Vfw" x="-11" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_atT46pEEEeqO3KkprL3Vfw" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_atT465EEEeqO3KkprL3Vfw" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_atT47JEEEeqO3KkprL3Vfw" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_atT47ZEEEeqO3KkprL3Vfw" x="-19" y="-2"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_atT45ZEEEeqO3KkprL3Vfw" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_atT45pEEEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_atT455EEEeqO3KkprL3Vfw" points="[-1, 0, -1, 60]$[-1, -60, -1, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_atT47pEEEeqO3KkprL3Vfw" id="(0.5870646766169154,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_atT475EEEeqO3KkprL3Vfw" id="(0.5636363636363636,0.7424242424242424)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_bPR8_5EEEeqO3KkprL3Vfw" type="4001" element="_bO_BspEEEeqO3KkprL3Vfw" source="_qxVvJIyMEeqO3KkprL3Vfw" target="_cjg-84yMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_bPR9A5EEEeqO3KkprL3Vfw" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bPR9BJEEEeqO3KkprL3Vfw" x="4" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_bPR9BZEEEeqO3KkprL3Vfw" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bPR9BpEEEeqO3KkprL3Vfw" x="4" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_bPR9B5EEEeqO3KkprL3Vfw" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bPR9CJEEEeqO3KkprL3Vfw" x="4" y="5"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_bPR9AJEEEeqO3KkprL3Vfw" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_bPR9AZEEEeqO3KkprL3Vfw" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bPR9ApEEEeqO3KkprL3Vfw" points="[-1, 0, 176, 84]$[-1, -27, 176, 57]$[-215, -27, -38, 57]$[-215, -50, -38, 34]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bPR9CZEEEeqO3KkprL3Vfw" id="(0.5039370078740157,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bPR9CpEEEeqO3KkprL3Vfw" id="(0.5636363636363636,0.7424242424242424)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_D7dppqGyEeq7RunjHU3yiA" type="4001" element="_D7T3LKGyEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_48k5yqGxEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_D7dpqqGyEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D7dpq6GyEeq7RunjHU3yiA" x="36" y="-17"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_D7dprKGyEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D7dpraGyEeq7RunjHU3yiA" x="355" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_D7dprqGyEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D7dpr6GyEeq7RunjHU3yiA" x="32" y="1501"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_D7dpp6GyEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_D7dpqKGyEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D7dpqaGyEeq7RunjHU3yiA" points="[-1, 0, -1547, 598]$[-1, -849, -1547, -251]$[1572, -849, 26, -251]$[1572, -789, 26, -191]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D7dpsKGyEeq7RunjHU3yiA" id="(0.5025252525252525,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D7dpsaGyEeq7RunjHU3yiA" id="(0.416580310880829,1.446969696969697)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_bDnEkKWqEeq7RunjHU3yiA" type="4001" element="_bDUJ1qWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_LWm4AFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_bDnElKWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bDnElaWqEeq7RunjHU3yiA" x="-307" y="11"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_bDnElqWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bDnEl6WqEeq7RunjHU3yiA" x="-2" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_bDnEmKWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bDnEmaWqEeq7RunjHU3yiA" x="2" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_bDnEkaWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_bDnEkqWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bDnEk6WqEeq7RunjHU3yiA" points="[0, 0, 573, -215]$[-572, 0, 1, -215]$[-572, 215, 1, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bDnEmqWqEeq7RunjHU3yiA" id="(0.0,0.05102040816326531)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bDnEm6WqEeq7RunjHU3yiA" id="(0.7278359190859265,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_b_-A8KWqEeq7RunjHU3yiA" type="4001" element="_b_0OXKWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_bWMhMFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_b_-A9KWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b_-A9aWqEeq7RunjHU3yiA" x="102" y="-13"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_b_-A9qWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b_-A96WqEeq7RunjHU3yiA" x="-1" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_b_-A-KWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b_-A-aWqEeq7RunjHU3yiA" x="1" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_b_-A8aWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_b_-A8qWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_b_-A86WqEeq7RunjHU3yiA" points="[0, 0, 499, -202]$[-499, 0, 0, -202]$[-499, 202, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b_-A-qWqEeq7RunjHU3yiA" id="(0.0,0.1836734693877551)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b_-A-6WqEeq7RunjHU3yiA" id="(0.07758620689655173,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_cy7tIKWqEeq7RunjHU3yiA" type="4001" element="_cyoLYqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_YS_SUJkNEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_cy7tJKWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cy7tJaWqEeq7RunjHU3yiA" x="31"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_cy7tJqWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cy7tJ6WqEeq7RunjHU3yiA" x="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_cy7tKKWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cy7tKaWqEeq7RunjHU3yiA" x="9" y="7"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_cy7tIaWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_cy7tIqWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cy7tI6WqEeq7RunjHU3yiA" points="[12, 0, -49, -122]$[12, 108, -49, -14]$[44, 108, -17, -14]$[44, 122, -17, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cy7tKqWqEeq7RunjHU3yiA" id="(0.17424242424242425,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cy7tK6WqEeq7RunjHU3yiA" id="(0.5817843866171003,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_dZEh66WqEeq7RunjHU3yiA" type="4001" element="_dY7WaKWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_l87PUFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_dZEh76WqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dZEh8KWqEeq7RunjHU3yiA" x="-26"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dZEh8aWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dZEh8qWqEeq7RunjHU3yiA" x="15"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dZEh86WqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dZEh9KWqEeq7RunjHU3yiA" x="-35" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_dZEh7KWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_dZEh7aWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dZEh7qWqEeq7RunjHU3yiA" points="[0, 30, 98, -172]$[-103, 30, -5, -172]$[-103, 202, -5, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dZEh9aWqEeq7RunjHU3yiA" id="(0.0,0.1836734693877551)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dZEh9qWqEeq7RunjHU3yiA" id="(0.38235294117647056,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_dyZmEKWqEeq7RunjHU3yiA" type="4001" element="_dyHSfqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_AWD_IJkNEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_dyZmFKWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dyZmFaWqEeq7RunjHU3yiA" x="-172" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dyZmFqWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dyZmF6WqEeq7RunjHU3yiA" x="-15" y="-45"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dyZmGKWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dyZmGaWqEeq7RunjHU3yiA" x="11" y="29"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_dyZmEaWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_dyZmEqWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dyZmE6WqEeq7RunjHU3yiA" points="[157, 0, -352, -122]$[157, 69, -352, -53]$[531, 69, 22, -53]$[531, 122, 22, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dyZmGqWqEeq7RunjHU3yiA" id="(0.12626262626262627,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dyZmG6WqEeq7RunjHU3yiA" id="(0.2966101694915254,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_ePdW-aWqEeq7RunjHU3yiA" type="4001" element="_ePUL5KWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_PvgRgJkREeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_ePdW_aWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ePdW_qWqEeq7RunjHU3yiA" x="143" y="21" width="161" height="17"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ePdW_6WqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ePdXAKWqEeq7RunjHU3yiA" x="38" y="-153"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ePdXAaWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ePdXAqWqEeq7RunjHU3yiA" x="-1" y="20"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_ePdW-qWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_ePdW-6WqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ePdW_KWqEeq7RunjHU3yiA" points="[-120, 4, -220, -121]$[-120, 83, -220, -42]$[100, 83, 0, -42]$[100, 125, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ePdXA6WqEeq7RunjHU3yiA" id="(0.7727272727272727,0.9591836734693877)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ePdXBKWqEeq7RunjHU3yiA" id="(0.30150753768844224,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_ewF-96WqEeq7RunjHU3yiA" type="4001" element="_ev8zyqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_W61JIFe9Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_ewF--6WqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ewF-_KWqEeq7RunjHU3yiA" x="-45" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ewF-_aWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ewF-_qWqEeq7RunjHU3yiA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ewF-_6WqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ewF_AKWqEeq7RunjHU3yiA" x="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_ewF--KWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_ewF--aWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ewF--qWqEeq7RunjHU3yiA" points="[-235, -66, 258, -189]$[-497, -66, -4, -189]$[-497, 123, -4, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ewF_AaWqEeq7RunjHU3yiA" id="(0.5934343434343434,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ewF_AqWqEeq7RunjHU3yiA" id="(0.5298013245033113,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_fZrHVKWqEeq7RunjHU3yiA" type="4001" element="_fZhVQKWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_cHiiAJkNEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_fZrHWKWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fZrHWaWqEeq7RunjHU3yiA" x="57" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_fZrHWqWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fZrHW6WqEeq7RunjHU3yiA" x="-3" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_fZrHXKWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fZrHXaWqEeq7RunjHU3yiA" x="-40" y="7"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_fZrHVaWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_fZrHVqWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fZrHV6WqEeq7RunjHU3yiA" points="[-188, 0, -179, -122]$[-188, 99, -179, -23]$[-17, 99, -8, -23]$[-17, 122, -8, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fZrHXqWqEeq7RunjHU3yiA" id="(0.7323232323232324,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fZrHX6WqEeq7RunjHU3yiA" id="(0.5,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_f0WRqqWqEeq7RunjHU3yiA" type="4001" element="_f0MfFqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_Uv6iQJkPEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_f0WRrqWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0WRr6WqEeq7RunjHU3yiA" x="9" y="-13"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_f0WRsKWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0WRsaWqEeq7RunjHU3yiA" x="198" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_f0WRsqWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0WRs6WqEeq7RunjHU3yiA" x="23" y="11"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_f0WRq6WqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_f0WRrKWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f0WRraWqEeq7RunjHU3yiA" points="[-174, 93, -522, -122]$[-174, 152, -522, -63]$[341, 152, -7, -63]$[341, 215, -7, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f0WRtKWqEeq7RunjHU3yiA" id="(1.0,0.05102040816326531)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f0WRtaWqEeq7RunjHU3yiA" id="(0.6044776119402985,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_gQ9TMKWqEeq7RunjHU3yiA" type="4001" element="_gQzicqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_2bRUYFiqEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_gQ9TNKWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gQ9TNaWqEeq7RunjHU3yiA" x="43" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_gQ9TNqWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gQ9TN6WqEeq7RunjHU3yiA" x="95" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_gQ9TOKWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gQ9TOaWqEeq7RunjHU3yiA" x="-75" y="3"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_gQ9TMaWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_gQ9TMqWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gQ9TM6WqEeq7RunjHU3yiA" points="[-79, 80, -585, -123]$[-79, 119, -585, -84]$[490, 119, -16, -84]$[490, 203, -16, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gQ9TOqWqEeq7RunjHU3yiA" id="(1.0,0.1836734693877551)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gQ9TO6WqEeq7RunjHU3yiA" id="(0.5151515151515151,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_guAdlqWqEeq7RunjHU3yiA" type="4001" element="_gt3SEqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_GJ4zXXSoEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_guKMkKWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_guKMkaWqEeq7RunjHU3yiA" x="12" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_guKMkqWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_guKMk6WqEeq7RunjHU3yiA" x="66" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_guKMlKWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_guKMlaWqEeq7RunjHU3yiA" x="-111" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_guAdl6WqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_guAdmKWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_guAdmaWqEeq7RunjHU3yiA" points="[-59, 80, -772, -123]$[-59, 109, -772, -94]$[681, 109, -32, -94]$[681, 203, -32, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_guKMlqWqEeq7RunjHU3yiA" id="(1.0,0.1836734693877551)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_guKMl6WqEeq7RunjHU3yiA" id="(0.723404255319149,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_hHf7baWqEeq7RunjHU3yiA" type="4001" element="_hHWJGKWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_B-0jgHSsEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_hHf7caWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hHf7cqWqEeq7RunjHU3yiA" x="-26" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_hHf7c6WqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hHf7dKWqEeq7RunjHU3yiA" x="28" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_hHf7daWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hHf7dqWqEeq7RunjHU3yiA" x="-160" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_hHf7bqWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_hHf7b6WqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hHf7cKWqEeq7RunjHU3yiA" points="[-39, 88, -870, -122]$[-39, 101, -870, -109]$[829, 101, -2, -109]$[829, 210, -2, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hHf7d6WqEeq7RunjHU3yiA" id="(1.0,0.10204081632653061)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hHf7eKWqEeq7RunjHU3yiA" id="(0.5,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_lrjTyqWqEeq7RunjHU3yiA" type="4001" element="_lraJwqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_E5MQAFe6Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_lrjTzqWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lrjTz6WqEeq7RunjHU3yiA" x="-118" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_lrjT0KWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lrjT0aWqEeq7RunjHU3yiA" x="-35" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_lrjT0qWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lrjT06WqEeq7RunjHU3yiA" x="-183" y="8"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_lrjTy6WqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_lrjTzKWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lrjTzaWqEeq7RunjHU3yiA" points="[0, 17, -1011, -173]$[1081, 17, 70, -173]$[1081, 190, 70, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lrjT1KWqEeq7RunjHU3yiA" id="(1.0,0.30612244897959184)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lrjT1aWqEeq7RunjHU3yiA" id="(0.1895734597156398,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_mRZzkqWqEeq7RunjHU3yiA" type="4001" element="_mRQCNKWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_JL40QFe6Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_mRZzlqWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mRZzl6WqEeq7RunjHU3yiA" x="-83" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_mRZzmKWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mRZzmaWqEeq7RunjHU3yiA" x="-34" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_mRZzmqWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mRZzm6WqEeq7RunjHU3yiA" x="-410" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_mRZzk6WqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_mRZzlKWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mRZzlaWqEeq7RunjHU3yiA" points="[4, 2, -1196, -202]$[1274, 2, 74, -202]$[1274, 190, 74, -14]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mRZznKWqEeq7RunjHU3yiA" id="(0.98989898989899,0.3163265306122449)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mRZznaWqEeq7RunjHU3yiA" id="(0.0,0.05555555555555555)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_mudiIKWqEeq7RunjHU3yiA" type="4001" element="_muKnuqWqEeq7RunjHU3yiA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_hV04ZHSrEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_mudiJKWqEeq7RunjHU3yiA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mudiJaWqEeq7RunjHU3yiA" x="-113" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_mudiJqWqEeq7RunjHU3yiA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mudiJ6WqEeq7RunjHU3yiA" x="-35" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_mudiKKWqEeq7RunjHU3yiA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mudiKaWqEeq7RunjHU3yiA" x="-193" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_mudiIaWqEeq7RunjHU3yiA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_mudiIqWqEeq7RunjHU3yiA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mudiI6WqEeq7RunjHU3yiA" points="[0, 0, -1466, -202]$[1466, 0, 0, -202]$[1466, 202, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mudiKqWqEeq7RunjHU3yiA" id="(1.0,0.1836734693877551)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mudiK6WqEeq7RunjHU3yiA" id="(0.3614457831325301,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_Qf2cgKcLEeqqzsn4YJcnhg" type="4001" element="_hdchZIyMEeqO3KkprL3Vfw" source="_wOXxcFijEeq_N_dFIDFqhA" target="_l2iNYJB7EeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_Qf2chKcLEeqqzsn4YJcnhg" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qf2chacLEeqqzsn4YJcnhg" x="56" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_Qf2chqcLEeqqzsn4YJcnhg" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qf2ch6cLEeqqzsn4YJcnhg" x="-18" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_Qf2ciKcLEeqqzsn4YJcnhg" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qf2ciacLEeqqzsn4YJcnhg" x="14" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_Qf2cgacLEeqqzsn4YJcnhg" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_Qf2cgqcLEeqqzsn4YJcnhg" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Qf2cg6cLEeqqzsn4YJcnhg" points="[-18, -7, -717, 330]$[-18, -338, -717, -1]$[660, -338, -39, -1]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qf3DkKcLEeqqzsn4YJcnhg" id="(0.851010101010101,0.07142857142857142)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qf3DkacLEeqqzsn4YJcnhg" id="(0.3305084745762712,0.84)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_T2scgKcLEeqqzsn4YJcnhg" type="4001" element="_T2YToKcLEeqqzsn4YJcnhg" source="_wOXxcFijEeq_N_dFIDFqhA" target="_jWu_O4yMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_T2schKcLEeqqzsn4YJcnhg" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T2schacLEeqqzsn4YJcnhg" x="81" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_T2schqcLEeqqzsn4YJcnhg" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T2sch6cLEeqqzsn4YJcnhg" x="-24" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_T2sciKcLEeqqzsn4YJcnhg" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T2sciacLEeqqzsn4YJcnhg" x="24" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_T2scgacLEeqqzsn4YJcnhg" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_T2scgqcLEeqqzsn4YJcnhg" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T2scg6cLEeqqzsn4YJcnhg" points="[-44, 0, -578, 391]$[-44, -382, -578, 9]$[534, -382, 0, 9]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T2sciqcLEeqqzsn4YJcnhg" id="(0.8257575757575758,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T2sci6cLEeqqzsn4YJcnhg" id="(0.0,0.7222222222222222)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_KQyRULuHEeq7PM-WLoFu_w" type="4001" element="_KQfWhLuHEeq7PM-WLoFu_w" source="_pZCYMLuGEeq7PM-WLoFu_w" target="_Cdv0f7uHEeq7PM-WLoFu_w">
+          <children xmi:type="notation:Node" xmi:id="_KQyRVLuHEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KQyRVbuHEeq7PM-WLoFu_w" x="-8" y="-12"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_KQyRVruHEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KQyRV7uHEeq7PM-WLoFu_w" x="17" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_KQyRWLuHEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KQyRWbuHEeq7PM-WLoFu_w" x="-42" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_KQyRUbuHEeq7PM-WLoFu_w" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_KQyRUruHEeq7PM-WLoFu_w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KQyRU7uHEeq7PM-WLoFu_w" points="[9, 13, -213, -8]$[139, 13, -83, -8]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KQyRWruHEeq7PM-WLoFu_w" id="(0.9423076923076923,0.2214765100671141)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KQyRW7uHEeq7PM-WLoFu_w" id="(0.5684931506849316,0.7540983606557377)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_vRsgs8EFEeq7PM-WLoFu_w" type="4001" element="_vRjVtMEFEeq7PM-WLoFu_w" source="_1Wzp4FiuEeq_N_dFIDFqhA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_vRsgt8EFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vRsguMEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_vRsgucEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vRsgusEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_vRsgu8EFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vRsgvMEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_vRsgtMEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_vRsgtcEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vRsgtsEFEeq7PM-WLoFu_w" points="[0, 0, -619, -50]$[619, 50, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vRsgvcEFEeq7PM-WLoFu_w" id="(0.7179032973971325,0.9693877551020408)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vRsgvsEFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_v-QDUMEFEeq7PM-WLoFu_w" type="4001" element="_v99IusEFEeq7PM-WLoFu_w" source="_YS_SUJkNEeq7RunjHU3yiA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_v-QDVMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v-QDVcEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_v-QDVsEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v-QDV8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_v-QDWMEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v-QDWcEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_v-QDUcEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_v-QDUsEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v-QDU8EFEeq7PM-WLoFu_w" points="[0, 0, -740, -309]$[740, 309, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v-QDWsEFEeq7PM-WLoFu_w" id="(0.47026022304832715,0.9919541496748595)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v-QDW8EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_xftPAMEFEeq7PM-WLoFu_w" type="4001" element="_xfaUUsEFEeq7PM-WLoFu_w" source="_l87PUFe9Eeq_N_dFIDFqhA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_xftPBMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xftPBcEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_xftPBsEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xftPB8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_xftPCMEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xftPCcEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_xftPAcEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_xftPAsEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xftPA8EFEeq7PM-WLoFu_w" points="[0, 0, -334, -510]$[334, 510, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xftPCsEFEeq7PM-WLoFu_w" id="(0.47058823529411764,0.9715639810426541)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xftPC8EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_yPGEkMEFEeq7PM-WLoFu_w" type="4001" element="_yOpZBsEFEeq7PM-WLoFu_w" source="_AWD_IJkNEeq7RunjHU3yiA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_yPGElMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPGElcEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_yPGElsEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPGEl8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_yPGEmMEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPGEmcEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_yPGEkcEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_yPGEksEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yPGEk8EFEeq7PM-WLoFu_w" points="[0, 0, -285, -422]$[285, 422, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yPGEmsEFEeq7PM-WLoFu_w" id="(0.5932203389830508,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yPGEm8EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_zXEZQMEFEeq7PM-WLoFu_w" type="4001" element="_zWxevMEFEeq7PM-WLoFu_w" source="_PvgRgJkREeq7RunjHU3yiA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_zXEZRMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zXEZRcEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_zXEZRsEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zXEZR8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_zXEZSMEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zXEZScEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_zXEZQcEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_zXEZQsEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zXEZQ8EFEeq7PM-WLoFu_w" points="[0, 0, -225, -422]$[225, 422, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zXEZSsEFEeq7PM-WLoFu_w" id="(0.3768844221105528,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zXEZS8EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_1Ht4LsEFEeq7PM-WLoFu_w" type="4001" element="_1HkuCMEFEeq7PM-WLoFu_w" source="_cHiiAJkNEeq7RunjHU3yiA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_1Ht4MsEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1Ht4M8EFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_1Ht4NMEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1Ht4NcEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_1Ht4NsEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1Ht4N8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_1Ht4L8EFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_1Ht4MMEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1Ht4McEFEeq7PM-WLoFu_w" points="[0, 0, -70, -426]$[70, 426, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1Ht4OMEFEeq7PM-WLoFu_w" id="(0.635593220338983,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1Ht4OcEFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_2M28aMEFEeq7PM-WLoFu_w" type="4001" element="_2MtKHsEFEeq7PM-WLoFu_w" source="_Uv6iQJkPEeq7RunjHU3yiA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_2M28bMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2NAroMEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_2NArocEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2NArosEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_2NAro8EFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2NArpMEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_2M28acEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_2M28asEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2M28a8EFEeq7PM-WLoFu_w" points="[0, 0, 35, -359]$[-35, 359, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2NArpcEFEeq7PM-WLoFu_w" id="(0.4925373134328358,0.9483870967741935)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2NArpsEFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_4Xci4MEFEeq7PM-WLoFu_w" type="4001" element="_4XJBZMEFEeq7PM-WLoFu_w" source="_2bRUYFiqEeq_N_dFIDFqhA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_4Xci5MEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Xci5cEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_4Xci5sEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Xci58EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_4Xci6MEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Xci6cEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_4Xci4cEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_4Xci4sEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4Xci48EFEeq7PM-WLoFu_w" points="[0, 0, 85, -519]$[-85, 519, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4Xci6sEFEeq7PM-WLoFu_w" id="(0.49696969696969695,0.978125)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4Xci68EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_5aNCGcEFEeq7PM-WLoFu_w" type="4001" element="_5aDP6sEFEeq7PM-WLoFu_w" source="_GJ4zXXSoEeqHf7kMgRZPUQ" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_5aWKUMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5aWKUcEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_5aWKUsEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5aWKU8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_5aWKVMEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5aWKVcEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_5aNCGsEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_5aNCG8EFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5aNCHMEFEeq7PM-WLoFu_w" points="[0, 0, 215, -370]$[-215, 370, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5aWKVsEFEeq7PM-WLoFu_w" id="(0.5815602836879432,0.8555555555555555)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5aWKV8EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_60pm_cEFEeq7PM-WLoFu_w" type="4001" element="_60gbwMEFEeq7PM-WLoFu_w" source="_B-0jgHSsEeqHf7kMgRZPUQ" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_60pnAcEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_60pnAsEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_60pnA8EFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_60pnBMEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_60pnBcEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_60pnBsEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_60pm_sEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_60pm_8EFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_60pnAMEFEeq7PM-WLoFu_w" points="[0, 0, 385, -426]$[-385, 426, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_60pnB8EFEeq7PM-WLoFu_w" id="(0.5952380952380952,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_60pnCMEFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_70uiEMEFEeq7PM-WLoFu_w" type="4001" element="_70bntsEFEeq7PM-WLoFu_w" source="_E5MQAFe6Eeq_N_dFIDFqhA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_70uiFMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70uiFcEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_70uiFsEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70uiF8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_70uiGMEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70uiGcEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_70uiEcEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_70uiEsEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_70uiE8EFEeq7PM-WLoFu_w" points="[0, 0, 521, -510]$[-521, 510, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_70uiGsEFEeq7PM-WLoFu_w" id="(0.5165876777251185,0.9367588932806324)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_70uiG8EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_8j9moMEFEeq7PM-WLoFu_w" type="4001" element="_8jqsTMEFEeq7PM-WLoFu_w" source="_JL40QFe6Eeq_N_dFIDFqhA" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_8j9mpMEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8j9mpcEFEeq7PM-WLoFu_w" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_8j9mpsEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8j9mp8EFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_8j9mqMEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8j9mqcEFEeq7PM-WLoFu_w" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_8j9mocEFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_8j9mosEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8j9mo8EFEeq7PM-WLoFu_w" points="[0, 0, 765, -500]$[-765, 500, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8j9mqsEFEeq7PM-WLoFu_w" id="(0.46938775510204084,0.9206349206349206)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8j9mq8EFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_9S5wUsEFEeq7PM-WLoFu_w" type="4001" element="_9Sm18sEFEeq7PM-WLoFu_w" source="_hV04ZHSrEeqHf7kMgRZPUQ" target="_QKTmoFe0Eeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_9S5wVsEFEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9S5wV8EFEeq7PM-WLoFu_w" x="-9" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_9S5wWMEFEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9S5wWcEFEeq7PM-WLoFu_w" x="1" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_9S5wWsEFEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9S5wW8EFEeq7PM-WLoFu_w" x="-9" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_9S5wU8EFEeq7PM-WLoFu_w" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_9S5wVMEFEeq7PM-WLoFu_w" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9S5wVcEFEeq7PM-WLoFu_w" points="[-1, 151, 1335, -439]$[-1, 490, 1335, -100]$[-1335, 490, 1, -100]$[-1335, 516, 1, -74]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9S5wXMEFEeq7PM-WLoFu_w" id="(0.5,0.9759036144578314)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9S5wXcEFEeq7PM-WLoFu_w" id="(0.5,0.6851851851851852)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_pTwn0MEyEeq7PM-WLoFu_w" type="4001" element="_pTdF-sEyEeq7PM-WLoFu_w" source="_nq3GrIyMEeqO3KkprL3Vfw" target="_hV04ZHSrEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_pTwn1MEyEeq7PM-WLoFu_w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pTwn1cEyEeq7PM-WLoFu_w" x="-126" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_pTwn1sEyEeq7PM-WLoFu_w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pTwn18EyEeq7PM-WLoFu_w" x="-54" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_pTwn2MEyEeq7PM-WLoFu_w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pTwn2cEyEeq7PM-WLoFu_w" x="30" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_pTwn0cEyEeq7PM-WLoFu_w" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_pTwn0sEyEeq7PM-WLoFu_w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pTwn08EyEeq7PM-WLoFu_w" points="[0, 0, -657, -566]$[0, 271, -657, -295]$[657, 271, 0, -295]$[657, 566, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pTwn2sEyEeq7PM-WLoFu_w" id="(0.625,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pTwn28EyEeq7PM-WLoFu_w" id="(0.42168674698795183,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_n1sHUNJJEeqURrng_SOYKA" type="4001" element="_Xlu5tLuHEeq7PM-WLoFu_w" source="_W61JIFe9Eeq_N_dFIDFqhA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_n1suYNJJEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n1suYdJJEeqURrng_SOYKA" x="62" y="26"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_n1tVcNJJEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n1tVcdJJEeqURrng_SOYKA" x="46" y="-7"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_n1t8gNJJEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n1t8gdJJEeqURrng_SOYKA" x="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_n1sHUdJJEeqURrng_SOYKA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_n1sHUtJJEeqURrng_SOYKA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_n1sHU9JJEeqURrng_SOYKA" points="[26, -67, 166, -440]$[26, 365, 166, -8]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n1wYwNJJEeqURrng_SOYKA" id="(0.33112582781456956,1.4631864309190796)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n1wYwdJJEeqURrng_SOYKA" id="(0.13513513513513514,0.0898876404494382)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_pgDXYNJJEeqURrng_SOYKA" type="4001" element="_thke6ruHEeq7PM-WLoFu_w" source="_W61JIFe9Eeq_N_dFIDFqhA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_pgDXZNJJEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pgDXZdJJEeqURrng_SOYKA" x="-23" y="-32"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_pgD-cNJJEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pgD-cdJJEeqURrng_SOYKA" x="26" y="-7"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_pgD-ctJJEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pgD-c9JJEeqURrng_SOYKA" x="5"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_pgDXYdJJEeqURrng_SOYKA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_pgDXYtJJEeqURrng_SOYKA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pgDXY9JJEeqURrng_SOYKA" points="[-8, 0, 70, -476]$[-8, 432, 70, -44]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pgD-dNJJEeqURrng_SOYKA" id="(0.7814569536423841,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8-XX8NJOEeqURrng_SOYKA" id="(0.637065637065637,0.5)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_qmqaINJJEeqURrng_SOYKA" type="4001" element="_0WxcMLuHEeq7PM-WLoFu_w" source="_W61JIFe9Eeq_N_dFIDFqhA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_qmqaJNJJEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qmqaJdJJEeqURrng_SOYKA" x="121" y="-19"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_qmqaJtJJEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qmqaJ9JJEeqURrng_SOYKA" x="22" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_qmqaKNJJEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qmqaKdJJEeqURrng_SOYKA" x="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_qmqaIdJJEeqURrng_SOYKA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_qmqaItJJEeqURrng_SOYKA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qmqaI9JJEeqURrng_SOYKA" points="[71, -67, -37, -441]$[71, 365, -37, -9]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qmqaKtJJEeqURrng_SOYKA" id="(0.16556291390728478,1.4631864309190796)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qmqaK9JJEeqURrng_SOYKA" id="(0.9961389961389961,0.10112359550561797)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_O8wQINJPEeqURrng_SOYKA" type="4001" element="_O8fxjtJPEeqURrng_SOYKA" source="_vm8q4NJOEeqURrng_SOYKA" target="_pZCYMLuGEeq7PM-WLoFu_w">
+          <children xmi:type="notation:Node" xmi:id="_O8wQJNJPEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O8wQJdJPEeqURrng_SOYKA" x="-3" y="-3"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_O8wQJtJPEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O8wQJ9JPEeqURrng_SOYKA" x="6"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_O8wQKNJPEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O8wQKdJPEeqURrng_SOYKA" x="-12" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_O8wQIdJPEeqURrng_SOYKA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_O8wQItJPEeqURrng_SOYKA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O8wQI9JPEeqURrng_SOYKA" points="[-38, 0, -13, -33]$[-38, 33, -13, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O8wQKtJPEeqURrng_SOYKA" id="(0.6923076923076923,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O8wQK9JPEeqURrng_SOYKA" id="(0.532051282051282,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_cW9LcNJPEeqURrng_SOYKA" type="4001" element="_XQ7GA9JPEeqURrng_SOYKA" source="_XQ-wINJPEeqURrng_SOYKA" target="_MSnDAGdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_cW9LdNJPEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cW9LddJPEeqURrng_SOYKA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_cW9LdtJPEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cW9Ld9JPEeqURrng_SOYKA" x="8"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_cW9LeNJPEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cW9LedJPEeqURrng_SOYKA" x="1"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_cW9LcdJPEeqURrng_SOYKA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_cW9LctJPEeqURrng_SOYKA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cW9Lc9JPEeqURrng_SOYKA" points="[4, 8, -20, -70]$[4, 44, -20, -34]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cW9ygNJPEeqURrng_SOYKA" id="(0.35542168674698793,0.873015873015873)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iu3BUNJSEeqURrng_SOYKA" id="(0.5,0.22818791946308725)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_c2F-gNJPEeqURrng_SOYKA" type="4001" element="_YKM3UNJPEeqURrng_SOYKA" source="_YKP6cNJPEeqURrng_SOYKA" target="_QxW0oHS1EeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_c2F-hNJPEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2F-hdJPEeqURrng_SOYKA" x="-5" y="-7"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_c2F-htJPEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2F-h9JPEeqURrng_SOYKA" x="-4" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_c2F-iNJPEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2F-idJPEeqURrng_SOYKA" x="-23" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_c2F-gdJPEeqURrng_SOYKA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_c2F-gtJPEeqURrng_SOYKA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c2F-g9JPEeqURrng_SOYKA" points="[-19, 49, -16, -78]$[-19, 81, -16, -46]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c2F-itJPEeqURrng_SOYKA" id="(0.5192307692307693,0.234375)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iu0lENJSEeqURrng_SOYKA" id="(0.5,0.3087248322147651)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_jwgy8NJPEeqURrng_SOYKA" type="4001" element="_jwSwhtJPEeqURrng_SOYKA" source="_YKP6cNJPEeqURrng_SOYKA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_jwgy9NJPEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jwgy9dJPEeqURrng_SOYKA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jwgy9tJPEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jwgy99JPEeqURrng_SOYKA" x="1" y="12"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_jwgy-NJPEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jwgy-dJPEeqURrng_SOYKA" x="-1" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_jwgy8dJPEeqURrng_SOYKA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_jwgy8tJPEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwgy89JPEeqURrng_SOYKA" points="[0, 0, -151, 90]$[0, -28, -151, 62]$[156, -28, 5, 62]$[156, -45, 5, 45]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jwgy-tJPEeqURrng_SOYKA" id="(0.5897435897435898,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jwgy-9JPEeqURrng_SOYKA" id="(0.5,0.5)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_kSXi0NJPEeqURrng_SOYKA" type="4001" element="_kSI5htJPEeqURrng_SOYKA" source="_XQ-wINJPEeqURrng_SOYKA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_kSXi1NJPEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kSXi1dJPEeqURrng_SOYKA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_kSXi1tJPEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kSXi19JPEeqURrng_SOYKA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_kSXi2NJPEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kSXi2dJPEeqURrng_SOYKA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_kSXi0dJPEeqURrng_SOYKA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_kSXi0tJPEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kSXi09JPEeqURrng_SOYKA" points="[0, 0, 31, 30]$[-31, -30, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kSXi2tJPEeqURrng_SOYKA" id="(0.572289156626506,0.09523809523809523)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kSXi29JPEeqURrng_SOYKA" id="(0.13513513513513514,0.0898876404494382)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_ksM_INJPEeqURrng_SOYKA" type="4001" element="_kr-V6NJPEeqURrng_SOYKA" source="_vm8q4NJOEeqURrng_SOYKA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_ksM_JNJPEeqURrng_SOYKA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ksM_JdJPEeqURrng_SOYKA" x="4" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ksM_JtJPEeqURrng_SOYKA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ksM_J9JPEeqURrng_SOYKA" x="3" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ksM_KNJPEeqURrng_SOYKA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ksM_KdJPEeqURrng_SOYKA" x="5" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_ksM_IdJPEeqURrng_SOYKA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_ksM_ItJPEeqURrng_SOYKA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ksM_I9JPEeqURrng_SOYKA" points="[0, 0, 367, 123]$[0, -25, 367, 98]$[-268, -25, 99, 98]$[-268, -42, 99, 81]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ksM_KtJPEeqURrng_SOYKA" id="(0.4358974358974359,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ksM_K9JPEeqURrng_SOYKA" id="(0.13513513513513514,0.0898876404494382)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_WiRAMNWVEeqxyISDsRhqww" type="4001" element="_Wh_6gtWVEeqxyISDsRhqww" source="_wOXxcFijEeq_N_dFIDFqhA" target="_8UvjYNWUEeqxyISDsRhqww">
+          <children xmi:type="notation:Node" xmi:id="_WiRnQNWVEeqxyISDsRhqww" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WiRnQdWVEeqxyISDsRhqww" x="28" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_WiRnQtWVEeqxyISDsRhqww" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WiRnQ9WVEeqxyISDsRhqww" x="16" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_WiSOUNWVEeqxyISDsRhqww" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WiSOUdWVEeqxyISDsRhqww" x="-8" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_WiRAMdWVEeqxyISDsRhqww" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_WiRAMtWVEeqxyISDsRhqww" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WiRAM9WVEeqxyISDsRhqww" points="[95, 0, -176, 145]$[95, -137, -176, 8]$[271, -137, 0, 8]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WiTccNWVEeqxyISDsRhqww" id="(0.6767676767676768,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WiTccdWVEeqxyISDsRhqww" id="(0.0,0.10204081632653061)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_hLoyoNWVEeqxyISDsRhqww" type="4001" element="_hLV3yNWVEeqxyISDsRhqww" source="_QKTmoFe0Eeq_N_dFIDFqhA" target="_8UvjYNWUEeqxyISDsRhqww">
+          <children xmi:type="notation:Node" xmi:id="_hLoypNWVEeqxyISDsRhqww" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hLoypdWVEeqxyISDsRhqww" x="-357" y="-55"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_hLoyptWVEeqxyISDsRhqww" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hLoyp9WVEeqxyISDsRhqww" x="63" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_hLoyqNWVEeqxyISDsRhqww" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hLoyqdWVEeqxyISDsRhqww" x="-61" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_hLoyodWVEeqxyISDsRhqww" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_hLoyotWVEeqxyISDsRhqww" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hLoyo9WVEeqxyISDsRhqww" points="[145, 0, -8, 809]$[145, -809, -8, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hLoyqtWVEeqxyISDsRhqww" id="(0.5550755939524838,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hLoyq9WVEeqxyISDsRhqww" id="(0.5021645021645021,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_tPbNsOFTEequR_36GR_fPA" type="4001" element="_tO8skOFTEequR_36GR_fPA" source="_kvvEkOFTEequR_36GR_fPA" target="_rCh4UOFTEequR_36GR_fPA">
+          <children xmi:type="notation:Node" xmi:id="_tPcb0OFTEequR_36GR_fPA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tPcb0eFTEequR_36GR_fPA" x="-2" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_tPdC4OFTEequR_36GR_fPA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tPdC4eFTEequR_36GR_fPA" x="-3" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_tPdp8OFTEequR_36GR_fPA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tPdp8eFTEequR_36GR_fPA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_tPbNseFTEequR_36GR_fPA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_tPbNsuFTEequR_36GR_fPA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tPbNs-FTEequR_36GR_fPA" points="[0, -4, 0, -33]$[0, 29, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tPffIOFTEequR_36GR_fPA" id="(0.588957055214724,1.0634920634920635)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tPffIeFTEequR_36GR_fPA" id="(0.588957055214724,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_uDOCIOFTEequR_36GR_fPA" type="4001" element="_uCzyoOFTEequR_36GR_fPA" source="_kvvEkOFTEequR_36GR_fPA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_uDOCJOFTEequR_36GR_fPA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uDOCJeFTEequR_36GR_fPA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_uDOCJuFTEequR_36GR_fPA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uDOCJ-FTEequR_36GR_fPA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_uDOCKOFTEequR_36GR_fPA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uDOCKeFTEequR_36GR_fPA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_uDOCIeFTEequR_36GR_fPA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_uDOCIuFTEequR_36GR_fPA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uDOCI-FTEequR_36GR_fPA" points="[0, 0, -240, 116]$[240, -116, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uDOCKuFTEequR_36GR_fPA" id="(0.5214723926380368,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uDOCK-FTEequR_36GR_fPA" id="(0.13513513513513514,0.0898876404494382)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_e5pvEOFgEeqtNPSEI5W18w" type="4001" element="_e5PfbOFgEeqtNPSEI5W18w" source="_wOXxcFijEeq_N_dFIDFqhA" target="_tFV9QOFWEequR_36GR_fPA">
+          <children xmi:type="notation:Node" xmi:id="_e5sLUOFgEeqtNPSEI5W18w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e5sLUeFgEeqtNPSEI5W18w" x="-403" y="16"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_e5syYOFgEeqtNPSEI5W18w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e5syYeFgEeqtNPSEI5W18w" x="-46" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_e5tZcOFgEeqtNPSEI5W18w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e5tZceFgEeqtNPSEI5W18w" x="-117" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_e5pvEeFgEeqtNPSEI5W18w" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_e5pvEuFgEeqtNPSEI5W18w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e5pvE-FgEeqtNPSEI5W18w" points="[-98, 0, -1758, 778]$[-98, -823, -1758, -45]$[1789, -823, 129, -45]$[1789, -789, 129, -11]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e5vOoOFgEeqtNPSEI5W18w" id="(0.8257575757575758,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e5v1sOFgEeqtNPSEI5W18w" id="(0.0,0.08333333333333333)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_krYasOHwEeqtNPSEI5W18w" type="4001" element="_krER1uHwEeqtNPSEI5W18w" source="_E5MQAFe6Eeq_N_dFIDFqhA" target="_48k5yqGxEeq7RunjHU3yiA">
+          <children xmi:type="notation:Node" xmi:id="_krYatOHwEeqtNPSEI5W18w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_krYateHwEeqtNPSEI5W18w" x="-155" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_krYatuHwEeqtNPSEI5W18w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_krYat-HwEeqtNPSEI5W18w" x="29" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_krYauOHwEeqtNPSEI5W18w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_krYaueHwEeqtNPSEI5W18w" x="-29" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_krYaseHwEeqtNPSEI5W18w" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_krYasuHwEeqtNPSEI5W18w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_krYas-HwEeqtNPSEI5W18w" points="[-4, 0, -390, 877]$[-4, -366, -390, 511]$[241, -366, -145, 511]$[241, -877, -145, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_krZBwOHwEeqtNPSEI5W18w" id="(0.7725118483412322,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_krZBweHwEeqtNPSEI5W18w" id="(0.9481865284974093,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_lk1LMOHwEeqtNPSEI5W18w" type="4001" element="_lkPVYuHwEeqtNPSEI5W18w" source="_E5MQAFe6Eeq_N_dFIDFqhA" target="_tFV9QOFWEequR_36GR_fPA">
+          <children xmi:type="notation:Node" xmi:id="_lk1LNOHwEeqtNPSEI5W18w" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lk1LNeHwEeqtNPSEI5W18w" x="-28" y="-175"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_lk1LNuHwEeqtNPSEI5W18w" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lk1LN-HwEeqtNPSEI5W18w" x="-32" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_lk1LOOHwEeqtNPSEI5W18w" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lk1LOeHwEeqtNPSEI5W18w" x="-17" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_lk1LMeHwEeqtNPSEI5W18w" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_lk1LMuHwEeqtNPSEI5W18w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lk1LM-HwEeqtNPSEI5W18w" points="[-20, -37, -484, 877]$[-20, -151, -484, 763]$[553, -151, 89, 763]$[553, -914, 89, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lk1LOuHwEeqtNPSEI5W18w" id="(1.0,0.14624505928853754)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lk1LO-HwEeqtNPSEI5W18w" id="(0.21484375,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_4CY2YOIWEeqrmeSkFyyQrA" type="4001" element="_4CJl1uIWEeqrmeSkFyyQrA" source="_tafM8OH9EeqrmeSkFyyQrA" target="_QdMN0OIWEeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_4CY2ZOIWEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CY2ZeIWEeqrmeSkFyyQrA" y="-61"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_4CY2ZuIWEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CY2Z-IWEeqrmeSkFyyQrA" x="5" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_4CY2aOIWEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4CY2aeIWEeqrmeSkFyyQrA" x="-23" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_4CY2YeIWEeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_4CY2YuIWEeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4CY2Y-IWEeqrmeSkFyyQrA" points="[-45, 0, 2, -79]$[-45, 79, 2, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4CY2auIWEeqrmeSkFyyQrA" id="(0.6382978723404256,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4CY2a-IWEeqrmeSkFyyQrA" id="(0.5563636363636364,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_U7vlEOLMEeqrmeSkFyyQrA" type="4001" element="_U7gUwuLMEeqrmeSkFyyQrA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_tafM8OH9EeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_U7vlFOLMEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U7vlFeLMEeqrmeSkFyyQrA" x="-39" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_U7vlFuLMEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U7vlF-LMEeqrmeSkFyyQrA" x="181" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_U7vlGOLMEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U7vlGeLMEeqrmeSkFyyQrA" x="9" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_U7vlEeLMEeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_U7vlEuLMEeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_U7vlE-LMEeqrmeSkFyyQrA" points="[157, -62, 934, 68]$[157, -95, 934, 35]$[-777, -95, 0, 35]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U7wMIOLMEeqrmeSkFyyQrA" id="(0.0,0.6326530612244898)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U7wMIeLMEeqrmeSkFyyQrA" id="(1.0,0.03676470588235294)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_TV0msOOpEeqrmeSkFyyQrA" type="4001" element="_TVlWJuOpEeqrmeSkFyyQrA" source="_wOXxcFijEeq_N_dFIDFqhA" target="_cjg-84yMEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_TV1NwOOpEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TV1NweOpEeqrmeSkFyyQrA" x="114" y="312"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_TV1NwuOpEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TV1Nw-OpEeqrmeSkFyyQrA" x="7" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_TV1NxOOpEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TV1NxeOpEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_TV0mseOpEeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_TV0msuOpEeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TV0ms-OpEeqrmeSkFyyQrA" points="[0, 0, -625, 657]$[0, -722, -625, -65]$[514, -722, -111, -65]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TV1NxuOpEeqrmeSkFyyQrA" id="(0.8762626262626263,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TV1Nx-OpEeqrmeSkFyyQrA" id="(0.2018181818181818,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_phKngOOpEeqrmeSkFyyQrA" type="4001" element="_pg7XYuOpEeqrmeSkFyyQrA" source="_jWu_O4yMEeqO3KkprL3Vfw" target="_mYqXmZECEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_phKnhOOpEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_phKnheOpEeqrmeSkFyyQrA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_phKnhuOpEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_phKnh-OpEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_phKniOOpEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_phKnieOpEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_phKngeOpEeqrmeSkFyyQrA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_phKnguOpEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_phKng-OpEeqrmeSkFyyQrA" points="[0, 0, -60, 190]$[60, -190, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_phKniuOpEeqrmeSkFyyQrA" id="(0.4322033898305085,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_phKni-OpEeqrmeSkFyyQrA" id="(0.5870646766169154,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_qDyMYOOpEeqrmeSkFyyQrA" type="4001" element="_qDht5uOpEeqrmeSkFyyQrA" source="_l2iNYJB7EeqO3KkprL3Vfw" target="_mYqXmZECEeqO3KkprL3Vfw">
+          <children xmi:type="notation:Node" xmi:id="_qDyMZOOpEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qDyMZeOpEeqrmeSkFyyQrA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_qDyMZuOpEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qDyMZ-OpEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_qDyMaOOpEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qDyMaeOpEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_qDyMYeOpEeqrmeSkFyyQrA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_qDyMYuOpEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qDyMY-OpEeqrmeSkFyyQrA" points="[0, 0, 0, 190]$[0, -190, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qDyMauOpEeqrmeSkFyyQrA" id="(0.5677966101694916,0.02)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qDyMa-OpEeqrmeSkFyyQrA" id="(0.5870646766169154,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_dz-oIPEREeqrmeSkFyyQrA" type="4001" element="_dzuwqvEREeqrmeSkFyyQrA" source="_LWm4AFe9Eeq_N_dFIDFqhA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_dz-oJPEREeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dz-oJfEREeqrmeSkFyyQrA" x="87" y="-231"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dz-oJvEREeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dz-oJ_EREeqrmeSkFyyQrA" x="198" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dz-oKPEREeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dz-oKfEREeqrmeSkFyyQrA" x="82" y="23"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_dz-oIfEREeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_dz-oIvEREeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dz-oI_EREeqrmeSkFyyQrA" points="[-30, -172, -248, -508]$[-91, -172, -309, -508]$[-91, 293, -309, -43]$[217, 293, -1, -43]$[217, 336, -1, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dz-oKvEREeqrmeSkFyyQrA" id="(0.19181811087347667,1.659142212189616)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dz-oK_EREeqrmeSkFyyQrA" id="(0.0888030888030888,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_lxSc8PEREeqrmeSkFyyQrA" type="4001" element="_lw2_RPEREeqrmeSkFyyQrA" source="_LWm4AFe9Eeq_N_dFIDFqhA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_lxSc9PEREeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lxSc9fEREeqrmeSkFyyQrA" x="18" y="-206"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_lxSc9vEREeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lxSc9_EREeqrmeSkFyyQrA" x="165" y="11"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_lxSc-PEREeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lxSc-fEREeqrmeSkFyyQrA" x="19" y="67"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_lxSc8fEREeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_lxSc8vEREeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lxSc8_EREeqrmeSkFyyQrA" points="[-78, -162, -250, -490]$[-114, -162, -286, -490]$[-114, 230, -286, -98]$[181, 230, 9, -98]$[181, 328, 9, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lxSc-vEREeqrmeSkFyyQrA" id="(0.490990841038565,1.713318284424379)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lxSc-_EREeqrmeSkFyyQrA" id="(0.09652509652509653,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_8jZ38PETEeqrmeSkFyyQrA" type="4001" element="_8jKAdPETEeqrmeSkFyyQrA" source="_E5MQAFe6Eeq_N_dFIDFqhA" target="_tFV9QOFWEequR_36GR_fPA">
+          <children xmi:type="notation:Node" xmi:id="_8jZ39PETEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8jZ39fETEeqrmeSkFyyQrA" x="-84" y="-358"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_8jZ39vETEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8jZ39_ETEeqrmeSkFyyQrA" x="-111" y="40"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_8jZ3-PETEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8jZ3-fETEeqrmeSkFyyQrA" x="-31" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_8jZ38fETEeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_8jZ38vETEeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8jZ38_ETEeqrmeSkFyyQrA" points="[20, 0, -513, 877]$[20, -88, -513, 789]$[533, -88, 0, 789]$[533, -877, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8jZ3-vETEeqrmeSkFyyQrA" id="(0.8625592417061612,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8jZ3-_ETEeqrmeSkFyyQrA" id="(0.37109375,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_Qt0PcPGbEeqrmeSkFyyQrA" type="4001" element="_ZPIyYuIbEeqrmeSkFyyQrA" source="_QdMN0OIWEeqrmeSkFyyQrA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_Qt0PdPGbEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qt0PdfGbEeqrmeSkFyyQrA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_Qt0PdvGbEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qt0Pd_GbEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_Qt0PePGbEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qt0PefGbEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_Qt0PcfGbEeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_Qt0PcvGbEeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Qt0Pc_GbEeqrmeSkFyyQrA" points="[1, 69, -640, -479]$[1, 548, -640, 0]$[641, 548, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qt02gPGbEeqrmeSkFyyQrA" id="(0.03272727272727273,0.6805555555555556)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qt02gfGbEeqrmeSkFyyQrA" id="(0.0,0.42696629213483145)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_vB6dQPHhEeqrmeSkFyyQrA" type="4001" element="_vBp-_PHhEeqrmeSkFyyQrA" source="_YbXHIPHhEeqrmeSkFyyQrA" target="_H7hG8GdwEeqHf7kMgRZPUQ">
+          <children xmi:type="notation:Node" xmi:id="_vB6dRPHhEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vB6dRfHhEeqrmeSkFyyQrA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_vB6dRvHhEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vB6dR_HhEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_vB6dSPHhEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vB6dSfHhEeqrmeSkFyyQrA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_vB6dQfHhEeqrmeSkFyyQrA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_vB6dQvHhEeqrmeSkFyyQrA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vB6dQ_HhEeqrmeSkFyyQrA" points="[0, 0, -440, 119]$[440, -119, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vB6dSvHhEeqrmeSkFyyQrA" id="(0.5695364238410596,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vB6dS_HhEeqrmeSkFyyQrA" id="(0.13513513513513514,0.0898876404494382)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_ggOgAPHiEeqrmeSkFyyQrA" type="4001" element="_gf-ohPHiEeqrmeSkFyyQrA" source="_YbXHIPHhEeqrmeSkFyyQrA" target="_Yu6VQPHhEeqrmeSkFyyQrA">
+          <children xmi:type="notation:Node" xmi:id="_ggOgBPHiEeqrmeSkFyyQrA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ggOgBfHiEeqrmeSkFyyQrA" x="2" y="-16"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ggOgBvHiEeqrmeSkFyyQrA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ggOgB_HiEeqrmeSkFyyQrA" x="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_ggOgCPHiEeqrmeSkFyyQrA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ggOgCfHiEeqrmeSkFyyQrA" x="-9" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_ggOgAfHiEeqrmeSkFyyQrA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_ggOgAvHiEeqrmeSkFyyQrA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ggOgA_HiEeqrmeSkFyyQrA" points="[-1, 0, 0, -36]$[-1, 36, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ggOgCvHiEeqrmeSkFyyQrA" id="(0.44370860927152317,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ggOgC_HiEeqrmeSkFyyQrA" id="(0.4370860927152318,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_l6bsEIGDEeu4guSGPeRSOA" type="4001" element="_l5_nuoGDEeu4guSGPeRSOA" source="_bWMhMFe9Eeq_N_dFIDFqhA" target="_1Wzp4FiuEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_l6bsFIGDEeu4guSGPeRSOA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l6bsFYGDEeu4guSGPeRSOA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_l6bsFoGDEeu4guSGPeRSOA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l6bsF4GDEeu4guSGPeRSOA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_l6bsGIGDEeu4guSGPeRSOA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l6bsGYGDEeu4guSGPeRSOA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_l6bsEYGDEeu4guSGPeRSOA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_l6bsEoGDEeu4guSGPeRSOA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l6bsE4GDEeu4guSGPeRSOA" points="[-1, 0, -47, -167]$[-1, 144, -47, -23]$[-14, 144, -60, -23]$[-14, 156, -60, -11]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l6bsGoGDEeu4guSGPeRSOA" id="(0.512987012987013,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l6bsG4GDEeu4guSGPeRSOA" id="(0.6622073578595318,0.11224489795918367)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_nF-6JoGDEeu4guSGPeRSOA" type="4001" element="_nFiN0IGDEeu4guSGPeRSOA" source="_W61JIFe9Eeq_N_dFIDFqhA" target="_1Wzp4FiuEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_nF-6KoGDEeu4guSGPeRSOA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nF-6K4GDEeu4guSGPeRSOA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_nF-6LIGDEeu4guSGPeRSOA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nF-6LYGDEeu4guSGPeRSOA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_nF-6LoGDEeu4guSGPeRSOA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nF-6L4GDEeu4guSGPeRSOA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_nF-6J4GDEeu4guSGPeRSOA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_nF-6KIGDEeu4guSGPeRSOA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nF-6KYGDEeu4guSGPeRSOA" points="[0, 0, 45, -157]$[-45, 157, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nF-6MIGDEeu4guSGPeRSOA" id="(0.44370860927152317,0.9041095890410958)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nF-6MYGDEeu4guSGPeRSOA" id="(0.5,0.5)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_njVk8oGDEeu4guSGPeRSOA" type="4001" element="_njCpNoGDEeu4guSGPeRSOA" source="_LWm4AFe9Eeq_N_dFIDFqhA" target="_1Wzp4FiuEeq_N_dFIDFqhA">
+          <children xmi:type="notation:Node" xmi:id="_njVk9oGDEeu4guSGPeRSOA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_njVk94GDEeu4guSGPeRSOA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_njVk-IGDEeu4guSGPeRSOA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_njVk-YGDEeu4guSGPeRSOA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_njVk-oGDEeu4guSGPeRSOA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_njVk-4GDEeu4guSGPeRSOA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_njVk84GDEeu4guSGPeRSOA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_njVk9IGDEeu4guSGPeRSOA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_njVk9YGDEeu4guSGPeRSOA" points="[0, 0, -150, -157]$[150, 157, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_njVk_IGDEeu4guSGPeRSOA" id="(0.5660377358490566,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_njVk_YGDEeu4guSGPeRSOA" id="(0.5,0.5)"/>
+        </edges>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_QITbgFe0Eeq_N_dFIDFqhA" name="EnergyComponent" tooltipText="" outgoingEdges="_hLV3yNWVEeqxyISDsRhqww" incomingEdges="_vRjVtMEFEeq7PM-WLoFu_w _v99IusEFEeq7PM-WLoFu_w _xfaUUsEFEeq7PM-WLoFu_w _yOpZBsEFEeq7PM-WLoFu_w _zWxevMEFEeq7PM-WLoFu_w _1HkuCMEFEeq7PM-WLoFu_w _2MtKHsEFEeq7PM-WLoFu_w _4XJBZMEFEeq7PM-WLoFu_w _5aDP6sEFEeq7PM-WLoFu_w _60gbwMEFEeq7PM-WLoFu_w _70bntsEFEeq7PM-WLoFu_w _8jqsTMEFEeq7PM-WLoFu_w _9Sm18sEFEeq7PM-WLoFu_w" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyComponent"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyComponent"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fAd-ccEDEeq7PM-WLoFu_w" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <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']/@conditionnalStyles.1/@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="_5NpnUFioEeq_N_dFIDFqhA" name="description : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/description"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/description"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_6vB6iFioEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_3EuL8FioEeq_N_dFIDFqhA" name="modelName : EString = model xyz" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/modelName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/modelName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_mtuVUmROEeqhPrUG4-cQcg" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_FP9NwMEDEeq7PM-WLoFu_w" name="revisionYear : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/revisionYear"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/revisionYear"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_fAd-yMEDEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_3EvaEFioEeq_N_dFIDFqhA" name="technicalLifetime : EDouble = 30" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/technicalLifetime"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponent/technicalLifetime"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_3EvaEVioEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_E5DGEFe6Eeq_N_dFIDFqhA" name="ThermalStorage" tooltipText="" outgoingEdges="_70bntsEFEeq7PM-WLoFu_w _krER1uHwEeqtNPSEI5W18w _lkPVYuHwEeqtNPSEI5W18w _8jKAdPETEeqrmeSkFyyQrA" incomingEdges="_lraJwqWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalStorage"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalStorage"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_UowOs_EREeqrmeSkFyyQrA" 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="_vG4vYFe7Eeq_N_dFIDFqhA" name="volume : QuantityDouble = 5 m³" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/volume"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/volume"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_ExMhv8FAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_DzldoJkHEeq7RunjHU3yiA" name="thermalStorageType : ThermalStorageTypes = sensible" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/thermalStorageType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/thermalStorageType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_KAivIZkHEeq7RunjHU3yiA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_n7Z-4I4bEeqO3KkprL3Vfw" name="maxTemp : QuantityDouble = 80 °C" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/maxTemp"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/maxTemp"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_GF_KKMFAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_RE2G8OFWEequR_36GR_fPA" name="tankThickness : QuantityDouble = 10 mm " tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/tankThickness"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/tankThickness"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_cTES4eFWEequR_36GR_fPA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_RX3woOFWEequR_36GR_fPA" name="insulationThickness : QuantityDouble = 100 mm" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/insulationThickness"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/insulationThickness"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_UmKRo-FWEequR_36GR_fPA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_SFp_0PEREeqrmeSkFyyQrA" name="height : QuantityDouble = 2 m" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/height"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalStorage/height"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Uoxc5vEREeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_JLxfgFe6Eeq_N_dFIDFqhA" name="ElectricalStorage" tooltipText="" outgoingEdges="_8jqsTMEFEeq7PM-WLoFu_w" incomingEdges="_mRQCNKWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ElectricalStorage"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ElectricalStorage"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_lttf5YGdEeu4guSGPeRSOA" 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="_jiCJkHSuEeqHf7kMgRZPUQ" name="electricalStorageType : ElectricalStorageTypes = lithiumIon" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/electricalStorageType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/electricalStorageType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_q-iHBI4dEeqO3KkprL3Vfw" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_Eq95UHSvEeqHf7kMgRZPUQ" name="batteryCapacity : QuantityDouble = A*h" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryCapacity"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryCapacity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_eyHF88FAEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_GWu3lXSvEeqHf7kMgRZPUQ" name="batteryVoltage : QuantityDouble = V" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryVoltage"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryVoltage"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_PaxvlMFAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_NQ3_MHSvEeqHf7kMgRZPUQ" name="batteryLifeCycle : EDouble = 7000" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryLifeCycle"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryLifeCycle"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_QhSAIHSvEeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_kxIkgHSvEeqHf7kMgRZPUQ" name="selfDischarge : EDouble = 0.2" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/selfDischarge"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/selfDischarge"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_YhkU9sFAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_3qFW4LUuEeq7PM-WLoFu_w" name="inverterIncluded : EBooleanObject = false" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/inverterIncluded"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/inverterIncluded"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_lH1R58FAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_KEmKYLUvEeq7PM-WLoFu_w" name="batteryEffiency : EDouble = 0.8" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryEffiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/batteryEffiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_N414FrUvEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_WkPmYIGdEeu4guSGPeRSOA" name="energyContent : QuantityDouble = 5 kW*h" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/energyContent"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ElectricalStorage/energyContent"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_lttgRYGdEeu4guSGPeRSOA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_LWh_gFe9Eeq_N_dFIDFqhA" name="CombinedHeatPower" tooltipText="" outgoingEdges="_dzuwqvEREeqrmeSkFyyQrA _lw2_RPEREeqrmeSkFyyQrA _njCpNoGDEeu4guSGPeRSOA" incomingEdges="_bDUJ1qWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//CombinedHeatPower"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//CombinedHeatPower"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Gsy118EcEeq7PM-WLoFu_w" 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="_6wqkAFe9Eeq_N_dFIDFqhA" name="thermalEfficiency : EDouble = 0.4" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//CombinedHeatPower/thermalEfficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//CombinedHeatPower/thermalEfficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_lAERCXSyEeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_7mA3oVe9Eeq_N_dFIDFqhA" name="electricalEfficiency : EDouble = 0.4" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//CombinedHeatPower/electricalEfficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//CombinedHeatPower/electricalEfficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_lju-3XSyEeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_IQZ69llQEeq_N_dFIDFqhA" name="installedElectricalPower : QuantityDouble = kW" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//CombinedHeatPower/installedElectricalPower"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//CombinedHeatPower/installedElectricalPower"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Gsy2K8EcEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_W6vCgFe9Eeq_N_dFIDFqhA" name="HeatPump" tooltipText="" outgoingEdges="_Xlu5tLuHEeq7PM-WLoFu_w _thke6ruHEeq7PM-WLoFu_w _0WxcMLuHEeq7PM-WLoFu_w _nFiN0IGDEeu4guSGPeRSOA" incomingEdges="_ev8zyqWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatPump"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatPump"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_p2pIFxHnEeuZnv6TCI6_zQ" 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="_790To1e9Eeq_N_dFIDFqhA" name="heatSource : HeatSources = air" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HeatPump/heatSource"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HeatPump/heatSource"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_pjW2AXSyEeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_bWFzgFe9Eeq_N_dFIDFqhA" name="Boiler" tooltipText="" outgoingEdges="_l5_nuoGDEeu4guSGPeRSOA" incomingEdges="_b_0OXKWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Boiler"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Boiler"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_29XlaeOSEeqrmeSkFyyQrA" 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="_8N6lJVe9Eeq_N_dFIDFqhA" name="nominalEfficiency : EDouble = 0.98" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Boiler/nominalEfficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Boiler/nominalEfficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_vXh50VfDEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_9-A-IJkWEeq7RunjHU3yiA" name="boilerType : BoilerTypes = condensingBoiler" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Boiler/boilerType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Boiler/boilerType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_BliRsZnLEeq7RunjHU3yiA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l8zTgFe9Eeq_N_dFIDFqhA" name="SolarThermalCollector" tooltipText="" outgoingEdges="_xfaUUsEFEeq7PM-WLoFu_w" incomingEdges="_dY7WaKWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//SolarThermalCollector"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//SolarThermalCollector"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_2v8OPcE0Eeq7PM-WLoFu_w" 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="_8Zaqgle9Eeq_N_dFIDFqhA" name="collectorType : CollectorTypes = flatPlaneCollector" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/collectorType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/collectorType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_AaNsd3TIEeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_oHMqUFfEEeq_N_dFIDFqhA" name="apertureArea : QuantityDouble = m²" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/apertureArea"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/apertureArea"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_2v8OlcE0Eeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_sKvYQFfEEeq_N_dFIDFqhA" name="opticalEfficiency : EDouble = 0.77" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/opticalEfficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/opticalEfficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_vWcfQVfEEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_wC7x31fEEeq_N_dFIDFqhA" name="linearHeatLossCoefficient : EDouble = 3.2" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/linearHeatLossCoefficient"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/linearHeatLossCoefficient"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_wC8Y4FfEEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_yiqjrFfEEeq_N_dFIDFqhA" name="quadraticalHeatLossCoefficient : EDouble = 0.01" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/quadraticalHeatLossCoefficient"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//SolarThermalCollector/quadraticalHeatLossCoefficient"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_yirKsFfEEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_t4I88Fe-Eeq_N_dFIDFqhA" name="HeatSources" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//HeatSources"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//HeatSources"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_t4I88Ve-Eeq_N_dFIDFqhA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_0l6cgFe-Eeq_N_dFIDFqhA" name="air" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//HeatSources/air"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//HeatSources/air"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_0l6cgVe-Eeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_4teHxFe-Eeq_N_dFIDFqhA" name="ground" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//HeatSources/ground"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//HeatSources/ground"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_4teu0Fe-Eeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="__V3_IFe-Eeq_N_dFIDFqhA" name="water" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//HeatSources/water"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//HeatSources/water"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="__V3_IVe-Eeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_dKAkAFfEEeq_N_dFIDFqhA" name="CollectorTypes" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//CollectorTypes"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//CollectorTypes"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dKBLEFfEEeq_N_dFIDFqhA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_fgdeAFfEEeq_N_dFIDFqhA" name="flatPlaneCollector" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//CollectorTypes/flatPlaneCollector"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//CollectorTypes/flatPlaneCollector"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_fgdeAVfEEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_fvzhkFfEEeq_N_dFIDFqhA" name="evacuatedTubeCollector" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//CollectorTypes/evacuatedTubeCollector"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//CollectorTypes/evacuatedTubeCollector"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_fv0IoFfEEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_wK94IFijEeq_N_dFIDFqhA" name="EnergyComponentsCatalog" tooltipText="" outgoingEdges="_hdchZIyMEeqO3KkprL3Vfw _D7T3LKGyEeq7RunjHU3yiA _bDUJ1qWqEeq7RunjHU3yiA _b_0OXKWqEeq7RunjHU3yiA _cyoLYqWqEeq7RunjHU3yiA _dY7WaKWqEeq7RunjHU3yiA _dyHSfqWqEeq7RunjHU3yiA _ePUL5KWqEeq7RunjHU3yiA _ev8zyqWqEeq7RunjHU3yiA _fZhVQKWqEeq7RunjHU3yiA _f0MfFqWqEeq7RunjHU3yiA _gQzicqWqEeq7RunjHU3yiA _gt3SEqWqEeq7RunjHU3yiA _hHWJGKWqEeq7RunjHU3yiA _lraJwqWqEeq7RunjHU3yiA _mRQCNKWqEeq7RunjHU3yiA _muKnuqWqEeq7RunjHU3yiA _T2YToKcLEeqqzsn4YJcnhg _Wh_6gtWVEeqxyISDsRhqww _e5PfbOFgEeqtNPSEI5W18w _U7gUwuLMEeqrmeSkFyyQrA _TVlWJuOpEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyComponentsCatalog"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyComponentsCatalog"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Mr5Nn9QMEeqaw7IhEIApKg" 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="_tnh80Fe4Eeq_N_dFIDFqhA" name="author : EString = HFT_Stuttgart" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCatalog/author"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCatalog/author"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_u1NQ4Ve4Eeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_2bHjYFiqEeq_N_dFIDFqhA" name="Electrolyzer" tooltipText="" outgoingEdges="_4XJBZMEFEeq7PM-WLoFu_w" incomingEdges="_gQzicqWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electrolyzer"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electrolyzer"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_8PEIYcE_Eeq7PM-WLoFu_w" 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="_KLD4wFirEeq_N_dFIDFqhA" name="cellType : cellTypesElectrolyzer = PEM" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/cellType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/cellType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_L2mNglirEeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_NN5XoFirEeq_N_dFIDFqhA" name="cellArea : QuantityDouble = 50 cm²" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/cellArea"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/cellArea"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_stJ6C8E_Eeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_RxnacFirEeq_N_dFIDFqhA" name="numberOfCells : EDouble = 5" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/numberOfCells"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/numberOfCells"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Bw40anV7Eeq_hb4CSpnauw" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_UWUy4FirEeq_N_dFIDFqhA" name="maxOperatingCurrentDensity : QuantityDouble = 3 A/cm²" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/maxOperatingCurrentDensity"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/maxOperatingCurrentDensity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_0OngXcE_Eeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_nqubwFirEeq_N_dFIDFqhA" name="minOperatingCurrentDensity : QuantityDouble = 0.3 A/cm²" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/minOperatingCurrentDensity"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/minOperatingCurrentDensity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_1cGnLsE_Eeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_srb8kFirEeq_N_dFIDFqhA" name="overloadCapacity : QuantityDouble = 120 %" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/overloadCapacity"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/overloadCapacity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_8PEIv8E_Eeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_s4VJEFirEeq_N_dFIDFqhA" name="nominalCellVoltage : QuantityDouble = 1.94 V" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/nominalCellVoltage"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electrolyzer/nominalCellVoltage"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_6bR2j8E_Eeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_1Ws8MFiuEeq_N_dFIDFqhA" name="ThermalEnergyDevice" tooltipText="" outgoingEdges="_vRjVtMEFEeq7PM-WLoFu_w" incomingEdges="_l5_nuoGDEeu4guSGPeRSOA _nFiN0IGDEeu4guSGPeRSOA _njCpNoGDEeu4guSGPeRSOA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalEnergyDevice"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalEnergyDevice"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_GJyVIys4EeuX7NehQjN5PA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <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']/@conditionnalStyles.1/@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="_xfrdoFe5Eeq_N_dFIDFqhA" name="installedThermalPower : QuantityDouble = kW" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalEnergyDevice/installedThermalPower"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalEnergyDevice/installedThermalPower"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_IoxawcEcEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_KtHVcFo2Eeq_N_dFIDFqhA" name="modulationRange : EDouble = 0.5" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalEnergyDevice/modulationRange"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalEnergyDevice/modulationRange"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_N5kDU1o2Eeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_BXwwgCs4EeuX7NehQjN5PA" name="fuel : FuelTypes = naturalGas" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalEnergyDevice/fuel"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ThermalEnergyDevice/fuel"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_GJ0xWys4EeuX7NehQjN5PA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_f32qUFo1Eeq_N_dFIDFqhA" name="ElectricalStorageTypes" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//ElectricalStorageTypes"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//ElectricalStorageTypes"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_f32qUVo1Eeq_N_dFIDFqhA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_8QfT0Fo1Eeq_N_dFIDFqhA" name="lithiumIon" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/lithiumIon"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/lithiumIon"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_8Qf64Fo1Eeq_N_dFIDFqhA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_6up2oHStEeqHf7kMgRZPUQ" name="leadAcid" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/leadAcid"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/leadAcid"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_6up2oXStEeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_9BIPkHStEeqHf7kMgRZPUQ" name="niMH" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/niMH"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/niMH"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_9BIPkXStEeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_CfNo4HSuEeqHf7kMgRZPUQ" name="lithiumPolymer" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/lithiumPolymer"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ElectricalStorageTypes/lithiumPolymer"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_CfNo4XSuEeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_H7TEgGdwEeqHf7kMgRZPUQ" name="Characteristic" tooltipText="" incomingEdges="_Xlu5tLuHEeq7PM-WLoFu_w _thke6ruHEeq7PM-WLoFu_w _0WxcMLuHEeq7PM-WLoFu_w _jwSwhtJPEeqURrng_SOYKA _kSI5htJPEeqURrng_SOYKA _kr-V6NJPEeqURrng_SOYKA _uCzyoOFTEequR_36GR_fPA _ZPIyYuIbEeqrmeSkFyyQrA _dzuwqvEREeqrmeSkFyyQrA _lw2_RPEREeqrmeSkFyyQrA _vBp-_PHhEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Characteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Characteristic"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_lwQr8dJJEeqURrng_SOYKA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <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']/@conditionnalStyles.1/@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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_MScD4GdwEeqHf7kMgRZPUQ" name="LinearFunction" tooltipText="" incomingEdges="_XQ7GA9JPEeqURrng_SOYKA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//LinearFunction"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//LinearFunction"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dXfPMuFUEequR_36GR_fPA" 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="_x-5c5tJSEeqURrng_SOYKA" name="key : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//LinearFunction/key"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//LinearFunction/key"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_QrqsPNJTEeqURrng_SOYKA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_rIw32mdwEeqHf7kMgRZPUQ" name="parameterM : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//LinearFunction/parameterM"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//LinearFunction/parameterM"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_rIxe4GdwEeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_ZvNg8OFUEequR_36GR_fPA" name="parameterC : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//LinearFunction/parameterC"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//LinearFunction/parameterC"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_qoADCeFUEequR_36GR_fPA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_uXh54mdwEeqHf7kMgRZPUQ" name="linearfunction(x EDouble) : EDouble" tooltipText="linearfunction(x) : EDouble">
+        <target xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//LinearFunction/linearfunction"/>
+        <semanticElements xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//LinearFunction/linearfunction"/>
+        <semanticElements xmi:type="ecore:EParameter" href="EnergyComponents.ecore#//LinearFunction/linearfunction/x"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_uXh542dwEeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_GJvBkHSoEeqHf7kMgRZPUQ" name="HydrogenCompressor" tooltipText="" outgoingEdges="_5aDP6sEFEeq7PM-WLoFu_w" incomingEdges="_gt3SEqWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenCompressor"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenCompressor"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_CMiMacFAEeq7PM-WLoFu_w" 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="_LIeMcHSoEeqHf7kMgRZPUQ" name="efficiency : EDouble = 0.68" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/efficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/efficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Og_AsnSoEeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_EkDV0HSrEeqHf7kMgRZPUQ" name="thermodynamicMode : EInt = 0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/thermodynamicMode"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/thermodynamicMode"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_NJTUr3SrEeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Q_xPoHSrEeqHf7kMgRZPUQ" name="maxPressure : QuantityDouble = 50 MPa" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/maxPressure"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/maxPressure"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_A3JuOsFAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_aHJD0HSrEeqHf7kMgRZPUQ" name="maxDeliveryRate : QuantityDouble = 9 kg/h" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/maxDeliveryRate"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenCompressor/maxDeliveryRate"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_CMiMy8FAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_hVruIHSrEeqHf7kMgRZPUQ" name="HydrogenStorage" tooltipText="" outgoingEdges="_9Sm18sEFEeq7PM-WLoFu_w" incomingEdges="_muKnuqWqEeq7RunjHU3yiA _pTdF-sEyEeq7PM-WLoFu_w" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenStorage"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenStorage"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_1o0Xu8FAEeq7PM-WLoFu_w" 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="_j2mywHSrEeqHf7kMgRZPUQ" name="numberOfCylinders : EInt = 1" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenStorage/numberOfCylinders"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenStorage/numberOfCylinders"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_vJ7Jio4dEeqO3KkprL3Vfw" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_k7c68HSrEeqHf7kMgRZPUQ" name="cylinderVolume : QuantityDouble = 1.5 m³" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenStorage/cylinderVolume"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenStorage/cylinderVolume"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_wClvbcFAEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_z2FOsMFAEeq7PM-WLoFu_w" name="nominalPressure : QuantityDouble = 25 MPa" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenStorage/nominalPressure"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HydrogenStorage/nominalPressure"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_1o0YHsFAEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_B-qygHSsEeqHf7kMgRZPUQ" name="FuelCell" tooltipText="" outgoingEdges="_60gbwMEFEeq7PM-WLoFu_w" incomingEdges="_hHWJGKWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FuelCell"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FuelCell"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_B-qygXSsEeqHf7kMgRZPUQ" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_QxQG8HS1EeqHf7kMgRZPUQ" name="ExponentialFunction" tooltipText="" incomingEdges="_YKM3UNJPEeqURrng_SOYKA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ExponentialFunction"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ExponentialFunction"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_iHrn3-FUEequR_36GR_fPA" 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="_biTDENJJEeqURrng_SOYKA" name="key : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ExponentialFunction/key"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ExponentialFunction/key"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_OPzGs9JTEeqURrng_SOYKA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_XZCTQnS1EeqHf7kMgRZPUQ" name="parameterA : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ExponentialFunction/parameterA"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ExponentialFunction/parameterA"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_XZCTQ3S1EeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_g-qKNOFUEequR_36GR_fPA" name="parameterB : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ExponentialFunction/parameterB"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//ExponentialFunction/parameterB"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_g-qKNeFUEequR_36GR_fPA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_JNtAgXS2EeqHf7kMgRZPUQ" name="exponentialfunction(x EDouble) : EDouble" tooltipText="exponentialfunction(x) : EDouble">
+        <target xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//ExponentialFunction/exponentialfunction"/>
+        <semanticElements xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//ExponentialFunction/exponentialfunction"/>
+        <semanticElements xmi:type="ecore:EParameter" href="EnergyComponents.ecore#//ExponentialFunction/exponentialfunction/x"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_JNtAgnS2EeqHf7kMgRZPUQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_cjXM4IyMEeqO3KkprL3Vfw" name="EnergyCarrier" tooltipText="" incomingEdges="_atT3ZpEEEeqO3KkprL3Vfw _bO_BspEEEeqO3KkprL3Vfw _TVlWJuOpEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyCarrier"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyCarrier"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_b8tsofGiEeqrmeSkFyyQrA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <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']/@conditionnalStyles.1/@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="_10E2UJB1EeqO3KkprL3Vfw" name="co2EmissionsFactor : QuantityDouble = t/MW*h" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/co2EmissionsFactor"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/co2EmissionsFactor"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_g451gcEqEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_90Z4MKGzEeq7RunjHU3yiA" name="primaryEnergyFactor : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/primaryEnergyFactor"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/primaryEnergyFactor"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_FAg6F6G0Eeq7RunjHU3yiA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_CYUIQKG0Eeq7RunjHU3yiA" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_WzaZySs4EeuX7NehQjN5PA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_ZZceoPGiEeqrmeSkFyyQrA" name="cost : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/cost"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyCarrier/cost"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_b8wI5fGiEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_hdchZIyMEeqO3KkprL3Vfw" name="[0..*] bioFuels" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_l2Yb0JB7EeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/bioFuels"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/bioFuels"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_hdchZYyMEeqO3KkprL3Vfw" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_hdchZ4yMEeqO3KkprL3Vfw" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_hdchZoyMEeqO3KkprL3Vfw" 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:DNodeList" uid="_jWl0MIyMEeqO3KkprL3Vfw" name="FossilFuel" tooltipText="" outgoingEdges="_pg7XYuOpEeqrmeSkFyyQrA" incomingEdges="_T2YToKcLEeqqzsn4YJcnhg" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FossilFuel"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FossilFuel"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_JZENMOOqEeqrmeSkFyyQrA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <customFeatures>iconPath</customFeatures>
+        <customFeatures>borderLineStyle</customFeatures>
+        <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="_GAPQMOOqEeqrmeSkFyyQrA" name="methaneContent : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//FossilFuel/methaneContent"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//FossilFuel/methaneContent"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_JZGCcuOqEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_nqtUwIyMEeqO3KkprL3Vfw" name="Hydrogen" tooltipText="" outgoingEdges="_4spEbJECEeqO3KkprL3Vfw _pTdF-sEyEeq7PM-WLoFu_w" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Hydrogen"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Hydrogen"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_v5t9L5D_EeqO3KkprL3Vfw" 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="_nFRE0JD_EeqO3KkprL3Vfw" name="chemicalPurity : EDouble = 0.99" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Hydrogen/chemicalPurity"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Hydrogen/chemicalPurity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_v53HA5D_EeqO3KkprL3Vfw" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_qxMkkIyMEeqO3KkprL3Vfw" name="Electricity" tooltipText="" outgoingEdges="_bO_BspEEEeqO3KkprL3Vfw" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electricity"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electricity"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_d4yPNis6EeuX7NehQjN5PA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <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']/@conditionnalStyles.1/@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="_cBIw8Cs6EeuX7NehQjN5PA" name="renewableShare : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electricity/renewableShare"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Electricity/renewableShare"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_d41SYys6EeuX7NehQjN5PA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l2Yb0JB7EeqO3KkprL3Vfw" name="BioFuel" tooltipText="" outgoingEdges="_qDht5uOpEeqrmeSkFyyQrA" incomingEdges="_hdchZIyMEeqO3KkprL3Vfw" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//BioFuel"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//BioFuel"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fKqUo6HDEeq7RunjHU3yiA" 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="_AdctsJEDEeqO3KkprL3Vfw" name="waterContent : EDouble = 0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//BioFuel/waterContent"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//BioFuel/waterContent"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_FzuPTJEDEeqO3KkprL3Vfw" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_hQbbkJEDEeqO3KkprL3Vfw" name="ashContent : EDouble = 0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//BioFuel/ashContent"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//BioFuel/ashContent"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_j78nHZEDEeqO3KkprL3Vfw" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_mYqWIJECEeqO3KkprL3Vfw" name="Fuel" tooltipText="" outgoingEdges="_atT3ZpEEEeqO3KkprL3Vfw" incomingEdges="_4spEbJECEeqO3KkprL3Vfw _pg7XYuOpEeqrmeSkFyyQrA _qDht5uOpEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Fuel"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Fuel"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Db2A9OOqEeqrmeSkFyyQrA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <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']/@conditionnalStyles.1/@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="_iPPb8JD9EeqO3KkprL3Vfw" name="netCalorificValue : QuantityDouble = (kW*h)/m³" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/netCalorificValue"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/netCalorificValue"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_UrIht5D-EeqO3KkprL3Vfw" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_iiUI8JD9EeqO3KkprL3Vfw" name="grossCalorificValue : QuantityDouble = (kW*h)/m³" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/grossCalorificValue"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/grossCalorificValue"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_LbL1p8EyEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_zZblsIyMEeqO3KkprL3Vfw" name="density : QuantityDouble = kg/m³" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/density"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/density"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_QJ-ge8EyEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_B4JZcOOqEeqrmeSkFyyQrA" name="fuelType : FuelTypes = naturalGas" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/fuelType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Fuel/fuelType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_EJhmN-OqEeqrmeSkFyyQrA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_4spEbJECEeqO3KkprL3Vfw" sourceNode="_nqtUwIyMEeqO3KkprL3Vfw" targetNode="_mYqWIJECEeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Hydrogen"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Hydrogen"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_4spEbZECEeqO3KkprL3Vfw" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_4spEbpECEeqO3KkprL3Vfw" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_4spEb5ECEeqO3KkprL3Vfw" showIcon="false"/>
+      </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:DEdge" uid="_atT3ZpEEEeqO3KkprL3Vfw" sourceNode="_mYqWIJECEeqO3KkprL3Vfw" targetNode="_cjXM4IyMEeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Fuel"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Fuel"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Db9VouOqEeqrmeSkFyyQrA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_Db9Vo-OqEeqrmeSkFyyQrA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Db9VpOOqEeqrmeSkFyyQrA" showIcon="false"/>
+      </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:DEdge" uid="_bO_BspEEEeqO3KkprL3Vfw" sourceNode="_qxMkkIyMEeqO3KkprL3Vfw" targetNode="_cjXM4IyMEeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electricity"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electricity"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_d48AZCs6EeuX7NehQjN5PA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_d48AZSs6EeuX7NehQjN5PA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_d48AZis6EeuX7NehQjN5PA" showIcon="false"/>
+      </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="_AV18sJkNEeq7RunjHU3yiA" name="WindTurbine" tooltipText="" outgoingEdges="_yOpZBsEFEeq7PM-WLoFu_w" incomingEdges="_dyHSfqWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//WindTurbine"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//WindTurbine"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_AV2jwJkNEeq7RunjHU3yiA" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YSzFEJkNEeq7RunjHU3yiA" name="PhotovoltaicModule" tooltipText="" outgoingEdges="_v99IusEFEeq7PM-WLoFu_w" incomingEdges="_cyoLYqWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PhotovoltaicModule"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PhotovoltaicModule"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Zfnb0cEcEeq7PM-WLoFu_w" 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="_990qQJmtEeq7RunjHU3yiA" name="cellType : EEnumerator" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/cellType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/cellType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_IOIcdJmuEeq7RunjHU3yiA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_Ijg2kJmuEeq7RunjHU3yiA" name="nominalPower : QuantityDouble = W" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/nominalPower"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/nominalPower"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_PD5rP8EcEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_OEnHoJmuEeq7RunjHU3yiA" name="mppVoltage : QuantityDouble = V" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/mppVoltage"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/mppVoltage"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_QMUE0MEcEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_RT5HEJmuEeq7RunjHU3yiA" name="mppCurrent : QuantityDouble = A" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/mppCurrent"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/mppCurrent"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_WkThNsEcEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_b2jNgJmuEeq7RunjHU3yiA" name="nominalEfficiency : EDouble = 0.18" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/nominalEfficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/nominalEfficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_lTsdbZmuEeq7RunjHU3yiA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_rTNv0JmuEeq7RunjHU3yiA" name="moduleArea : QuantityDouble = m²" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/moduleArea"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PhotovoltaicModule/moduleArea"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_ZfxMtsEcEeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_cHVtsJkNEeq7RunjHU3yiA" name="Inverter" tooltipText="" outgoingEdges="_1HkuCMEFEeq7PM-WLoFu_w" incomingEdges="_fZhVQKWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Inverter"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Inverter"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_cHVtsZkNEeq7RunjHU3yiA" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_UvwKMJkPEeq7RunjHU3yiA" name="HeatExchanger" tooltipText="" outgoingEdges="_2MtKHsEFEeq7PM-WLoFu_w" incomingEdges="_f0MfFqWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatExchanger"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatExchanger"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_A2gOtcE1Eeq7PM-WLoFu_w" 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="_3_JqIKG1Eeq7RunjHU3yiA" name="heatRecoveryEfficiency : EDouble = 0.8" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HeatExchanger/heatRecoveryEfficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HeatExchanger/heatRecoveryEfficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_8LhkBqG1Eeq7RunjHU3yiA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_8kHDEKG1Eeq7RunjHU3yiA" name="nominalElectricityConsumption : QuantityDouble = W" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HeatExchanger/nominalElectricityConsumption"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//HeatExchanger/nominalElectricityConsumption"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_A2p_jsE1Eeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_PvVSYJkREeq7RunjHU3yiA" name="GeothermalHeatExchanger" tooltipText="" outgoingEdges="_zWxevMEFEeq7PM-WLoFu_w" incomingEdges="_ePUL5KWqEeq7RunjHU3yiA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//GeothermalHeatExchanger"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//GeothermalHeatExchanger"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5yjDx8E0Eeq7PM-WLoFu_w" 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="_L5U0sJkSEeq7RunjHU3yiA" name="pipeDiameter : QuantityDouble = 1 cm" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//GeothermalHeatExchanger/pipeDiameter"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//GeothermalHeatExchanger/pipeDiameter"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_5ys0x8E0Eeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aT6KgJm4Eeq7RunjHU3yiA" name="BoilerTypes" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//BoilerTypes"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//BoilerTypes"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aT6KgZm4Eeq7RunjHU3yiA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_btZF8Jm4Eeq7RunjHU3yiA" name="condensingBoiler" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//BoilerTypes/condensingBoiler"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//BoilerTypes/condensingBoiler"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_btZF8Zm4Eeq7RunjHU3yiA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_muAjUCs6EeuX7NehQjN5PA" name="lowtemperatureBoiler" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//BoilerTypes/lowtemperatureBoiler"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//BoilerTypes/lowtemperatureBoiler"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_muAjUSs6EeuX7NehQjN5PA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_nYR7UKGxEeq7RunjHU3yiA" name="ThermalStorageTypes" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//ThermalStorageTypes"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//ThermalStorageTypes"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_nYR7UaGxEeq7RunjHU3yiA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_plEjAKGxEeq7RunjHU3yiA" name="sensible" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ThermalStorageTypes/sensible"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ThermalStorageTypes/sensible"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_plEjAaGxEeq7RunjHU3yiA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_p4LFMKGxEeq7RunjHU3yiA" name="latent" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ThermalStorageTypes/latent"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//ThermalStorageTypes/latent"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_p4LFMaGxEeq7RunjHU3yiA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_48bHgKGxEeq7RunjHU3yiA" name="Medium" tooltipText="" incomingEdges="_D7T3LKGyEeq7RunjHU3yiA _krER1uHwEeqtNPSEI5W18w" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Medium"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Medium"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_3QYzAPGaEeqrmeSkFyyQrA" 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="_GXe_BKGyEeq7RunjHU3yiA" name="density : QuantityDouble = g/cm³" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/density"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/density"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_u9DhRcE0Eeq7PM-WLoFu_w" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_Hgf08KGyEeq7RunjHU3yiA" name="heatCapacity : QuantityDouble = kJ/(kg*K)" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/heatCapacity"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/heatCapacity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_WQPUJsEyEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Jwb3QKGyEeq7RunjHU3yiA" name="evaporationTemperature : QuantityDouble = °C" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/evaporationTemperature"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/evaporationTemperature"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_YviBF8EyEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_6ZcCoKGyEeq7RunjHU3yiA" name="meltingTemperature : QuantityDouble = °C" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/meltingTemperature"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/meltingTemperature"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_ZymADcEyEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_rMdlgOFVEequR_36GR_fPA" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Medium/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_snc81eFVEequR_36GR_fPA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_D7T3LKGyEeq7RunjHU3yiA" name="[0..*] media" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_48bHgKGxEeq7RunjHU3yiA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/media"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/media"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_D7T3LaGyEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_D7T3L6GyEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_D7T3LqGyEeq7RunjHU3yiA" 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="_bDUJ1qWqEeq7RunjHU3yiA" name="[0..*] combinedHeatPowerUtilities" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_LWh_gFe9Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/combinedHeatPowerUtilities"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/combinedHeatPowerUtilities"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_bDUJ16WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_bDUJ2aWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_bDUJ2KWqEeq7RunjHU3yiA" 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="_b_0OXKWqEeq7RunjHU3yiA" name="[0..*] boilers" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_bWFzgFe9Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/boilers"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/boilers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_b_0OXaWqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_b_0OX6WqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_b_0OXqWqEeq7RunjHU3yiA" 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="_cyoLYqWqEeq7RunjHU3yiA" name="[0..*] photovoltaicModules" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_YSzFEJkNEeq7RunjHU3yiA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/photovoltaicModules"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/photovoltaicModules"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_cyoLY6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_cyoLZaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_cyoLZKWqEeq7RunjHU3yiA" 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="_dY7WaKWqEeq7RunjHU3yiA" name="[0..*] solarThermalCollectors" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_l8zTgFe9Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/solarThermalCollectors"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/solarThermalCollectors"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dY7WaaWqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dY7Wa6WqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_dY7WaqWqEeq7RunjHU3yiA" 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="_dyHSfqWqEeq7RunjHU3yiA" name="[0..*] windTurbines" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_AV18sJkNEeq7RunjHU3yiA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/windTurbines"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/windTurbines"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dyHSf6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dyHSgaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_dyHSgKWqEeq7RunjHU3yiA" 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="_ePUL5KWqEeq7RunjHU3yiA" name="[0..*] geothermalHeatExchangers" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_PvVSYJkREeq7RunjHU3yiA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/geothermalHeatExchangers"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/geothermalHeatExchangers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ePUL5aWqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ePUL56WqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ePUL5qWqEeq7RunjHU3yiA" 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="_ev8zyqWqEeq7RunjHU3yiA" name="[0..*] heatPumps" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_W6vCgFe9Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/heatPumps"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/heatPumps"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ev8zy6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ev8zzaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ev8zzKWqEeq7RunjHU3yiA" 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="_fZhVQKWqEeq7RunjHU3yiA" name="[0..*] inverters" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_cHVtsJkNEeq7RunjHU3yiA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/inverters"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/inverters"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fZhVQaWqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fZhVQ6WqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fZhVQqWqEeq7RunjHU3yiA" 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="_f0MfFqWqEeq7RunjHU3yiA" name="[0..*] heatExchangers" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_UvwKMJkPEeq7RunjHU3yiA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/heatExchangers"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/heatExchangers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_f0MfF6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_f0MfGaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_f0MfGKWqEeq7RunjHU3yiA" 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="_gQzicqWqEeq7RunjHU3yiA" name="[0..*] electrolyzers" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_2bHjYFiqEeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/electrolyzers"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/electrolyzers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_gQzic6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_gQzidaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_gQzidKWqEeq7RunjHU3yiA" 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="_gt3SEqWqEeq7RunjHU3yiA" name="[0..*] hydrogenCompressors" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_GJvBkHSoEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/hydrogenCompressors"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/hydrogenCompressors"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_gt3SE6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_gt3SFaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_gt3SFKWqEeq7RunjHU3yiA" 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="_hHWJGKWqEeq7RunjHU3yiA" name="[0..*] fuelCells" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_B-qygHSsEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/fuelCells"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/fuelCells"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_hHWJGaWqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_hHWJG6WqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_hHWJGqWqEeq7RunjHU3yiA" 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="_lraJwqWqEeq7RunjHU3yiA" name="[0..*] thermalStorages" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_E5DGEFe6Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/thermalStorages"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/thermalStorages"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_lraJw6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_lraJxaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_lraJxKWqEeq7RunjHU3yiA" 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="_mRQCNKWqEeq7RunjHU3yiA" name="[0..*] powerStorages" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_JLxfgFe6Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/powerStorages"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/powerStorages"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_mRQCNaWqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_mRQCN6WqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_mRQCNqWqEeq7RunjHU3yiA" 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="_muKnuqWqEeq7RunjHU3yiA" name="[0..*] hydrogenStorages" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_hVruIHSrEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/hydrogenStorages"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/hydrogenStorages"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_muKnu6WqEeq7RunjHU3yiA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_muKnvaWqEeq7RunjHU3yiA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_muKnvKWqEeq7RunjHU3yiA" 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="_T2YToKcLEeqqzsn4YJcnhg" name="[0..*] fossilFuels" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_jWl0MIyMEeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/fossilFuels"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/fossilFuels"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_T2Y6gKcLEeqqzsn4YJcnhg" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_T2Y6gqcLEeqqzsn4YJcnhg" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_T2Y6gacLEeqqzsn4YJcnhg" 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:DNodeList" uid="_pYlsQLuGEeq7PM-WLoFu_w" name="TableFunction" tooltipText="" outgoingEdges="_KQfWhLuHEeq7PM-WLoFu_w" incomingEdges="_O8fxjtJPEeqURrng_SOYKA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//TableFunction"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//TableFunction"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_pYlsQbuGEeq7PM-WLoFu_w" 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="_xkZ5R9JSEeqURrng_SOYKA" name="key : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//TableFunction/key"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//TableFunction/key"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_OswId9JTEeqURrng_SOYKA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_CdmB0LuHEeq7PM-WLoFu_w" name="DataPoint" tooltipText="" incomingEdges="_KQfWhLuHEeq7PM-WLoFu_w" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//DataPoint"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//DataPoint"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_JQtUsbuHEeq7PM-WLoFu_w" 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="_Fj7goLuHEeq7PM-WLoFu_w" name="x : Double = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//DataPoint/x"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//DataPoint/x"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Ilf027uHEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_F0K8ELuHEeq7PM-WLoFu_w" name="y : Double = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//DataPoint/y"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//DataPoint/y"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_JQ3Fr7uHEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_KQfWhLuHEeq7PM-WLoFu_w" name="[2..*] datapoints" sourceNode="_pYlsQLuGEeq7PM-WLoFu_w" targetNode="_CdmB0LuHEeq7PM-WLoFu_w">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//TableFunction/datapoints"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//TableFunction/datapoints"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_c0CMMNJTEeqURrng_SOYKA" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_c0CMMtJTEeqURrng_SOYKA" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_c0CMMdJTEeqURrng_SOYKA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </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="_Xlu5tLuHEeq7PM-WLoFu_w" name="[0..1] powerInput" sourceNode="_W6vCgFe9Eeq_N_dFIDFqhA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//HeatPump/powerInput"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//HeatPump/powerInput"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Xlu5tbuHEeq7PM-WLoFu_w" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Xlu5t7uHEeq7PM-WLoFu_w" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_Xlu5truHEeq7PM-WLoFu_w" 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="_thke6ruHEeq7PM-WLoFu_w" name="[0..1] heatOutput" sourceNode="_W6vCgFe9Eeq_N_dFIDFqhA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//HeatPump/heatOutput"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//HeatPump/heatOutput"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_thke67uHEeq7PM-WLoFu_w" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_thke7buHEeq7PM-WLoFu_w" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_thke7LuHEeq7PM-WLoFu_w" 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="_0WxcMLuHEeq7PM-WLoFu_w" name="[1..1] coefficientOfPerformance" sourceNode="_W6vCgFe9Eeq_N_dFIDFqhA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//HeatPump/coefficientOfPerformance"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//HeatPump/coefficientOfPerformance"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_AMV8WruIEeq7PM-WLoFu_w" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_AMV8XLuIEeq7PM-WLoFu_w" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_AMV8W7uIEeq7PM-WLoFu_w" 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:DNodeList" uid="_ORk1sMD3Eeq7PM-WLoFu_w" name="QuantityDouble" tooltipText="" width="14" height="5">
+      <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
+      <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ORk1scD3Eeq7PM-WLoFu_w" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="255,250,191">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_ORunbMD3Eeq7PM-WLoFu_w" name="de.hftstuttgart.units.NullableQuantity" tooltipText="">
+        <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
+        <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityDouble"/>
+        <decorations xmi:type="viewpoint:Decoration" uid="_ORunbsD3Eeq7PM-WLoFu_w">
+          <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
+        </decorations>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_ORunbcD3Eeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_bht2EMD3Eeq7PM-WLoFu_w" name="QuantityLong" tooltipText="" width="14" height="5">
+      <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
+      <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_bht2EcD3Eeq7PM-WLoFu_w" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="255,250,191">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_biBYbsD3Eeq7PM-WLoFu_w" name="de.hftstuttgart.units.NullableQuantity" tooltipText="">
+        <target xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
+        <semanticElements xmi:type="ecore:EDataType" href="EnergyComponents.ecore#//QuantityLong"/>
+        <decorations xmi:type="viewpoint:Decoration" uid="_biBYcMD3Eeq7PM-WLoFu_w">
+          <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
+        </decorations>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_biBYb8D3Eeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vRjVtMEFEeq7PM-WLoFu_w" sourceNode="_1Ws8MFiuEeq_N_dFIDFqhA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalEnergyDevice"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalEnergyDevice"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_GJ-ieis4EeuX7NehQjN5PA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_GJ-ieys4EeuX7NehQjN5PA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_GJ-ifCs4EeuX7NehQjN5PA" showIcon="false"/>
+      </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:DEdge" uid="_v99IusEFEeq7PM-WLoFu_w" sourceNode="_YSzFEJkNEeq7RunjHU3yiA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PhotovoltaicModule"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PhotovoltaicModule"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ZfxOCcEcEeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_ZfxOCsEcEeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ZfxOC8EcEeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_xfaUUsEFEeq7PM-WLoFu_w" sourceNode="_l8zTgFe9Eeq_N_dFIDFqhA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//SolarThermalCollector"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//SolarThermalCollector"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_2wGAEME0Eeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_2wGAEcE0Eeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_2wGAEsE0Eeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_yOpZBsEFEeq7PM-WLoFu_w" sourceNode="_AV18sJkNEeq7RunjHU3yiA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//WindTurbine"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//WindTurbine"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yOpZB8EFEeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_yOpZCMEFEeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yOpZCcEFEeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_zWxevMEFEeq7PM-WLoFu_w" sourceNode="_PvVSYJkREeq7RunjHU3yiA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//GeothermalHeatExchanger"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//GeothermalHeatExchanger"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_5ys2L8E0Eeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_5ys2MME0Eeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_5ys2McE0Eeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_1HkuCMEFEeq7PM-WLoFu_w" sourceNode="_cHVtsJkNEeq7RunjHU3yiA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Inverter"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Inverter"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_1HkuCcEFEeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_1HkuCsEFEeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_1HkuC8EFEeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_2MtKHsEFEeq7PM-WLoFu_w" sourceNode="_UvwKMJkPEeq7RunjHU3yiA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatExchanger"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatExchanger"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_A2qA8cE1Eeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_A2qA8sE1Eeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_A2qA88E1Eeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_4XJBZMEFEeq7PM-WLoFu_w" sourceNode="_2bHjYFiqEeq_N_dFIDFqhA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electrolyzer"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Electrolyzer"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_8PN6FsE_Eeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_8PN6F8E_Eeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_8PN6GME_Eeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_5aDP6sEFEeq7PM-WLoFu_w" sourceNode="_GJvBkHSoEeqHf7kMgRZPUQ" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenCompressor"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenCompressor"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_CMiN-MFAEeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_CMiN-cFAEeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_CMiN-sFAEeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_60gbwMEFEeq7PM-WLoFu_w" sourceNode="_B-qygHSsEeqHf7kMgRZPUQ" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FuelCell"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FuelCell"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_60gbwcEFEeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_60gbwsEFEeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_60gbw8EFEeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_70bntsEFEeq7PM-WLoFu_w" sourceNode="_E5DGEFe6Eeq_N_dFIDFqhA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalStorage"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ThermalStorage"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Uo5_sPEREeqrmeSkFyyQrA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_Uo5_sfEREeqrmeSkFyyQrA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Uo5_svEREeqrmeSkFyyQrA" showIcon="false"/>
+      </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:DEdge" uid="_8jqsTMEFEeq7PM-WLoFu_w" sourceNode="_JLxfgFe6Eeq_N_dFIDFqhA" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ElectricalStorage"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ElectricalStorage"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_luAbyYGdEeu4guSGPeRSOA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_luAbyoGdEeu4guSGPeRSOA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_luAby4GdEeu4guSGPeRSOA" showIcon="false"/>
+      </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:DEdge" uid="_9Sm18sEFEeq7PM-WLoFu_w" sourceNode="_hVruIHSrEeqHf7kMgRZPUQ" targetNode="_QITbgFe0Eeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenStorage"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HydrogenStorage"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_1o0ZT8FAEeq7PM-WLoFu_w" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_1o0ZUMFAEeq7PM-WLoFu_w" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_1o0ZUcFAEeq7PM-WLoFu_w" showIcon="false"/>
+      </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:DEdge" uid="_pTdF-sEyEeq7PM-WLoFu_w" name="[0..1] hydrogenForHydrogenStorage" sourceNode="_nqtUwIyMEeqO3KkprL3Vfw" targetNode="_hVruIHSrEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//Hydrogen/hydrogenForHydrogenStorage"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//Hydrogen/hydrogenForHydrogenStorage"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_pTdF-8EyEeq7PM-WLoFu_w" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_pTdF_cEyEeq7PM-WLoFu_w" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_pTdF_MEyEeq7PM-WLoFu_w" 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:DNodeList" uid="_F6aW0MFBEeq7PM-WLoFu_w" name="cellTypesElectrolyzer" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//cellTypesElectrolyzer"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//cellTypesElectrolyzer"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F6aW0cFBEeq7PM-WLoFu_w" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_SOPf8MFBEeq7PM-WLoFu_w" name="PEM" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//cellTypesElectrolyzer/PEM"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//cellTypesElectrolyzer/PEM"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_SOPf8cFBEeq7PM-WLoFu_w" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_vmn6wNJOEeqURrng_SOYKA" name="TableCharacteristic" tooltipText="" outgoingEdges="_O8fxjtJPEeqURrng_SOYKA _kr-V6NJPEeqURrng_SOYKA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//TableCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//TableCharacteristic"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_J8mJGdJPEeqURrng_SOYKA" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_O8fxjtJPEeqURrng_SOYKA" name="[1..*] functions" sourceNode="_vmn6wNJOEeqURrng_SOYKA" targetNode="_pYlsQLuGEeq7PM-WLoFu_w">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//TableCharacteristic/functions"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//TableCharacteristic/functions"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_hnUcrtJQEeqURrng_SOYKA" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_hnUcsNJQEeqURrng_SOYKA" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_hnUcr9JQEeqURrng_SOYKA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_XQxUwNJPEeqURrng_SOYKA" name="LinearCharacteristic" tooltipText="" outgoingEdges="_XQ7GA9JPEeqURrng_SOYKA _kSI5htJPEeqURrng_SOYKA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//LinearCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//LinearCharacteristic"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_XQx70NJPEeqURrng_SOYKA" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XQ7GA9JPEeqURrng_SOYKA" name="[1..*] functions" sourceNode="_XQxUwNJPEeqURrng_SOYKA" targetNode="_MScD4GdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//LinearCharacteristic/functions"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//LinearCharacteristic/functions"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_e-eLANJQEeqURrng_SOYKA" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_e-eLAtJQEeqURrng_SOYKA" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_e-eLAdJQEeqURrng_SOYKA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YKDGINJPEeqURrng_SOYKA" name="ExponentionalCharacteristic" tooltipText="" outgoingEdges="_YKM3UNJPEeqURrng_SOYKA _jwSwhtJPEeqURrng_SOYKA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ExponentionalCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ExponentionalCharacteristic"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_YKDtMNJPEeqURrng_SOYKA" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_YKM3UNJPEeqURrng_SOYKA" name="[1..*] functions" sourceNode="_YKDGINJPEeqURrng_SOYKA" targetNode="_QxQG8HS1EeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ExponentionalCharacteristic/functions"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ExponentionalCharacteristic/functions"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dbqUatJQEeqURrng_SOYKA" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dbqUbNJQEeqURrng_SOYKA" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_dbqUa9JQEeqURrng_SOYKA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </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="_jwSwhtJPEeqURrng_SOYKA" sourceNode="_YKDGINJPEeqURrng_SOYKA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ExponentionalCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//ExponentionalCharacteristic"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jwSwh9JPEeqURrng_SOYKA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_jwSwiNJPEeqURrng_SOYKA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jwSwidJPEeqURrng_SOYKA" showIcon="false"/>
+      </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:DEdge" uid="_kSI5htJPEeqURrng_SOYKA" sourceNode="_XQxUwNJPEeqURrng_SOYKA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//LinearCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//LinearCharacteristic"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_kSJgYNJPEeqURrng_SOYKA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_kSJgYdJPEeqURrng_SOYKA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_kSJgYtJPEeqURrng_SOYKA" showIcon="false"/>
+      </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:DEdge" uid="_kr-V6NJPEeqURrng_SOYKA" sourceNode="_vmn6wNJOEeqURrng_SOYKA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//TableCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//TableCharacteristic"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_kr-V6dJPEeqURrng_SOYKA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_kr-V6tJPEeqURrng_SOYKA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_kr-V69JPEeqURrng_SOYKA" showIcon="false"/>
+      </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="_8T_8gNWUEeqxyISDsRhqww" name="Manufacturer" tooltipText="" incomingEdges="_Wh_6gtWVEeqxyISDsRhqww _hLV3yNWVEeqxyISDsRhqww" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Manufacturer"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Manufacturer"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_UsDsn9WVEeqxyISDsRhqww" 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="_9_vsoNWUEeqxyISDsRhqww" name="manufacturerName : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Manufacturer/manufacturerName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Manufacturer/manufacturerName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_IVcVJNWVEeqxyISDsRhqww" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_K9CpgNWVEeqxyISDsRhqww" name="country : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Manufacturer/country"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Manufacturer/country"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_NzaZtdWVEeqxyISDsRhqww" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_PVCkgNWVEeqxyISDsRhqww" name="outOfBusinessSince : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Manufacturer/outOfBusinessSince"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Manufacturer/outOfBusinessSince"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_UsGv29WVEeqxyISDsRhqww" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Wh_6gtWVEeqxyISDsRhqww" name="[0..*] manufacturers" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_8T_8gNWUEeqxyISDsRhqww">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/manufacturers"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/manufacturers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Wh_6g9WVEeqxyISDsRhqww" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Wh_6hdWVEeqxyISDsRhqww" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_Wh_6hNWVEeqxyISDsRhqww" 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="_hLV3yNWVEeqxyISDsRhqww" name="[1..1] manufacturer" sourceNode="_QITbgFe0Eeq_N_dFIDFqhA" targetNode="_8T_8gNWUEeqxyISDsRhqww">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponent/manufacturer"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponent/manufacturer"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_kmvnk9WVEeqxyISDsRhqww" description="_kmvnkNWVEeqxyISDsRhqww" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_kmvnldWVEeqxyISDsRhqww" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_kmvnlNWVEeqxyISDsRhqww" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_kvE9QOFTEequR_36GR_fPA" name="PolynomialCharacteristic" tooltipText="" outgoingEdges="_tO8skOFTEequR_36GR_fPA _uCzyoOFTEequR_36GR_fPA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PolynomialCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PolynomialCharacteristic"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_kvFkUOFTEequR_36GR_fPA" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rCFzcOFTEequR_36GR_fPA" name="PolynomialFunction" tooltipText="" incomingEdges="_tO8skOFTEequR_36GR_fPA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PolynomialFunction"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PolynomialFunction"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_51Bm9eFUEequR_36GR_fPA" 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="_E3aLoOFUEequR_36GR_fPA" name="key : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/key"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/key"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_dqcyAeFVEequR_36GR_fPA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_GcJU0-FUEequR_36GR_fPA" name="parameterA : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/parameterA"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/parameterA"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_GcJU1OFUEequR_36GR_fPA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_XvMJhHS1EeqHf7kMgRZPUQ" name="parameterB : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/parameterB"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/parameterB"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_XvMwgHS1EeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_rIxe4WdwEeqHf7kMgRZPUQ" name="parameterC : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/parameterC"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PolynomialFunction/parameterC"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_rIxe4mdwEeqHf7kMgRZPUQ" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_j9IGcOFUEequR_36GR_fPA" name="polynomialfunction(x EDouble) : EDouble" tooltipText="polynomialfunction(x) : EDouble">
+        <target xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//PolynomialFunction/polynomialfunction"/>
+        <semanticElements xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//PolynomialFunction/polynomialfunction"/>
+        <semanticElements xmi:type="ecore:EParameter" href="EnergyComponents.ecore#//PolynomialFunction/polynomialfunction/x"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_j9IGceFUEequR_36GR_fPA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_tO8skOFTEequR_36GR_fPA" name="[1..*] functions" sourceNode="_kvE9QOFTEequR_36GR_fPA" targetNode="_rCFzcOFTEequR_36GR_fPA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//PolynomialCharacteristic/functions"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//PolynomialCharacteristic/functions"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_1yv5puFTEequR_36GR_fPA" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_1yv5qOFTEequR_36GR_fPA" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_1yv5p-FTEequR_36GR_fPA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </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="_uCzyoOFTEequR_36GR_fPA" sourceNode="_kvE9QOFTEequR_36GR_fPA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PolynomialCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PolynomialCharacteristic"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_uC0ZgOFTEequR_36GR_fPA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_uC0ZgeFTEequR_36GR_fPA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_uC0ZguFTEequR_36GR_fPA" showIcon="false"/>
+      </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="_tFH60OFWEequR_36GR_fPA" name="Material" tooltipText="" incomingEdges="_e5PfbOFgEeqtNPSEI5W18w _lkPVYuHwEeqtNPSEI5W18w _8jKAdPETEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Material"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Material"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aG-lafHqEeqrmeSkFyyQrA" 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="_x6bc4OFWEequR_36GR_fPA" name="thermalConductivity : QuantityDouble =  W/(m*K)" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Material/thermalConductivity"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Material/thermalConductivity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_0sYnKeFWEequR_36GR_fPA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Y2cxkPHqEeqrmeSkFyyQrA" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Material/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Material/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_bYeCZfHqEeqrmeSkFyyQrA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_e5PfbOFgEeqtNPSEI5W18w" name="[0..*] materials" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_tFH60OFWEequR_36GR_fPA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/materials"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/materials"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_e5QGcOFgEeqtNPSEI5W18w" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_e5QGcuFgEeqtNPSEI5W18w" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_e5QGceFgEeqtNPSEI5W18w" 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="_krER1uHwEeqtNPSEI5W18w" name="[1..1] usesMedium" sourceNode="_E5DGEFe6Eeq_N_dFIDFqhA" targetNode="_48bHgKGxEeq7RunjHU3yiA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ThermalStorage/usesMedium"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ThermalStorage/usesMedium"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_zQlJhuHwEeqtNPSEI5W18w" description="_kmvnkNWVEeqxyISDsRhqww" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_zQlJiOHwEeqtNPSEI5W18w" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_zQlJh-HwEeqtNPSEI5W18w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </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="_lkPVYuHwEeqtNPSEI5W18w" name="[0..1] insulationMaterial" sourceNode="_E5DGEFe6Eeq_N_dFIDFqhA" targetNode="_tFH60OFWEequR_36GR_fPA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ThermalStorage/insulationMaterial"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ThermalStorage/insulationMaterial"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jzco9is1EeuX7NehQjN5PA" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jzco-Cs1EeuX7NehQjN5PA" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jzco9ys1EeuX7NehQjN5PA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_tZcEEOH9EeqrmeSkFyyQrA" name="EnergyComponentsCostCatalog" tooltipText="" outgoingEdges="_4CJl1uIWEeqrmeSkFyyQrA" incomingEdges="_U7gUwuLMEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_BkjvX-IiEeqrmeSkFyyQrA" 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="__wOooOISEeqrmeSkFyyQrA" name="author : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/author"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/author"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_BXfhYuITEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_ABleYOITEeqrmeSkFyyQrA" name="revisionYear : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/revisionYear"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/revisionYear"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_GGfAE-ITEeqrmeSkFyyQrA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="__lArkOIcEeqrmeSkFyyQrA" name="personnelCost : EDouble = 150 " tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/personnelCost"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/personnelCost"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_BkmyieIiEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Qc-LYOIWEeqrmeSkFyyQrA" name="Cost" tooltipText="" outgoingEdges="_ZPIyYuIbEeqrmeSkFyyQrA" incomingEdges="_4CJl1uIWEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Cost"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Cost"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_kuipN-OtEeqrmeSkFyyQrA" 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="_sYSfYOIZEeqrmeSkFyyQrA" name="componentName : String" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/componentName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/componentName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_0uPWYeIcEeqrmeSkFyyQrA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_vNH3IOIcEeqrmeSkFyyQrA" name="description : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/description"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/description"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_zlSxSuIcEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_1TUR8OIfEeqrmeSkFyyQrA" name="heatSource : TypeOfHeatSource = naturalGas" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/heatSource"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/heatSource"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_kulskeOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_NpEU0OIgEeqrmeSkFyyQrA" name="datasource : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/datasource"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/datasource"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_PSAolOIgEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_3QQN0OIhEeqrmeSkFyyQrA" name="otherInvestmentCost : EDouble = 0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/otherInvestmentCost"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/otherInvestmentCost"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_iEHf6uIkEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Bc3lEOIdEeqrmeSkFyyQrA" name="personnelHours : QuantityDouble = 10 h" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/personnelHours"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/personnelHours"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_DyQIEuIdEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_uOCmcOIhEeqrmeSkFyyQrA" name="personnelCostShare : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/personnelCostShare"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/personnelCostShare"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_xT4WAeIhEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_2w38cOIcEeqrmeSkFyyQrA" name="administrationAndOtherCostShare : EDouble = 0.015" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/administrationAndOtherCostShare"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/administrationAndOtherCostShare"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_8cdmT-IcEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_00BOMOIcEeqrmeSkFyyQrA" name="maintenanceCostShare : EDouble = 0.015" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/maintenanceCostShare"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//Cost/maintenanceCostShare"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_2hHCMuIcEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_4CJl1uIWEeqrmeSkFyyQrA" name="[0..*] costCategories" sourceNode="_tZcEEOH9EeqrmeSkFyyQrA" targetNode="_Qc-LYOIWEeqrmeSkFyyQrA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/costCategories"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCostCatalog/costCategories"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_4CJl1-IWEeqrmeSkFyyQrA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_4CJl2eIWEeqrmeSkFyyQrA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_4CJl2OIWEeqrmeSkFyyQrA" 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="_ZPIyYuIbEeqrmeSkFyyQrA" name="[1..1] investmentCost" sourceNode="_Qc-LYOIWEeqrmeSkFyyQrA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//Cost/investmentCost"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//Cost/investmentCost"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_FDbC4eIiEeqrmeSkFyyQrA" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_FDbC4-IiEeqrmeSkFyyQrA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_FDbC4uIiEeqrmeSkFyyQrA" 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="_U7gUwuLMEeqrmeSkFyyQrA" name="[0..1] energycomponentscostcatalog" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_tZcEEOH9EeqrmeSkFyyQrA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/energycomponentscostcatalog"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/energycomponentscostcatalog"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_U7g7kOLMEeqrmeSkFyyQrA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_U7g7kuLMEeqrmeSkFyyQrA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_U7g7keLMEeqrmeSkFyyQrA" 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:DNodeList" uid="_sQt1cOOSEeqrmeSkFyyQrA" name="FuelTypes" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//FuelTypes"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//FuelTypes"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_sQt1ceOSEeqrmeSkFyyQrA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_6iAw0OOSEeqrmeSkFyyQrA" name="naturalGas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/naturalGas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/naturalGas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_6iAw0eOSEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_7n3loeOSEeqrmeSkFyyQrA" name="oil" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/oil"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/oil"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_7n3louOSEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_8ik6euOSEeqrmeSkFyyQrA" name="diesel" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/diesel"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/diesel"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_8ik6e-OSEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_9OIY2-OSEeqrmeSkFyyQrA" name="bioGas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/bioGas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/bioGas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_9OIY3OOSEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_9x0UveOSEeqrmeSkFyyQrA" name="syntheticGas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/syntheticGas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/syntheticGas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_9x0UvuOSEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_R5P9EuOTEeqrmeSkFyyQrA" name="woodPellets" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/woodPellets"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/woodPellets"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_R5P9E-OTEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_SZN2ruOTEeqrmeSkFyyQrA" name="woodChips" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/woodChips"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/woodChips"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_SZN2r-OTEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_S326cuOTEeqrmeSkFyyQrA" name="sewageGas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/sewageGas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/sewageGas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_S326c-OTEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Ysl3ACs6EeuX7NehQjN5PA" name="electricity" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/electricity"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//FuelTypes/electricity"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Ysl3ASs6EeuX7NehQjN5PA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_TVlWJuOpEeqrmeSkFyyQrA" name="[0..*] energycarriers" sourceNode="_wK94IFijEeq_N_dFIDFqhA" targetNode="_cjXM4IyMEeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/energycarriers"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//EnergyComponentsCatalog/energycarriers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_TVlWJ-OpEeqrmeSkFyyQrA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_TVlWKeOpEeqrmeSkFyyQrA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_TVlWKOOpEeqrmeSkFyyQrA" 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="_pg7XYuOpEeqrmeSkFyyQrA" sourceNode="_jWl0MIyMEeqO3KkprL3Vfw" targetNode="_mYqWIJECEeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FossilFuel"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//FossilFuel"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_JZMJDOOqEeqrmeSkFyyQrA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_JZMJDeOqEeqrmeSkFyyQrA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_JZMJDuOqEeqrmeSkFyyQrA" showIcon="false"/>
+      </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:DEdge" uid="_qDht5uOpEeqrmeSkFyyQrA" sourceNode="_l2Yb0JB7EeqO3KkprL3Vfw" targetNode="_mYqWIJECEeqO3KkprL3Vfw">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//BioFuel"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//BioFuel"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_qDht5-OpEeqrmeSkFyyQrA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_qDht6OOpEeqrmeSkFyyQrA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_qDht6eOpEeqrmeSkFyyQrA" showIcon="false"/>
+      </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="_Mo6F8OOtEeqrmeSkFyyQrA" name="TypeOfHeatSource" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//TypeOfHeatSource"/>
+      <semanticElements xmi:type="ecore:EEnum" href="EnergyComponents.ecore#//TypeOfHeatSource"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Mo6tAOOtEeqrmeSkFyyQrA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <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%20EEnum']/@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%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_O7xgcOOtEeqrmeSkFyyQrA" name="naturalGas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/naturalGas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/naturalGas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_O7xgceOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_PLleEOOtEeqrmeSkFyyQrA" name="biogas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/biogas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/biogas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_PLmFIOOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_PcN7EOOtEeqrmeSkFyyQrA" name="oil" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/oil"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/oil"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_PcN7EeOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_TQQNYOOtEeqrmeSkFyyQrA" name="diesel" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/diesel"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/diesel"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_TQQNYeOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_TkA24OOtEeqrmeSkFyyQrA" name="syntheticGas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/syntheticGas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/syntheticGas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_TkA24eOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Ty61kOOtEeqrmeSkFyyQrA" name="woodPellets" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/woodPellets"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/woodPellets"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Ty7coOOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_XCAAsOOtEeqrmeSkFyyQrA" name="woodChips" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/woodChips"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/woodChips"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_XCAAseOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_XR1McOOtEeqrmeSkFyyQrA" name="sewageGas" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/sewageGas"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/sewageGas"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_XR1MceOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_XigswOOtEeqrmeSkFyyQrA" name="LNG" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/LNG"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/LNG"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_XihT0OOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_aegj0OOtEeqrmeSkFyyQrA" name="CNG" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/CNG"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/CNG"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_aegj0eOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_bBswcOOtEeqrmeSkFyyQrA" name="water" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/water"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/water"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_bBswceOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_bSPt4OOtEeqrmeSkFyyQrA" name="air" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/air"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/air"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_bSQU8OOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_bj6ssOOtEeqrmeSkFyyQrA" name="soil" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/soil"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/soil"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_bj6sseOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_bz4bUOOtEeqrmeSkFyyQrA" name="none" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/none"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="EnergyComponents.ecore#//TypeOfHeatSource/none"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_bz4bUeOtEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_dzuwqvEREeqrmeSkFyyQrA" name="[0..1] electricalEfficiencyPartLoad" sourceNode="_LWh_gFe9Eeq_N_dFIDFqhA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//CombinedHeatPower/electricalEfficiencyPartLoad"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//CombinedHeatPower/electricalEfficiencyPartLoad"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_kouSePEREeqrmeSkFyyQrA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_kouSevEREeqrmeSkFyyQrA" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_kouSefEREeqrmeSkFyyQrA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </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="_lw2_RPEREeqrmeSkFyyQrA" name="[0..1] thermalEfficiencyPartLoad" sourceNode="_LWh_gFe9Eeq_N_dFIDFqhA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//CombinedHeatPower/thermalEfficiencyPartLoad"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//CombinedHeatPower/thermalEfficiencyPartLoad"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_lw2_RfEREeqrmeSkFyyQrA" description="_8xbjEVfXEeq_N_dFIDFqhA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_lw2_R_EREeqrmeSkFyyQrA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_lw2_RvEREeqrmeSkFyyQrA" 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="_8jKAdPETEeqrmeSkFyyQrA" name="[0..1] tankMaterial" sourceNode="_E5DGEFe6Eeq_N_dFIDFqhA" targetNode="_tFH60OFWEequR_36GR_fPA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ThermalStorage/tankMaterial"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//ThermalStorage/tankMaterial"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jNKFDCs1EeuX7NehQjN5PA" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jNKFDis1EeuX7NehQjN5PA" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_jNKFDSs1EeuX7NehQjN5PA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YbHPgPHhEeqrmeSkFyyQrA" name="PowerCharacteristic" tooltipText="" outgoingEdges="_vBp-_PHhEeqrmeSkFyyQrA _gf-ohPHiEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PowerCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PowerCharacteristic"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_YbHPgfHhEeqrmeSkFyyQrA" 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']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YurEsPHhEeqrmeSkFyyQrA" name="PowerFunction" tooltipText="" incomingEdges="_gf-ohPHiEeqrmeSkFyyQrA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PowerFunction"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PowerFunction"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ACpacvHiEeqrmeSkFyyQrA" 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="_x4rPAPHhEeqrmeSkFyyQrA" name="key : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PowerFunction/key"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PowerFunction/key"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_0NqCE_HkEeqrmeSkFyyQrA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_yaaDEPHhEeqrmeSkFyyQrA" name="parameterA : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PowerFunction/parameterA"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PowerFunction/parameterA"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_3WPq8fHhEeqrmeSkFyyQrA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_yr0jMPHhEeqrmeSkFyyQrA" name="parameterB : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PowerFunction/parameterB"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="EnergyComponents.ecore#//PowerFunction/parameterB"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_47BQevHhEeqrmeSkFyyQrA" labelAlignment="LEFT" description="_mtuVUGROEeqhPrUG4-cQcg">
+          <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="_5kGCkPHhEeqrmeSkFyyQrA" name="powerfunction(x EDouble) : EDouble" tooltipText="powerfunction(x) : EDouble">
+        <target xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//PowerFunction/powerfunction"/>
+        <semanticElements xmi:type="ecore:EOperation" href="EnergyComponents.ecore#//PowerFunction/powerfunction"/>
+        <semanticElements xmi:type="ecore:EParameter" href="EnergyComponents.ecore#//PowerFunction/powerfunction/x"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_5kGpoPHhEeqrmeSkFyyQrA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vBp-_PHhEeqrmeSkFyyQrA" sourceNode="_YbHPgPHhEeqrmeSkFyyQrA" targetNode="_H7TEgGdwEeqHf7kMgRZPUQ">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PowerCharacteristic"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//PowerCharacteristic"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_vBqloPHhEeqrmeSkFyyQrA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_vBqlofHhEeqrmeSkFyyQrA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_vBqlovHhEeqrmeSkFyyQrA" showIcon="false"/>
+      </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:DEdge" uid="_gf-ohPHiEeqrmeSkFyyQrA" name="[1..*] functions" sourceNode="_YbHPgPHhEeqrmeSkFyyQrA" targetNode="_YurEsPHhEeqrmeSkFyyQrA">
+      <target xmi:type="ecore:EReference" href="EnergyComponents.ecore#//PowerCharacteristic/functions"/>
+      <semanticElements xmi:type="ecore:EReference" href="EnergyComponents.ecore#//PowerCharacteristic/functions"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_kkJBlvHiEeqrmeSkFyyQrA" description="_AMV8V7uIEeq7PM-WLoFu_w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_kkJBmPHiEeqrmeSkFyyQrA" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_kkJBl_HiEeqrmeSkFyyQrA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </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="_l5_nuoGDEeu4guSGPeRSOA" sourceNode="_bWFzgFe9Eeq_N_dFIDFqhA" targetNode="_1Ws8MFiuEeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Boiler"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//Boiler"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_l5_nu4GDEeu4guSGPeRSOA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_l5_nvIGDEeu4guSGPeRSOA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_l5_nvYGDEeu4guSGPeRSOA" showIcon="false"/>
+      </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:DEdge" uid="_nFiN0IGDEeu4guSGPeRSOA" sourceNode="_W6vCgFe9Eeq_N_dFIDFqhA" targetNode="_1Ws8MFiuEeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatPump"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//HeatPump"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_nFiN0YGDEeu4guSGPeRSOA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_nFiN0oGDEeu4guSGPeRSOA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_nFiN04GDEeu4guSGPeRSOA" showIcon="false"/>
+      </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:DEdge" uid="_njCpNoGDEeu4guSGPeRSOA" sourceNode="_LWh_gFe9Eeq_N_dFIDFqhA" targetNode="_1Ws8MFiuEeq_N_dFIDFqhA">
+      <target xmi:type="ecore:EClass" href="EnergyComponents.ecore#//CombinedHeatPower"/>
+      <semanticElements xmi:type="ecore:EClass" href="EnergyComponents.ecore#//CombinedHeatPower"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_njCpN4GDEeu4guSGPeRSOA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_njCpOIGDEeu4guSGPeRSOA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_njCpOYGDEeu4guSGPeRSOA" showIcon="false"/>
+      </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>
+    <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="_xdxn4FezEeq_N_dFIDFqhA"/>
+    <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+    <target xmi:type="ecore:EPackage" href="EnergyComponents.ecore#/"/>
+  </diagram:DSemanticDiagram>
+</xmi:XMI>
diff --git a/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore b/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..c006ed560e6a620683ade281ec23be87986f22bb
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/model/EnergyComponents.ecore
@@ -0,0 +1,658 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="energycomponents" nsURI="https://www.hft-stuttgart.de/energycomponents"
+    nsPrefix="encomp">
+  <eClassifiers xsi:type="ecore:EClass" name="EnergyComponent" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="modelName" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" defaultValueLiteral="model xyz"
+        iD="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revisionYear" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Year from which information is provided"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="technicalLifetime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="30">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="years"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="manufacturer" lowerBound="1"
+        eType="#//Manufacturer"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EnergyComponentsCatalog">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="author" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral="HFT_Stuttgart"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bioFuels" upperBound="-1"
+        eType="#//BioFuel" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="media" upperBound="-1"
+        eType="#//Medium" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="combinedHeatPowerUtilities"
+        upperBound="-1" eType="#//CombinedHeatPower" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="boilers" upperBound="-1"
+        eType="#//Boiler" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="photovoltaicModules" upperBound="-1"
+        eType="#//PhotovoltaicModule" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="solarThermalCollectors"
+        upperBound="-1" eType="#//SolarThermalCollector" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="windTurbines" upperBound="-1"
+        eType="#//WindTurbine" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="geothermalHeatExchangers"
+        upperBound="-1" eType="#//GeothermalHeatExchanger" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="heatPumps" upperBound="-1"
+        eType="#//HeatPump" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inverters" upperBound="-1"
+        eType="#//Inverter" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="heatExchangers" upperBound="-1"
+        eType="#//HeatExchanger" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="electrolyzers" upperBound="-1"
+        eType="#//Electrolyzer" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="hydrogenCompressors" upperBound="-1"
+        eType="#//HydrogenCompressor" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="fuelCells" upperBound="-1"
+        eType="#//FuelCell" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="thermalStorages" upperBound="-1"
+        eType="#//ThermalStorage" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="powerStorages" upperBound="-1"
+        eType="#//ElectricalStorage" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="hydrogenStorages" upperBound="-1"
+        eType="#//HydrogenStorage" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="fossilFuels" upperBound="-1"
+        eType="#//FossilFuel" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="manufacturers" upperBound="-1"
+        eType="#//Manufacturer" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="materials" upperBound="-1"
+        eType="#//Material" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="energycomponentscostcatalog"
+        eType="#//EnergyComponentsCostCatalog" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="energycarriers" upperBound="-1"
+        eType="#//EnergyCarrier" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ThermalStorage" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="volume" eType="#//QuantityDouble"
+        defaultValueLiteral="5 m³">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="m³"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalStorageType" unique="false"
+        eType="#//ThermalStorageTypes" transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxTemp" eType="#//QuantityDouble"
+        defaultValueLiteral="80 °C">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="degree Celsius"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tankThickness" eType="#//QuantityDouble"
+        defaultValueLiteral="10 mm "/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="insulationThickness" eType="#//QuantityDouble"
+        defaultValueLiteral="100 mm"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="usesMedium" lowerBound="1"
+        eType="#//Medium"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="insulationMaterial" eType="#//Material"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="#//QuantityDouble"
+        defaultValueLiteral="2 m"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="tankMaterial" eType="#//Material"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ElectricalStorage" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="electricalStorageType"
+        lowerBound="1" eType="#//ElectricalStorageTypes"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryCapacity" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="A*h">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Ah&#xD;&#xA;&#xD;&#xA;The storage capacity of the battery is  represented in Ampere &#xD;&#xA;hour or Ah. If V is the battery voltage then the energy storage &#xD;&#xA;capacity of the  battery can  be Ah  x V  = Watt-hour.  Usually &#xD;&#xA;battery capacity will be specified for a given discharge/charge &#xD;&#xA;rating or C  rating. The  actual capacity depends  on operating &#xD;&#xA;conditions such as load, temperature, etc. "/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryVoltage" eType="#//QuantityDouble"
+        defaultValueLiteral="V">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="V&#xD;&#xA;&#xD;&#xA;The terminal voltage during operating condition  is known as &#xD;&#xA;nominal  voltage  or  working  voltage.  This  voltage  will  be &#xD;&#xA;specified by manufactures. It may be 3V, 6V, 12V, 24Vetc "/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryLifeCycle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="7000">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="It  is  the  number  of  complete  charge  –  discharge  cycles  a &#xD;&#xA;battery can  work before the  nominal capacity  decreases less &#xD;&#xA;than 80% of its rated  initial capacity. After the  specified life &#xD;&#xA;cycle, the battery will  work with reduced  capacity. It can be &#xD;&#xA;used but the capacity will be lower. "/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="selfDischarge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.2">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="rate&#xD;&#xA;&#xD;&#xA;It is  the electrical  capacity lost  when a  battery is  not being &#xD;&#xA;used due to internal electrochemical process with the battery. &#xD;&#xA;The self discharge increases with increase of temperature. The &#xD;&#xA;batteries  can  be stored  at lower  temperatures to  reduce  self &#xD;&#xA;discharge. "/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="inverterIncluded" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
+        defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryEffiency" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.8"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="energyContent" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="5 kW*h"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CombinedHeatPower" eSuperTypes="#//ThermalEnergyDevice">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalEfficiency" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.4">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="electricalEfficiency" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.4">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="installedElectricalPower"
+        lowerBound="1" eType="#//QuantityDouble" defaultValueLiteral="kW">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kW"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="electricalEfficiencyPartLoad"
+        eType="#//Characteristic" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="thermalEfficiencyPartLoad"
+        eType="#//Characteristic" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="HeatPump" eSuperTypes="#//ThermalEnergyDevice">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="heatSource" lowerBound="1"
+        eType="#//HeatSources"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="coefficientOfPerformance"
+        lowerBound="1" eType="#//Characteristic" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="powerInput" eType="#//Characteristic"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="heatOutput" eType="#//Characteristic"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Boiler" eSuperTypes="#//ThermalEnergyDevice">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalEfficiency" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.98">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="boilerType" eType="#//BoilerTypes"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SolarThermalCollector" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="collectorType" lowerBound="1"
+        eType="#//CollectorTypes"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="apertureArea" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="m²">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="m²"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="opticalEfficiency" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.77">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="linearHeatLossCoefficient"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="3.2"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="quadraticalHeatLossCoefficient"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.01"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="HeatSources">
+    <eLiterals name="air"/>
+    <eLiterals name="ground"/>
+    <eLiterals name="water"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="CollectorTypes">
+    <eLiterals name="flatPlaneCollector"/>
+    <eLiterals name="evacuatedTubeCollector" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Electrolyzer" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cellType" eType="#//cellTypesElectrolyzer"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cellArea" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="50 cm²">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="cm²"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="numberOfCells" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="5"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxOperatingCurrentDensity"
+        eType="#//QuantityDouble" defaultValueLiteral="3 A/cm²">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A/cm²"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minOperatingCurrentDensity"
+        eType="#//QuantityDouble" defaultValueLiteral="0.3 A/cm²">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A/cm²"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="overloadCapacity" eType="#//QuantityDouble"
+        defaultValueLiteral="120 %">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="percent"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalCellVoltage" eType="#//QuantityDouble"
+        defaultValueLiteral="1.94 V">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="V"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ThermalEnergyDevice" abstract="true"
+      eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="installedThermalPower"
+        lowerBound="1" eType="#//QuantityDouble" defaultValueLiteral="kW">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kW"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="modulationRange" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.5">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fuel" lowerBound="1" eType="#//FuelTypes"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ElectricalStorageTypes">
+    <eLiterals name="lithiumIon">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Lithium ion"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="leadAcid" value="1"/>
+    <eLiterals name="niMH" value="2">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Nickel – Metal hydride"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="lithiumPolymer" value="3">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value=""/>
+      </eAnnotations>
+    </eLiterals>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="HydrogenCompressor" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="efficiency" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.68">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermodynamicMode" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxPressure" eType="#//QuantityDouble"
+        defaultValueLiteral="50 MPa">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="MPa"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxDeliveryRate" eType="#//QuantityDouble"
+        defaultValueLiteral="9 kg/h">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kg/h"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="HydrogenStorage" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="numberOfCylinders" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="1"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cylinderVolume" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="1.5 m³">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="m³"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalPressure" eType="#//QuantityDouble"
+        defaultValueLiteral="25 MPa"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FuelCell" eSuperTypes="#//EnergyComponent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="EnergyCarrier" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="co2EmissionsFactor" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="t/MW*h"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="primaryEnergyFactor" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FossilFuel" eSuperTypes="#//Fuel">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="methaneContent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Hydrogen" eSuperTypes="#//Fuel">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="chemicalPurity" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.99">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="hydrogenForHydrogenStorage"
+        eType="#//HydrogenStorage"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Electricity" abstract="true" eSuperTypes="#//EnergyCarrier">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="renewableShare" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BioFuel" eSuperTypes="#//Fuel">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="waterContent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="%"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ashContent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="%"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Fuel" abstract="true" eSuperTypes="#//EnergyCarrier">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="netCalorificValue" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="(kW*h)/m³">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kWh/m³&#xD;&#xA;Heizwert"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="grossCalorificValue" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="(kW*h)/m³">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kWh/m³&#xD;&#xA;Brennwert"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="density" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="kg/m³">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kg/m³"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fuelType" lowerBound="1"
+        eType="#//FuelTypes"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="WindTurbine" eSuperTypes="#//EnergyComponent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="PhotovoltaicModule" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cellType" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEnumerator"
+        transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalPower" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="W">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="W"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mppVoltage" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="V">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="V"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mppCurrent" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="A">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalEfficiency" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.18">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="moduleArea" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="m²">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="m²"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Inverter" eSuperTypes="#//EnergyComponent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="HeatExchanger" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="heatRecoveryEfficiency"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.8"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalElectricityConsumption"
+        lowerBound="1" eType="#//QuantityDouble" defaultValueLiteral="W">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Watt"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="GeothermalHeatExchanger" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pipeDiameter" eType="#//QuantityDouble"
+        defaultValueLiteral="1 cm"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="BoilerTypes">
+    <eLiterals name="condensingBoiler"/>
+    <eLiterals name="lowtemperatureBoiler" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ThermalStorageTypes">
+    <eLiterals name="sensible"/>
+    <eLiterals name="latent" value="1" literal="LITERAL1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Medium">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="density" lowerBound="1"
+        eType="#//QuantityDouble" defaultValueLiteral="g/cm³">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kg/m³"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="heatCapacity" eType="#//QuantityDouble"
+        defaultValueLiteral="kJ/(kg*K)">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kJ/kg*K"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="evaporationTemperature"
+        eType="#//QuantityDouble" defaultValueLiteral="°C">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="degree Celsius"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="meltingTemperature" eType="#//QuantityDouble"
+        defaultValueLiteral="°C">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="degree Celsius"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="QuantityDouble" instanceClassName="de.hftstuttgart.units.NullableQuantity"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="QuantityLong" instanceClassName="de.hftstuttgart.units.NullableQuantity"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="cellTypesElectrolyzer">
+    <eLiterals name="PEM"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LinearFunction">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="y = ParameterM * x + ParameterC"/>
+    </eAnnotations>
+    <eOperations name="linearfunction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterM * x + ParameterC"/>
+      </eAnnotations>
+      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterM" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterM * x + ParameterC"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterC" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterM * x + ParameterC"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DataPoint">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Double"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Double"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TableFunction">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="datapoints" lowerBound="2"
+        upperBound="-1" eType="#//DataPoint" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ExponentialFunction">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="y = ParameterA * ParameterB ^ x"/>
+    </eAnnotations>
+    <eOperations name="exponentialfunction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * ParameterB ^ x"/>
+      </eAnnotations>
+      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterA" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * ParameterB ^ x"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterB" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * ParameterB ^ x"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Characteristic" abstract="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TableCharacteristic" eSuperTypes="#//Characteristic">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functions" lowerBound="1"
+        upperBound="-1" eType="#//TableFunction" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LinearCharacteristic" eSuperTypes="#//Characteristic">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functions" lowerBound="1"
+        upperBound="-1" eType="#//LinearFunction" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ExponentionalCharacteristic" eSuperTypes="#//Characteristic">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functions" lowerBound="1"
+        upperBound="-1" eType="#//ExponentialFunction" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Manufacturer">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="manufacturerName" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="outOfBusinessSince" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PolynomialCharacteristic" eSuperTypes="#//Characteristic">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functions" lowerBound="1"
+        upperBound="-1" eType="#//PolynomialFunction" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PolynomialFunction">
+    <eOperations name="polynomialfunction" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * x^2 + ParameterB * x + ParameterC"/>
+      </eAnnotations>
+      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterA" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * x^2 + ParameterB * x + ParameterC"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterB" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * x^2 + ParameterB * x + ParameterC"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterC" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * x^2 + ParameterB * x + ParameterC"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Material">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalConductivity" eType="#//QuantityDouble"
+        defaultValueLiteral=" W/(m*K)">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value=" W/(m*K)"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EnergyComponentsCostCatalog">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="author" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revisionYear" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="costCategories" upperBound="-1"
+        eType="#//Cost" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="personnelCost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="150 "/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Cost">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="componentName" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="i.e. what is included in which cost category"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="heatSource" eType="#//TypeOfHeatSource"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="datasource" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="investmentCost" lowerBound="1"
+        eType="#//Characteristic" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="otherInvestmentCost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="personnelHours" eType="#//QuantityDouble"
+        defaultValueLiteral="10 h"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="personnelCostShare" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="administrationAndOtherCostShare"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.015">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share of investment cost"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maintenanceCostShare" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="0.015">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="share of investment cost"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="FuelTypes">
+    <eLiterals name="naturalGas"/>
+    <eLiterals name="oil" value="1"/>
+    <eLiterals name="diesel" value="2"/>
+    <eLiterals name="bioGas"/>
+    <eLiterals name="syntheticGas" value="1"/>
+    <eLiterals name="woodPellets" value="2"/>
+    <eLiterals name="woodChips" value="3"/>
+    <eLiterals name="sewageGas" value="4"/>
+    <eLiterals name="electricity" value="8"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TypeOfHeatSource">
+    <eLiterals name="naturalGas"/>
+    <eLiterals name="biogas" value="1"/>
+    <eLiterals name="oil" value="2"/>
+    <eLiterals name="diesel" value="3"/>
+    <eLiterals name="syntheticGas" value="4"/>
+    <eLiterals name="woodPellets" value="5"/>
+    <eLiterals name="woodChips" value="6"/>
+    <eLiterals name="sewageGas" value="7"/>
+    <eLiterals name="LNG" value="8"/>
+    <eLiterals name="CNG" value="9"/>
+    <eLiterals name="water" value="10"/>
+    <eLiterals name="air" value="11"/>
+    <eLiterals name="soil" value="12"/>
+    <eLiterals name="none" value="13"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PowerCharacteristic" eSuperTypes="#//Characteristic">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functions" lowerBound="1"
+        upperBound="-1" eType="#//PowerFunction" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PowerFunction">
+    <eOperations name="powerfunction" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="y = ParameterA * x^ParameterB"/>
+      </eAnnotations>
+      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterA" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterB" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/de.hftstuttgart.energycomponents/model/EnergyComponents.genmodel b/de.hftstuttgart.energycomponents/model/EnergyComponents.genmodel
new file mode 100644
index 0000000000000000000000000000000000000000..724e2d048525b6abeaadad56ad726032461c2b9b
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/model/EnergyComponents.genmodel
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
+    modelDirectory="/de.hftstuttgart.energycomponents/src-gen" creationIcons="false"
+    editDirectory="/de.hftstuttgart.energycomponents.edit/src-gen" editorDirectory="/de.hftstuttgart.energycomponents.editor/src-gen"
+    modelPluginID="de.hftstuttgart.energycomponents" modelName="EnergyComponents"
+    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" codeFormatting="true"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+    operationReflection="true" importOrganizing="true">
+  <foreignModel>EnergyComponents.ecore</foreignModel>
+  <testsDirectory xsi:nil="true"/>
+  <genPackages prefix="EnComp" basePackage="de.hftstuttgart" disposableProviderFactory="true"
+      ecorePackage="EnergyComponents.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//HeatSources">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//HeatSources/air"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//HeatSources/ground"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//HeatSources/water"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//CollectorTypes">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//CollectorTypes/flatPlaneCollector"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//CollectorTypes/evacuatedTubeCollector"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//ElectricalStorageTypes">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//ElectricalStorageTypes/lithiumIon"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//ElectricalStorageTypes/leadAcid"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//ElectricalStorageTypes/niMH"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//ElectricalStorageTypes/lithiumPolymer"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//BoilerTypes">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//BoilerTypes/condensingBoiler"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//BoilerTypes/lowtemperatureBoiler"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//ThermalStorageTypes">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//ThermalStorageTypes/sensible"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//ThermalStorageTypes/latent"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//cellTypesElectrolyzer">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//cellTypesElectrolyzer/PEM"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//FuelTypes">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/naturalGas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/oil"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/diesel"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/bioGas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/syntheticGas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/woodPellets"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/woodChips"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/sewageGas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//FuelTypes/electricity"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="EnergyComponents.ecore#//TypeOfHeatSource">
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/naturalGas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/biogas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/oil"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/diesel"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/syntheticGas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/woodPellets"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/woodChips"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/sewageGas"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/LNG"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/CNG"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/water"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/air"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/soil"/>
+      <genEnumLiterals ecoreEnumLiteral="EnergyComponents.ecore#//TypeOfHeatSource/none"/>
+    </genEnums>
+    <genDataTypes ecoreDataType="EnergyComponents.ecore#//QuantityDouble" create="return de.hftstuttgart.units.NullableQuantity.create(it);"
+        convert="return it == null ? null : it.toString();"/>
+    <genDataTypes ecoreDataType="EnergyComponents.ecore#//QuantityLong" create="return de.hftstuttgart.units.NullableQuantity.create(it);"
+        convert="return it == null ? null : it.toString();"/>
+    <genClasses ecoreClass="EnergyComponents.ecore#//EnergyComponent">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponent/description"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponent/modelName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponent/revisionYear"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponent/technicalLifetime"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponent/manufacturer"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//EnergyComponentsCatalog">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponentsCatalog/author"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/bioFuels"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/media"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/combinedHeatPowerUtilities"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/boilers"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/photovoltaicModules"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/solarThermalCollectors"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/windTurbines"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/geothermalHeatExchangers"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/heatPumps"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/inverters"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/heatExchangers"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/electrolyzers"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/hydrogenCompressors"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/fuelCells"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/thermalStorages"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/powerStorages"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/hydrogenStorages"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/fossilFuels"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/manufacturers"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/materials"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/energycomponentscostcatalog"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCatalog/energycarriers"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//ThermalStorage">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalStorage/volume"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalStorage/thermalStorageType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalStorage/maxTemp"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalStorage/tankThickness"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalStorage/insulationThickness"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//ThermalStorage/usesMedium"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//ThermalStorage/insulationMaterial"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalStorage/height"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//ThermalStorage/tankMaterial"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//ElectricalStorage">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/electricalStorageType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/batteryCapacity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/batteryVoltage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/batteryLifeCycle"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/selfDischarge"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/inverterIncluded"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/batteryEffiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ElectricalStorage/energyContent"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//CombinedHeatPower">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//CombinedHeatPower/thermalEfficiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//CombinedHeatPower/electricalEfficiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//CombinedHeatPower/installedElectricalPower"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//CombinedHeatPower/electricalEfficiencyPartLoad"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//CombinedHeatPower/thermalEfficiencyPartLoad"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//HeatPump">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HeatPump/heatSource"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//HeatPump/coefficientOfPerformance"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//HeatPump/powerInput"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//HeatPump/heatOutput"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Boiler">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Boiler/nominalEfficiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Boiler/boilerType"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//SolarThermalCollector">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//SolarThermalCollector/collectorType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//SolarThermalCollector/apertureArea"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//SolarThermalCollector/opticalEfficiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//SolarThermalCollector/linearHeatLossCoefficient"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//SolarThermalCollector/quadraticalHeatLossCoefficient"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Electrolyzer">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electrolyzer/cellType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electrolyzer/cellArea"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electrolyzer/numberOfCells"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electrolyzer/maxOperatingCurrentDensity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electrolyzer/minOperatingCurrentDensity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electrolyzer/overloadCapacity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electrolyzer/nominalCellVoltage"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//ThermalEnergyDevice">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalEnergyDevice/installedThermalPower"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalEnergyDevice/modulationRange"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ThermalEnergyDevice/fuel"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//HydrogenCompressor">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HydrogenCompressor/efficiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HydrogenCompressor/thermodynamicMode"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HydrogenCompressor/maxPressure"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HydrogenCompressor/maxDeliveryRate"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//HydrogenStorage">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HydrogenStorage/numberOfCylinders"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HydrogenStorage/cylinderVolume"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HydrogenStorage/nominalPressure"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//FuelCell"/>
+    <genClasses ecoreClass="EnergyComponents.ecore#//EnergyCarrier">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyCarrier/co2EmissionsFactor"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyCarrier/primaryEnergyFactor"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyCarrier/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyCarrier/cost"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//FossilFuel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//FossilFuel/methaneContent"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Hydrogen">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Hydrogen/chemicalPurity"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//Hydrogen/hydrogenForHydrogenStorage"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Electricity">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Electricity/renewableShare"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//BioFuel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//BioFuel/waterContent"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//BioFuel/ashContent"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Fuel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Fuel/netCalorificValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Fuel/grossCalorificValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Fuel/density"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Fuel/fuelType"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//WindTurbine"/>
+    <genClasses ecoreClass="EnergyComponents.ecore#//PhotovoltaicModule">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PhotovoltaicModule/cellType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PhotovoltaicModule/nominalPower"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PhotovoltaicModule/mppVoltage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PhotovoltaicModule/mppCurrent"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PhotovoltaicModule/nominalEfficiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PhotovoltaicModule/moduleArea"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Inverter"/>
+    <genClasses ecoreClass="EnergyComponents.ecore#//HeatExchanger">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HeatExchanger/heatRecoveryEfficiency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//HeatExchanger/nominalElectricityConsumption"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//GeothermalHeatExchanger">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//GeothermalHeatExchanger/pipeDiameter"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Medium">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Medium/density"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Medium/heatCapacity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Medium/evaporationTemperature"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Medium/meltingTemperature"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Medium/name"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//LinearFunction">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//LinearFunction/key"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//LinearFunction/parameterM"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//LinearFunction/parameterC"/>
+      <genOperations ecoreOperation="EnergyComponents.ecore#//LinearFunction/linearfunction"
+          body="return getParameterM() * x + getParameterC();">
+        <genParameters ecoreParameter="EnergyComponents.ecore#//LinearFunction/linearfunction/x"/>
+      </genOperations>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//DataPoint">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//DataPoint/x"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//DataPoint/y"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//TableFunction">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//TableFunction/key"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//TableFunction/datapoints"/>
+    </genClasses>
+    <genClasses documentation="y = ParameterA * ParameterB ^ x" ecoreClass="EnergyComponents.ecore#//ExponentialFunction">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ExponentialFunction/key"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ExponentialFunction/parameterA"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//ExponentialFunction/parameterB"/>
+      <genOperations documentation="y = ParameterA * ParameterB ^ x" ecoreOperation="EnergyComponents.ecore#//ExponentialFunction/exponentialfunction"
+          body="return getParameterA() * Math.pow(getParameterB(), x);">
+        <genParameters ecoreParameter="EnergyComponents.ecore#//ExponentialFunction/exponentialfunction/x"/>
+      </genOperations>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Characteristic"/>
+    <genClasses image="false" ecoreClass="EnergyComponents.ecore#//TableCharacteristic">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//TableCharacteristic/functions"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//LinearCharacteristic">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//LinearCharacteristic/functions"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//ExponentionalCharacteristic">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//ExponentionalCharacteristic/functions"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Manufacturer">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Manufacturer/manufacturerName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Manufacturer/country"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Manufacturer/outOfBusinessSince"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//PolynomialCharacteristic">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//PolynomialCharacteristic/functions"/>
+    </genClasses>
+    <genClasses documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
+        ecoreClass="EnergyComponents.ecore#//PolynomialFunction">
+      <genFeatures documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
+          createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PolynomialFunction/key"/>
+      <genFeatures documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
+          createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PolynomialFunction/parameterA"/>
+      <genFeatures documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
+          createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PolynomialFunction/parameterB"/>
+      <genFeatures documentation="y = ParameterA * x^2 + ParameterB * x + ParameterC"
+          createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PolynomialFunction/parameterC"/>
+      <genOperations ecoreOperation="EnergyComponents.ecore#//PolynomialFunction/polynomialfunction"
+          body="return getParameterA() * Math.pow( x,2 ) + getParameterB() * x + getParameterC();">
+        <genParameters ecoreParameter="EnergyComponents.ecore#//PolynomialFunction/polynomialfunction/x"/>
+      </genOperations>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Material">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Material/thermalConductivity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Material/name"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//EnergyComponentsCostCatalog">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponentsCostCatalog/author"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponentsCostCatalog/revisionYear"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//EnergyComponentsCostCatalog/costCategories"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//EnergyComponentsCostCatalog/personnelCost"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//Cost">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/componentName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/description"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/heatSource"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/datasource"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//Cost/investmentCost"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/otherInvestmentCost"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/personnelHours"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/personnelCostShare"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/administrationAndOtherCostShare"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//Cost/maintenanceCostShare"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//PowerCharacteristic">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference EnergyComponents.ecore#//PowerCharacteristic/functions"/>
+    </genClasses>
+    <genClasses ecoreClass="EnergyComponents.ecore#//PowerFunction">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PowerFunction/key"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PowerFunction/parameterA"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EnergyComponents.ecore#//PowerFunction/parameterB"/>
+      <genOperations documentation="y = ParameterA * x^ParameterB" ecoreOperation="EnergyComponents.ecore#//PowerFunction/powerfunction"
+          body="return getParameterA() * Math.pow( x,getParameterB() );">
+        <genParameters ecoreParameter="EnergyComponents.ecore#//PowerFunction/powerfunction/x"/>
+      </genOperations>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/de.hftstuttgart.energycomponents/plugin.properties b/de.hftstuttgart.energycomponents/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..d054f5f42c1b387726a831eeefb742b3bacbfb99
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = EnergyComponents Model
+providerName = www.hft-stuttgart.de
diff --git a/de.hftstuttgart.energycomponents/plugin.xml b/de.hftstuttgart.energycomponents/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..abb9c0fd344063b2c10a95942c33b12027ae9839
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated EnergyComponents -->
+      <package
+            uri="https://www.hft-stuttgart.de/energycomponents"
+            class="de.hftstuttgart.energycomponents.EnCompPackage"
+            genModel="model/EnergyComponents.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/AllFuelTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/AllFuelTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d57482ac7f5b823cb334f067de46bdd75ce6ef3
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/AllFuelTypes.java
@@ -0,0 +1,340 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>All Fuel Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getAllFuelTypes()
+ * @model
+ * @generated
+ */
+public enum AllFuelTypes implements Enumerator {
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NATURAL_GAS(0, "naturalGas", "naturalGas"),
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OIL(1, "oil", "oil"),
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DIESEL(2, "diesel", "diesel"),
+
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIO_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BIO_GAS(0, "bioGas", "bioGas"),
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_CHIPS(3, "woodChips", "woodChips"),
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SEWAGE_GAS(4, "sewageGas", "sewageGas");
+
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS
+	 * @model name="naturalGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NATURAL_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL
+	 * @model name="oil"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OIL_VALUE = 1;
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL
+	 * @model name="diesel"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DIESEL_VALUE = 2;
+
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIO_GAS
+	 * @model name="bioGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BIO_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS
+	 * @model name="syntheticGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SYNTHETIC_GAS_VALUE = 1;
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS
+	 * @model name="woodPellets"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_PELLETS_VALUE = 2;
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS
+	 * @model name="woodChips"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_CHIPS_VALUE = 3;
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS
+	 * @model name="sewageGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SEWAGE_GAS_VALUE = 4;
+
+	/**
+	 * An array of all the '<em><b>All Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final AllFuelTypes[] VALUES_ARRAY = new AllFuelTypes[] { NATURAL_GAS, OIL, DIESEL, BIO_GAS,
+			SYNTHETIC_GAS, WOOD_PELLETS, WOOD_CHIPS, SEWAGE_GAS, };
+
+	/**
+	 * A public read-only list of all the '<em><b>All Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<AllFuelTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>All Fuel Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static AllFuelTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AllFuelTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>All Fuel Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static AllFuelTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AllFuelTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>All Fuel Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static AllFuelTypes get(int value) {
+		switch (value) {
+		case NATURAL_GAS_VALUE:
+			return NATURAL_GAS;
+		case OIL_VALUE:
+			return OIL;
+		case DIESEL_VALUE:
+			return DIESEL;
+		case WOOD_CHIPS_VALUE:
+			return WOOD_CHIPS;
+		case SEWAGE_GAS_VALUE:
+			return SEWAGE_GAS;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private AllFuelTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //AllFuelTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BioFuel.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BioFuel.java
new file mode 100644
index 0000000000000000000000000000000000000000..69b7533bcd1ed928c89f5106e5b050674fc5e99f
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BioFuel.java
@@ -0,0 +1,75 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bio Fuel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.BioFuel#getWaterContent <em>Water Content</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.BioFuel#getAshContent <em>Ash Content</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getBioFuel()
+ * @model
+ * @generated
+ */
+public interface BioFuel extends Fuel {
+	/**
+	 * Returns the value of the '<em><b>Water Content</b></em>' attribute.
+	 * The default value is <code>"0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * %
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Water Content</em>' attribute.
+	 * @see #setWaterContent(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getBioFuel_WaterContent()
+	 * @model default="0"
+	 * @generated
+	 */
+	double getWaterContent();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.BioFuel#getWaterContent <em>Water Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Water Content</em>' attribute.
+	 * @see #getWaterContent()
+	 * @generated
+	 */
+	void setWaterContent(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Ash Content</b></em>' attribute.
+	 * The default value is <code>"0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * %
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Ash Content</em>' attribute.
+	 * @see #setAshContent(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getBioFuel_AshContent()
+	 * @model default="0"
+	 * @generated
+	 */
+	double getAshContent();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.BioFuel#getAshContent <em>Ash Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ash Content</em>' attribute.
+	 * @see #getAshContent()
+	 * @generated
+	 */
+	void setAshContent(double value);
+
+} // BioFuel
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BioFuelTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BioFuelTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..73be31abd88f168f8c6138448eda273e9bedde56
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BioFuelTypes.java
@@ -0,0 +1,277 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Bio Fuel Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getBioFuelTypes()
+ * @model
+ * @generated
+ */
+public enum BioFuelTypes implements Enumerator {
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIO_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BIO_GAS(0, "bioGas", "bioGas"),
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_CHIPS(3, "woodChips", "woodChips"),
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SEWAGE_GAS(4, "sewageGas", "sewageGas");
+
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIO_GAS
+	 * @model name="bioGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BIO_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS
+	 * @model name="syntheticGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SYNTHETIC_GAS_VALUE = 1;
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS
+	 * @model name="woodPellets"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_PELLETS_VALUE = 2;
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS
+	 * @model name="woodChips"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_CHIPS_VALUE = 3;
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS
+	 * @model name="sewageGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SEWAGE_GAS_VALUE = 4;
+
+	/**
+	 * An array of all the '<em><b>Bio Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final BioFuelTypes[] VALUES_ARRAY = new BioFuelTypes[] { BIO_GAS, SYNTHETIC_GAS, WOOD_PELLETS,
+			WOOD_CHIPS, SEWAGE_GAS, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Bio Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<BioFuelTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Bio Fuel Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BioFuelTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BioFuelTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Bio Fuel Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BioFuelTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BioFuelTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Bio Fuel Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BioFuelTypes get(int value) {
+		switch (value) {
+		case BIO_GAS_VALUE:
+			return BIO_GAS;
+		case SYNTHETIC_GAS_VALUE:
+			return SYNTHETIC_GAS;
+		case WOOD_PELLETS_VALUE:
+			return WOOD_PELLETS;
+		case WOOD_CHIPS_VALUE:
+			return WOOD_CHIPS;
+		case SEWAGE_GAS_VALUE:
+			return SEWAGE_GAS;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private BioFuelTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //BioFuelTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Boiler.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Boiler.java
new file mode 100644
index 0000000000000000000000000000000000000000..180f0e621dfeafc69e175bbaac9b76df2309a79a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Boiler.java
@@ -0,0 +1,74 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boiler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Boiler#getNominalEfficiency <em>Nominal Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Boiler#getBoilerType <em>Boiler Type</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getBoiler()
+ * @model
+ * @generated
+ */
+public interface Boiler extends ThermalEnergyDevice {
+	/**
+	 * Returns the value of the '<em><b>Nominal Efficiency</b></em>' attribute.
+	 * The default value is <code>"0.98"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Nominal Efficiency</em>' attribute.
+	 * @see #setNominalEfficiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getBoiler_NominalEfficiency()
+	 * @model default="0.98"
+	 * @generated
+	 */
+	double getNominalEfficiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Boiler#getNominalEfficiency <em>Nominal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Efficiency</em>' attribute.
+	 * @see #getNominalEfficiency()
+	 * @generated
+	 */
+	void setNominalEfficiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Boiler Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.BoilerTypes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Boiler Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.BoilerTypes
+	 * @see #setBoilerType(BoilerTypes)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getBoiler_BoilerType()
+	 * @model
+	 * @generated
+	 */
+	BoilerTypes getBoilerType();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Boiler#getBoilerType <em>Boiler Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Boiler Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.BoilerTypes
+	 * @see #getBoilerType()
+	 * @generated
+	 */
+	void setBoilerType(BoilerTypes value);
+
+} // Boiler
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BoilerTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BoilerTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ec8c3d39a3a5bce4e7145e300ea0b42ba4ed029
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/BoilerTypes.java
@@ -0,0 +1,206 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Boiler Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getBoilerTypes()
+ * @model
+ * @generated
+ */
+public enum BoilerTypes implements Enumerator {
+	/**
+	 * The '<em><b>Condensing Boiler</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CONDENSING_BOILER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CONDENSING_BOILER(0, "condensingBoiler", "condensingBoiler"),
+	/**
+	 * The '<em><b>Lowtemperature Boiler</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #LOWTEMPERATURE_BOILER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LOWTEMPERATURE_BOILER(1, "lowtemperatureBoiler", "lowtemperatureBoiler");
+
+	/**
+	 * The '<em><b>Condensing Boiler</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CONDENSING_BOILER
+	 * @model name="condensingBoiler"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONDENSING_BOILER_VALUE = 0;
+
+	/**
+	 * The '<em><b>Lowtemperature Boiler</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOWTEMPERATURE_BOILER
+	 * @model name="lowtemperatureBoiler"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LOWTEMPERATURE_BOILER_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Boiler Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final BoilerTypes[] VALUES_ARRAY = new BoilerTypes[] { CONDENSING_BOILER, LOWTEMPERATURE_BOILER, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Boiler Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<BoilerTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Boiler Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BoilerTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BoilerTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Boiler Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BoilerTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BoilerTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Boiler Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BoilerTypes get(int value) {
+		switch (value) {
+		case CONDENSING_BOILER_VALUE:
+			return CONDENSING_BOILER;
+		case LOWTEMPERATURE_BOILER_VALUE:
+			return LOWTEMPERATURE_BOILER;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private BoilerTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //BoilerTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Characteristic.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Characteristic.java
new file mode 100644
index 0000000000000000000000000000000000000000..5cb2d6a39b2672a1bfb40628ea18ebe5b8acdfd3
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Characteristic.java
@@ -0,0 +1,18 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getCharacteristic()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Characteristic extends EObject {
+} // Characteristic
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ChemicalEnergyDevice.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ChemicalEnergyDevice.java
new file mode 100644
index 0000000000000000000000000000000000000000..70526cff7669e0dc711074dfa5fe8b62295d7286
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ChemicalEnergyDevice.java
@@ -0,0 +1,100 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chemical Energy Device</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getUsesFuel <em>Uses Fuel</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getModulationRange <em>Modulation Range</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ChemicalEnergyDevice extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * The default value is <code>"kW"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kW
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Installed Thermal Power</em>' attribute.
+	 * @see #setInstalledThermalPower(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice_InstalledThermalPower()
+	 * @model default="kW" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getInstalledThermalPower();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Installed Thermal Power</em>' attribute.
+	 * @see #getInstalledThermalPower()
+	 * @generated
+	 */
+	void setInstalledThermalPower(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Uses Fuel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Uses Fuel</em>' reference.
+	 * @see #setUsesFuel(Fuel)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice_UsesFuel()
+	 * @model
+	 * @generated
+	 */
+	Fuel getUsesFuel();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getUsesFuel <em>Uses Fuel</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Uses Fuel</em>' reference.
+	 * @see #getUsesFuel()
+	 * @generated
+	 */
+	void setUsesFuel(Fuel value);
+
+	/**
+	 * Returns the value of the '<em><b>Modulation Range</b></em>' attribute.
+	 * The default value is <code>"0.5"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Modulation Range</em>' attribute.
+	 * @see #setModulationRange(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getChemicalEnergyDevice_ModulationRange()
+	 * @model default="0.5"
+	 * @generated
+	 */
+	double getModulationRange();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ChemicalEnergyDevice#getModulationRange <em>Modulation Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Modulation Range</em>' attribute.
+	 * @see #getModulationRange()
+	 * @generated
+	 */
+	void setModulationRange(double value);
+
+} // ChemicalEnergyDevice
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/CollectorTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/CollectorTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..b28644892163f92c6efeb7781b2ac9389fa0f144
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/CollectorTypes.java
@@ -0,0 +1,208 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Collector Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getCollectorTypes()
+ * @model
+ * @generated
+ */
+public enum CollectorTypes implements Enumerator {
+	/**
+	 * The '<em><b>Flat Plane Collector</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLAT_PLANE_COLLECTOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FLAT_PLANE_COLLECTOR(0, "flatPlaneCollector", "flatPlaneCollector"),
+
+	/**
+	 * The '<em><b>Evacuated Tube Collector</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EVACUATED_TUBE_COLLECTOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EVACUATED_TUBE_COLLECTOR(1, "evacuatedTubeCollector", "evacuatedTubeCollector");
+
+	/**
+	 * The '<em><b>Flat Plane Collector</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLAT_PLANE_COLLECTOR
+	 * @model name="flatPlaneCollector"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLAT_PLANE_COLLECTOR_VALUE = 0;
+
+	/**
+	 * The '<em><b>Evacuated Tube Collector</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EVACUATED_TUBE_COLLECTOR
+	 * @model name="evacuatedTubeCollector"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EVACUATED_TUBE_COLLECTOR_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Collector Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final CollectorTypes[] VALUES_ARRAY = new CollectorTypes[] { FLAT_PLANE_COLLECTOR,
+			EVACUATED_TUBE_COLLECTOR, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Collector Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<CollectorTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Collector Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static CollectorTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CollectorTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Collector Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static CollectorTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CollectorTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Collector Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static CollectorTypes get(int value) {
+		switch (value) {
+		case FLAT_PLANE_COLLECTOR_VALUE:
+			return FLAT_PLANE_COLLECTOR;
+		case EVACUATED_TUBE_COLLECTOR_VALUE:
+			return EVACUATED_TUBE_COLLECTOR;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private CollectorTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //CollectorTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/CombinedHeatPower.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/CombinedHeatPower.java
new file mode 100644
index 0000000000000000000000000000000000000000..82ab8250fe99341619d6c34aba3c147d94ecd33a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/CombinedHeatPower.java
@@ -0,0 +1,150 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Combined Heat Power</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiency <em>Thermal Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiency <em>Electrical Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getInstalledElectricalPower <em>Installed Electrical Power</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiencyPartLoad <em>Electrical Efficiency Part Load</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiencyPartLoad <em>Thermal Efficiency Part Load</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getCombinedHeatPower()
+ * @model
+ * @generated
+ */
+public interface CombinedHeatPower extends ThermalEnergyDevice {
+	/**
+	 * Returns the value of the '<em><b>Thermal Efficiency</b></em>' attribute.
+	 * The default value is <code>"0.4"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Thermal Efficiency</em>' attribute.
+	 * @see #setThermalEfficiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCombinedHeatPower_ThermalEfficiency()
+	 * @model default="0.4" required="true"
+	 * @generated
+	 */
+	double getThermalEfficiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiency <em>Thermal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Thermal Efficiency</em>' attribute.
+	 * @see #getThermalEfficiency()
+	 * @generated
+	 */
+	void setThermalEfficiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Electrical Efficiency</b></em>' attribute.
+	 * The default value is <code>"0.4"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Electrical Efficiency</em>' attribute.
+	 * @see #setElectricalEfficiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCombinedHeatPower_ElectricalEfficiency()
+	 * @model default="0.4" required="true"
+	 * @generated
+	 */
+	double getElectricalEfficiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiency <em>Electrical Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Electrical Efficiency</em>' attribute.
+	 * @see #getElectricalEfficiency()
+	 * @generated
+	 */
+	void setElectricalEfficiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Installed Electrical Power</b></em>' attribute.
+	 * The default value is <code>"kW"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kW
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Installed Electrical Power</em>' attribute.
+	 * @see #setInstalledElectricalPower(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCombinedHeatPower_InstalledElectricalPower()
+	 * @model default="kW" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getInstalledElectricalPower();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getInstalledElectricalPower <em>Installed Electrical Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Installed Electrical Power</em>' attribute.
+	 * @see #getInstalledElectricalPower()
+	 * @generated
+	 */
+	void setInstalledElectricalPower(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Electrical Efficiency Part Load</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Electrical Efficiency Part Load</em>' containment reference.
+	 * @see #setElectricalEfficiencyPartLoad(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCombinedHeatPower_ElectricalEfficiencyPartLoad()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Characteristic getElectricalEfficiencyPartLoad();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiencyPartLoad <em>Electrical Efficiency Part Load</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Electrical Efficiency Part Load</em>' containment reference.
+	 * @see #getElectricalEfficiencyPartLoad()
+	 * @generated
+	 */
+	void setElectricalEfficiencyPartLoad(Characteristic value);
+
+	/**
+	 * Returns the value of the '<em><b>Thermal Efficiency Part Load</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Thermal Efficiency Part Load</em>' containment reference.
+	 * @see #setThermalEfficiencyPartLoad(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCombinedHeatPower_ThermalEfficiencyPartLoad()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Characteristic getThermalEfficiencyPartLoad();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiencyPartLoad <em>Thermal Efficiency Part Load</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Thermal Efficiency Part Load</em>' containment reference.
+	 * @see #getThermalEfficiencyPartLoad()
+	 * @generated
+	 */
+	void setThermalEfficiencyPartLoad(Characteristic value);
+
+} // CombinedHeatPower
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Cost.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Cost.java
new file mode 100644
index 0000000000000000000000000000000000000000..822e56b2a82ae58ec246e39227a846b04472429d
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Cost.java
@@ -0,0 +1,270 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cost</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getDatasource <em>Datasource</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getInvestmentCost <em>Investment Cost</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getOtherInvestmentCost <em>Other Investment Cost</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getPersonnelHours <em>Personnel Hours</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getPersonnelCostShare <em>Personnel Cost Share</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Cost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost()
+ * @model
+ * @generated
+ */
+public interface Cost extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Datasource</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Datasource</em>' attribute.
+	 * @see #setDatasource(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_Datasource()
+	 * @model
+	 * @generated
+	 */
+	String getDatasource();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getDatasource <em>Datasource</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Datasource</em>' attribute.
+	 * @see #getDatasource()
+	 * @generated
+	 */
+	void setDatasource(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Investment Cost</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Investment Cost</em>' containment reference.
+	 * @see #setInvestmentCost(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_InvestmentCost()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Characteristic getInvestmentCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getInvestmentCost <em>Investment Cost</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Investment Cost</em>' containment reference.
+	 * @see #getInvestmentCost()
+	 * @generated
+	 */
+	void setInvestmentCost(Characteristic value);
+
+	/**
+	 * Returns the value of the '<em><b>Other Investment Cost</b></em>' attribute.
+	 * The default value is <code>"0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other Investment Cost</em>' attribute.
+	 * @see #setOtherInvestmentCost(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_OtherInvestmentCost()
+	 * @model default="0"
+	 * @generated
+	 */
+	double getOtherInvestmentCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getOtherInvestmentCost <em>Other Investment Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other Investment Cost</em>' attribute.
+	 * @see #getOtherInvestmentCost()
+	 * @generated
+	 */
+	void setOtherInvestmentCost(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Personnel Hours</b></em>' attribute.
+	 * The default value is <code>"10 h"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Personnel Hours</em>' attribute.
+	 * @see #setPersonnelHours(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_PersonnelHours()
+	 * @model default="10 h" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getPersonnelHours();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getPersonnelHours <em>Personnel Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Personnel Hours</em>' attribute.
+	 * @see #getPersonnelHours()
+	 * @generated
+	 */
+	void setPersonnelHours(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Personnel Cost Share</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Personnel Cost Share</em>' attribute.
+	 * @see #setPersonnelCostShare(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_PersonnelCostShare()
+	 * @model
+	 * @generated
+	 */
+	double getPersonnelCostShare();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getPersonnelCostShare <em>Personnel Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Personnel Cost Share</em>' attribute.
+	 * @see #getPersonnelCostShare()
+	 * @generated
+	 */
+	void setPersonnelCostShare(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Administration And Other Cost Share</b></em>' attribute.
+	 * The default value is <code>"0.015"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share of investment cost
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Administration And Other Cost Share</em>' attribute.
+	 * @see #setAdministrationAndOtherCostShare(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_AdministrationAndOtherCostShare()
+	 * @model default="0.015"
+	 * @generated
+	 */
+	double getAdministrationAndOtherCostShare();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Administration And Other Cost Share</em>' attribute.
+	 * @see #getAdministrationAndOtherCostShare()
+	 * @generated
+	 */
+	void setAdministrationAndOtherCostShare(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Maintenance Cost Share</b></em>' attribute.
+	 * The default value is <code>"0.015"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share of investment cost
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Maintenance Cost Share</em>' attribute.
+	 * @see #setMaintenanceCostShare(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_MaintenanceCostShare()
+	 * @model default="0.015"
+	 * @generated
+	 */
+	double getMaintenanceCostShare();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Maintenance Cost Share</em>' attribute.
+	 * @see #getMaintenanceCostShare()
+	 * @generated
+	 */
+	void setMaintenanceCostShare(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Component Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Component Name</em>' attribute.
+	 * @see #setComponentName(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_ComponentName()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getComponentName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Component Name</em>' attribute.
+	 * @see #getComponentName()
+	 * @generated
+	 */
+	void setComponentName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * i.e. what is included in which cost category
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_Description()
+	 * @model
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Heat Source</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.TypeOfHeatSource}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Heat Source</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+	 * @see #setHeatSource(TypeOfHeatSource)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_HeatSource()
+	 * @model
+	 * @generated
+	 */
+	TypeOfHeatSource getHeatSource();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Heat Source</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+	 * @see #getHeatSource()
+	 * @generated
+	 */
+	void setHeatSource(TypeOfHeatSource value);
+
+} // Cost
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/DataPoint.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/DataPoint.java
new file mode 100644
index 0000000000000000000000000000000000000000..9fd2a2d3fbdb741bba139f947ef82e65f3215200
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/DataPoint.java
@@ -0,0 +1,69 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.DataPoint#getX <em>X</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.DataPoint#getY <em>Y</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getDataPoint()
+ * @model
+ * @generated
+ */
+public interface DataPoint extends EObject {
+	/**
+	 * Returns the value of the '<em><b>X</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>X</em>' attribute.
+	 * @see #setX(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getDataPoint_X()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.Double"
+	 * @generated
+	 */
+	double getX();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.DataPoint#getX <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>X</em>' attribute.
+	 * @see #getX()
+	 * @generated
+	 */
+	void setX(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Y</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Y</em>' attribute.
+	 * @see #setY(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getDataPoint_Y()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.Double"
+	 * @generated
+	 */
+	double getY();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.DataPoint#getY <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Y</em>' attribute.
+	 * @see #getY()
+	 * @generated
+	 */
+	void setY(double value);
+
+} // DataPoint
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ElectricalStorage.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ElectricalStorage.java
new file mode 100644
index 0000000000000000000000000000000000000000..050848c4dd0e84542eefdf1cada3ab704389a91a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ElectricalStorage.java
@@ -0,0 +1,250 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Electrical Storage</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getElectricalStorageType <em>Electrical Storage Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryCapacity <em>Battery Capacity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryVoltage <em>Battery Voltage</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryLifeCycle <em>Battery Life Cycle</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getSelfDischarge <em>Self Discharge</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getInverterIncluded <em>Inverter Included</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryEffiency <em>Battery Effiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ElectricalStorage#getEnergyContent <em>Energy Content</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage()
+ * @model
+ * @generated
+ */
+public interface ElectricalStorage extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Electrical Storage Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.ElectricalStorageTypes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Electrical Storage Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorageTypes
+	 * @see #setElectricalStorageType(ElectricalStorageTypes)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_ElectricalStorageType()
+	 * @model required="true"
+	 * @generated
+	 */
+	ElectricalStorageTypes getElectricalStorageType();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getElectricalStorageType <em>Electrical Storage Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Electrical Storage Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorageTypes
+	 * @see #getElectricalStorageType()
+	 * @generated
+	 */
+	void setElectricalStorageType(ElectricalStorageTypes value);
+
+	/**
+	 * Returns the value of the '<em><b>Battery Capacity</b></em>' attribute.
+	 * The default value is <code>"A*h"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Ah
+	 * 
+	 * The storage capacity of the battery is  represented in Ampere 
+	 * hour or Ah. If V is the battery voltage then the energy storage 
+	 * capacity of the  battery can  be Ah  x V  = Watt-hour.  Usually 
+	 * battery capacity will be specified for a given discharge/charge 
+	 * rating or C  rating. The  actual capacity depends  on operating 
+	 * conditions such as load, temperature, etc. 
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Battery Capacity</em>' attribute.
+	 * @see #setBatteryCapacity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_BatteryCapacity()
+	 * @model default="A*h" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getBatteryCapacity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryCapacity <em>Battery Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Battery Capacity</em>' attribute.
+	 * @see #getBatteryCapacity()
+	 * @generated
+	 */
+	void setBatteryCapacity(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Battery Voltage</b></em>' attribute.
+	 * The default value is <code>"V"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * V
+	 * 
+	 * The terminal voltage during operating condition  is known as 
+	 * nominal  voltage  or  working  voltage.  This  voltage  will  be 
+	 * specified by manufactures. It may be 3V, 6V, 12V, 24Vetc 
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Battery Voltage</em>' attribute.
+	 * @see #setBatteryVoltage(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_BatteryVoltage()
+	 * @model default="V" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getBatteryVoltage();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryVoltage <em>Battery Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Battery Voltage</em>' attribute.
+	 * @see #getBatteryVoltage()
+	 * @generated
+	 */
+	void setBatteryVoltage(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Battery Life Cycle</b></em>' attribute.
+	 * The default value is <code>"7000"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * It  is  the  number  of  complete  charge  –  discharge  cycles  a 
+	 * battery can  work before the  nominal capacity  decreases less 
+	 * than 80% of its rated  initial capacity. After the  specified life 
+	 * cycle, the battery will  work with reduced  capacity. It can be 
+	 * used but the capacity will be lower. 
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Battery Life Cycle</em>' attribute.
+	 * @see #setBatteryLifeCycle(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_BatteryLifeCycle()
+	 * @model default="7000"
+	 * @generated
+	 */
+	double getBatteryLifeCycle();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryLifeCycle <em>Battery Life Cycle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Battery Life Cycle</em>' attribute.
+	 * @see #getBatteryLifeCycle()
+	 * @generated
+	 */
+	void setBatteryLifeCycle(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Self Discharge</b></em>' attribute.
+	 * The default value is <code>"0.2"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * rate
+	 * 
+	 * It is  the electrical  capacity lost  when a  battery is  not being 
+	 * used due to internal electrochemical process with the battery. 
+	 * The self discharge increases with increase of temperature. The 
+	 * batteries  can  be stored  at lower  temperatures to  reduce  self 
+	 * discharge. 
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Self Discharge</em>' attribute.
+	 * @see #setSelfDischarge(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_SelfDischarge()
+	 * @model default="0.2"
+	 * @generated
+	 */
+	double getSelfDischarge();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getSelfDischarge <em>Self Discharge</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Self Discharge</em>' attribute.
+	 * @see #getSelfDischarge()
+	 * @generated
+	 */
+	void setSelfDischarge(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Inverter Included</b></em>' attribute.
+	 * The default value is <code>"false"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inverter Included</em>' attribute.
+	 * @see #setInverterIncluded(Boolean)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_InverterIncluded()
+	 * @model default="false"
+	 * @generated
+	 */
+	Boolean getInverterIncluded();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getInverterIncluded <em>Inverter Included</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inverter Included</em>' attribute.
+	 * @see #getInverterIncluded()
+	 * @generated
+	 */
+	void setInverterIncluded(Boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Battery Effiency</b></em>' attribute.
+	 * The default value is <code>"0.8"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Battery Effiency</em>' attribute.
+	 * @see #setBatteryEffiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_BatteryEffiency()
+	 * @model default="0.8"
+	 * @generated
+	 */
+	double getBatteryEffiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryEffiency <em>Battery Effiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Battery Effiency</em>' attribute.
+	 * @see #getBatteryEffiency()
+	 * @generated
+	 */
+	void setBatteryEffiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Energy Content</b></em>' attribute.
+	 * The default value is <code>"5 kW*h"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Energy Content</em>' attribute.
+	 * @see #setEnergyContent(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorage_EnergyContent()
+	 * @model default="5 kW*h" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getEnergyContent();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getEnergyContent <em>Energy Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Energy Content</em>' attribute.
+	 * @see #getEnergyContent()
+	 * @generated
+	 */
+	void setEnergyContent(NullableQuantity value);
+
+} // ElectricalStorage
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ElectricalStorageTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ElectricalStorageTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bd4ffd726473aca098aeb3d0e285a009f5fa30b
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ElectricalStorageTypes.java
@@ -0,0 +1,272 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Electrical Storage Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricalStorageTypes()
+ * @model
+ * @generated
+ */
+public enum ElectricalStorageTypes implements Enumerator {
+	/**
+	 * The '<em><b>Lithium Ion</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Lithium ion
+	 * <!-- end-model-doc -->
+	 * @see #LITHIUM_ION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LITHIUM_ION(0, "lithiumIon", "lithiumIon"),
+
+	/**
+	 * The '<em><b>Lead Acid</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LEAD_ACID_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LEAD_ACID(1, "leadAcid", "leadAcid"),
+
+	/**
+	 * The '<em><b>Ni MH</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Nickel – Metal hydride
+	 * <!-- end-model-doc -->
+	 * @see #NI_MH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NI_MH(2, "niMH", "niMH"),
+
+	/**
+	 * The '<em><b>Lithium Polymer</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * 
+	 * <!-- end-model-doc -->
+	 * @see #LITHIUM_POLYMER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LITHIUM_POLYMER(3, "lithiumPolymer", "lithiumPolymer");
+
+	/**
+	 * The '<em><b>Lithium Ion</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Lithium ion
+	 * <!-- end-model-doc -->
+	 * @see #LITHIUM_ION
+	 * @model name="lithiumIon"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LITHIUM_ION_VALUE = 0;
+
+	/**
+	 * The '<em><b>Lead Acid</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LEAD_ACID
+	 * @model name="leadAcid"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LEAD_ACID_VALUE = 1;
+
+	/**
+	 * The '<em><b>Ni MH</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Nickel – Metal hydride
+	 * <!-- end-model-doc -->
+	 * @see #NI_MH
+	 * @model name="niMH"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NI_MH_VALUE = 2;
+
+	/**
+	 * The '<em><b>Lithium Polymer</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * 
+	 * <!-- end-model-doc -->
+	 * @see #LITHIUM_POLYMER
+	 * @model name="lithiumPolymer"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LITHIUM_POLYMER_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Electrical Storage Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ElectricalStorageTypes[] VALUES_ARRAY = new ElectricalStorageTypes[] { LITHIUM_ION, LEAD_ACID,
+			NI_MH, LITHIUM_POLYMER, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Electrical Storage Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ElectricalStorageTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Electrical Storage Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ElectricalStorageTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ElectricalStorageTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Electrical Storage Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ElectricalStorageTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ElectricalStorageTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Electrical Storage Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ElectricalStorageTypes get(int value) {
+		switch (value) {
+		case LITHIUM_ION_VALUE:
+			return LITHIUM_ION;
+		case LEAD_ACID_VALUE:
+			return LEAD_ACID;
+		case NI_MH_VALUE:
+			return NI_MH;
+		case LITHIUM_POLYMER_VALUE:
+			return LITHIUM_POLYMER;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private ElectricalStorageTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //ElectricalStorageTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Electricity.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Electricity.java
new file mode 100644
index 0000000000000000000000000000000000000000..594ee831a0ae5ed5b05397c2e5853633568a760e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Electricity.java
@@ -0,0 +1,44 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Electricity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electricity#getRenewableShare <em>Renewable Share</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricity()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Electricity extends EnergyCarrier {
+
+	/**
+	 * Returns the value of the '<em><b>Renewable Share</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Renewable Share</em>' attribute.
+	 * @see #setRenewableShare(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectricity_RenewableShare()
+	 * @model
+	 * @generated
+	 */
+	double getRenewableShare();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electricity#getRenewableShare <em>Renewable Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Renewable Share</em>' attribute.
+	 * @see #getRenewableShare()
+	 * @generated
+	 */
+	void setRenewableShare(double value);
+} // Electricity
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Electrolyzer.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Electrolyzer.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f971052ca9244a8ced5c65ff35f279b05cc4a48
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Electrolyzer.java
@@ -0,0 +1,208 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Electrolyzer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electrolyzer#getCellType <em>Cell Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electrolyzer#getCellArea <em>Cell Area</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electrolyzer#getNumberOfCells <em>Number Of Cells</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electrolyzer#getMaxOperatingCurrentDensity <em>Max Operating Current Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electrolyzer#getMinOperatingCurrentDensity <em>Min Operating Current Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electrolyzer#getOverloadCapacity <em>Overload Capacity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Electrolyzer#getNominalCellVoltage <em>Nominal Cell Voltage</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer()
+ * @model
+ * @generated
+ */
+public interface Electrolyzer extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Cell Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.cellTypesElectrolyzer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cell Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.cellTypesElectrolyzer
+	 * @see #setCellType(cellTypesElectrolyzer)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_CellType()
+	 * @model
+	 * @generated
+	 */
+	cellTypesElectrolyzer getCellType();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electrolyzer#getCellType <em>Cell Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cell Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.cellTypesElectrolyzer
+	 * @see #getCellType()
+	 * @generated
+	 */
+	void setCellType(cellTypesElectrolyzer value);
+
+	/**
+	 * Returns the value of the '<em><b>Cell Area</b></em>' attribute.
+	 * The default value is <code>"50 cm\u00b2"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * cm²
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Cell Area</em>' attribute.
+	 * @see #setCellArea(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_CellArea()
+	 * @model default="50 cm\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getCellArea();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electrolyzer#getCellArea <em>Cell Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cell Area</em>' attribute.
+	 * @see #getCellArea()
+	 * @generated
+	 */
+	void setCellArea(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Number Of Cells</b></em>' attribute.
+	 * The default value is <code>"5"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Number Of Cells</em>' attribute.
+	 * @see #setNumberOfCells(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_NumberOfCells()
+	 * @model default="5" required="true"
+	 * @generated
+	 */
+	double getNumberOfCells();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electrolyzer#getNumberOfCells <em>Number Of Cells</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Number Of Cells</em>' attribute.
+	 * @see #getNumberOfCells()
+	 * @generated
+	 */
+	void setNumberOfCells(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Operating Current Density</b></em>' attribute.
+	 * The default value is <code>"3 A/cm\u00b2"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * A/cm²
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Max Operating Current Density</em>' attribute.
+	 * @see #setMaxOperatingCurrentDensity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_MaxOperatingCurrentDensity()
+	 * @model default="3 A/cm\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getMaxOperatingCurrentDensity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electrolyzer#getMaxOperatingCurrentDensity <em>Max Operating Current Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Operating Current Density</em>' attribute.
+	 * @see #getMaxOperatingCurrentDensity()
+	 * @generated
+	 */
+	void setMaxOperatingCurrentDensity(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Min Operating Current Density</b></em>' attribute.
+	 * The default value is <code>"0.3 A/cm\u00b2"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * A/cm²
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Min Operating Current Density</em>' attribute.
+	 * @see #setMinOperatingCurrentDensity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_MinOperatingCurrentDensity()
+	 * @model default="0.3 A/cm\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getMinOperatingCurrentDensity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electrolyzer#getMinOperatingCurrentDensity <em>Min Operating Current Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min Operating Current Density</em>' attribute.
+	 * @see #getMinOperatingCurrentDensity()
+	 * @generated
+	 */
+	void setMinOperatingCurrentDensity(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Overload Capacity</b></em>' attribute.
+	 * The default value is <code>"120 %"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * percent
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Overload Capacity</em>' attribute.
+	 * @see #setOverloadCapacity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_OverloadCapacity()
+	 * @model default="120 %" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getOverloadCapacity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electrolyzer#getOverloadCapacity <em>Overload Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Overload Capacity</em>' attribute.
+	 * @see #getOverloadCapacity()
+	 * @generated
+	 */
+	void setOverloadCapacity(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Nominal Cell Voltage</b></em>' attribute.
+	 * The default value is <code>"1.94 V"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * V
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Nominal Cell Voltage</em>' attribute.
+	 * @see #setNominalCellVoltage(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getElectrolyzer_NominalCellVoltage()
+	 * @model default="1.94 V" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getNominalCellVoltage();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Electrolyzer#getNominalCellVoltage <em>Nominal Cell Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Cell Voltage</em>' attribute.
+	 * @see #getNominalCellVoltage()
+	 * @generated
+	 */
+	void setNominalCellVoltage(NullableQuantity value);
+
+} // Electrolyzer
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnCompFactory.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnCompFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..393c775101bcc69ba598e8cbc7898a97eee6f593
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnCompFactory.java
@@ -0,0 +1,348 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage
+ * @generated
+ */
+public interface EnCompFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EnCompFactory eINSTANCE = de.hftstuttgart.energycomponents.impl.EnCompFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Energy Components Catalog</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Energy Components Catalog</em>'.
+	 * @generated
+	 */
+	EnergyComponentsCatalog createEnergyComponentsCatalog();
+
+	/**
+	 * Returns a new object of class '<em>Thermal Storage</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Thermal Storage</em>'.
+	 * @generated
+	 */
+	ThermalStorage createThermalStorage();
+
+	/**
+	 * Returns a new object of class '<em>Electrical Storage</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Electrical Storage</em>'.
+	 * @generated
+	 */
+	ElectricalStorage createElectricalStorage();
+
+	/**
+	 * Returns a new object of class '<em>Combined Heat Power</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Combined Heat Power</em>'.
+	 * @generated
+	 */
+	CombinedHeatPower createCombinedHeatPower();
+
+	/**
+	 * Returns a new object of class '<em>Heat Pump</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Heat Pump</em>'.
+	 * @generated
+	 */
+	HeatPump createHeatPump();
+
+	/**
+	 * Returns a new object of class '<em>Boiler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Boiler</em>'.
+	 * @generated
+	 */
+	Boiler createBoiler();
+
+	/**
+	 * Returns a new object of class '<em>Solar Thermal Collector</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Solar Thermal Collector</em>'.
+	 * @generated
+	 */
+	SolarThermalCollector createSolarThermalCollector();
+
+	/**
+	 * Returns a new object of class '<em>Electrolyzer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Electrolyzer</em>'.
+	 * @generated
+	 */
+	Electrolyzer createElectrolyzer();
+
+	/**
+	 * Returns a new object of class '<em>Hydrogen Compressor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hydrogen Compressor</em>'.
+	 * @generated
+	 */
+	HydrogenCompressor createHydrogenCompressor();
+
+	/**
+	 * Returns a new object of class '<em>Hydrogen Storage</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hydrogen Storage</em>'.
+	 * @generated
+	 */
+	HydrogenStorage createHydrogenStorage();
+
+	/**
+	 * Returns a new object of class '<em>Fuel Cell</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Fuel Cell</em>'.
+	 * @generated
+	 */
+	FuelCell createFuelCell();
+
+	/**
+	 * Returns a new object of class '<em>Fossil Fuel</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Fossil Fuel</em>'.
+	 * @generated
+	 */
+	FossilFuel createFossilFuel();
+
+	/**
+	 * Returns a new object of class '<em>Hydrogen</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hydrogen</em>'.
+	 * @generated
+	 */
+	Hydrogen createHydrogen();
+
+	/**
+	 * Returns a new object of class '<em>Bio Fuel</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Bio Fuel</em>'.
+	 * @generated
+	 */
+	BioFuel createBioFuel();
+
+	/**
+	 * Returns a new object of class '<em>Wind Turbine</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Wind Turbine</em>'.
+	 * @generated
+	 */
+	WindTurbine createWindTurbine();
+
+	/**
+	 * Returns a new object of class '<em>Photovoltaic Module</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Photovoltaic Module</em>'.
+	 * @generated
+	 */
+	PhotovoltaicModule createPhotovoltaicModule();
+
+	/**
+	 * Returns a new object of class '<em>Inverter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Inverter</em>'.
+	 * @generated
+	 */
+	Inverter createInverter();
+
+	/**
+	 * Returns a new object of class '<em>Heat Exchanger</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Heat Exchanger</em>'.
+	 * @generated
+	 */
+	HeatExchanger createHeatExchanger();
+
+	/**
+	 * Returns a new object of class '<em>Geothermal Heat Exchanger</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Geothermal Heat Exchanger</em>'.
+	 * @generated
+	 */
+	GeothermalHeatExchanger createGeothermalHeatExchanger();
+
+	/**
+	 * Returns a new object of class '<em>Medium</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Medium</em>'.
+	 * @generated
+	 */
+	Medium createMedium();
+
+	/**
+	 * Returns a new object of class '<em>Linear Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Linear Function</em>'.
+	 * @generated
+	 */
+	LinearFunction createLinearFunction();
+
+	/**
+	 * Returns a new object of class '<em>Data Point</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Data Point</em>'.
+	 * @generated
+	 */
+	DataPoint createDataPoint();
+
+	/**
+	 * Returns a new object of class '<em>Table Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Table Function</em>'.
+	 * @generated
+	 */
+	TableFunction createTableFunction();
+
+	/**
+	 * Returns a new object of class '<em>Exponential Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Exponential Function</em>'.
+	 * @generated
+	 */
+	ExponentialFunction createExponentialFunction();
+
+	/**
+	 * Returns a new object of class '<em>Table Characteristic</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Table Characteristic</em>'.
+	 * @generated
+	 */
+	TableCharacteristic createTableCharacteristic();
+
+	/**
+	 * Returns a new object of class '<em>Linear Characteristic</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Linear Characteristic</em>'.
+	 * @generated
+	 */
+	LinearCharacteristic createLinearCharacteristic();
+
+	/**
+	 * Returns a new object of class '<em>Exponentional Characteristic</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Exponentional Characteristic</em>'.
+	 * @generated
+	 */
+	ExponentionalCharacteristic createExponentionalCharacteristic();
+
+	/**
+	 * Returns a new object of class '<em>Manufacturer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Manufacturer</em>'.
+	 * @generated
+	 */
+	Manufacturer createManufacturer();
+
+	/**
+	 * Returns a new object of class '<em>Polynomial Characteristic</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Polynomial Characteristic</em>'.
+	 * @generated
+	 */
+	PolynomialCharacteristic createPolynomialCharacteristic();
+
+	/**
+	 * Returns a new object of class '<em>Polynomial Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Polynomial Function</em>'.
+	 * @generated
+	 */
+	PolynomialFunction createPolynomialFunction();
+
+	/**
+	 * Returns a new object of class '<em>Material</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Material</em>'.
+	 * @generated
+	 */
+	Material createMaterial();
+
+	/**
+	 * Returns a new object of class '<em>Energy Components Cost Catalog</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Energy Components Cost Catalog</em>'.
+	 * @generated
+	 */
+	EnergyComponentsCostCatalog createEnergyComponentsCostCatalog();
+
+	/**
+	 * Returns a new object of class '<em>Cost</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cost</em>'.
+	 * @generated
+	 */
+	Cost createCost();
+
+	/**
+	 * Returns a new object of class '<em>Power Characteristic</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Power Characteristic</em>'.
+	 * @generated
+	 */
+	PowerCharacteristic createPowerCharacteristic();
+
+	/**
+	 * Returns a new object of class '<em>Power Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Power Function</em>'.
+	 * @generated
+	 */
+	PowerFunction createPowerFunction();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	EnCompPackage getEnCompPackage();
+
+} //EnCompFactory
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnCompPackage.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnCompPackage.java
new file mode 100644
index 0000000000000000000000000000000000000000..392ea7bca6f629ca68f5bb9498e4f5c47b2971dc
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnCompPackage.java
@@ -0,0 +1,7689 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface EnCompPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "energycomponents";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "https://www.hft-stuttgart.de/energycomponents";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "encomp";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EnCompPackage eINSTANCE = de.hftstuttgart.energycomponents.impl.EnCompPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.EnergyComponentImpl <em>Energy Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.EnergyComponentImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyComponent()
+	 * @generated
+	 */
+	int ENERGY_COMPONENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__DESCRIPTION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__MODEL_NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__REVISION_YEAR = 2;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__TECHNICAL_LIFETIME = 3;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__MANUFACTURER = 4;
+
+	/**
+	 * The number of structural features of the '<em>Energy Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Energy Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl <em>Energy Components Catalog</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	int ENERGY_COMPONENTS_CATALOG = 1;
+
+	/**
+	 * The feature id for the '<em><b>Author</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__AUTHOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Bio Fuels</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__BIO_FUELS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Media</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__MEDIA = 2;
+
+	/**
+	 * The feature id for the '<em><b>Combined Heat Power Utilities</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES = 3;
+
+	/**
+	 * The feature id for the '<em><b>Boilers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__BOILERS = 4;
+
+	/**
+	 * The feature id for the '<em><b>Photovoltaic Modules</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES = 5;
+
+	/**
+	 * The feature id for the '<em><b>Solar Thermal Collectors</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS = 6;
+
+	/**
+	 * The feature id for the '<em><b>Wind Turbines</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__WIND_TURBINES = 7;
+
+	/**
+	 * The feature id for the '<em><b>Geothermal Heat Exchangers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS = 8;
+
+	/**
+	 * The feature id for the '<em><b>Heat Pumps</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS = 9;
+
+	/**
+	 * The feature id for the '<em><b>Inverters</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__INVERTERS = 10;
+
+	/**
+	 * The feature id for the '<em><b>Heat Exchangers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS = 11;
+
+	/**
+	 * The feature id for the '<em><b>Electrolyzers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS = 12;
+
+	/**
+	 * The feature id for the '<em><b>Hydrogen Compressors</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS = 13;
+
+	/**
+	 * The feature id for the '<em><b>Fuel Cells</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__FUEL_CELLS = 14;
+
+	/**
+	 * The feature id for the '<em><b>Thermal Storages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES = 15;
+
+	/**
+	 * The feature id for the '<em><b>Power Storages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__POWER_STORAGES = 16;
+
+	/**
+	 * The feature id for the '<em><b>Hydrogen Storages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES = 17;
+
+	/**
+	 * The feature id for the '<em><b>Fossil Fuels</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS = 18;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__MANUFACTURERS = 19;
+
+	/**
+	 * The feature id for the '<em><b>Materials</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__MATERIALS = 20;
+
+	/**
+	 * The feature id for the '<em><b>Energycomponentscostcatalog</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG = 21;
+
+	/**
+	 * The feature id for the '<em><b>Energycarriers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS = 22;
+
+	/**
+	 * The number of structural features of the '<em>Energy Components Catalog</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG_FEATURE_COUNT = 23;
+
+	/**
+	 * The number of operations of the '<em>Energy Components Catalog</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl <em>Thermal Storage</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ThermalStorageImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getThermalStorage()
+	 * @generated
+	 */
+	int THERMAL_STORAGE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Volume</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__VOLUME = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Thermal Storage Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__THERMAL_STORAGE_TYPE = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Max Temp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__MAX_TEMP = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Tank Thickness</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__TANK_THICKNESS = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Insulation Thickness</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__INSULATION_THICKNESS = ENERGY_COMPONENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Uses Medium</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__USES_MEDIUM = ENERGY_COMPONENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Insulation Material</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__INSULATION_MATERIAL = ENERGY_COMPONENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__HEIGHT = ENERGY_COMPONENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Tank Material</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE__TANK_MATERIAL = ENERGY_COMPONENT_FEATURE_COUNT + 8;
+
+	/**
+	 * The number of structural features of the '<em>Thermal Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 9;
+
+	/**
+	 * The number of operations of the '<em>Thermal Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_STORAGE_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl <em>Electrical Storage</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectricalStorage()
+	 * @generated
+	 */
+	int ELECTRICAL_STORAGE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Electrical Storage Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Battery Capacity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__BATTERY_CAPACITY = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Battery Voltage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__BATTERY_VOLTAGE = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Battery Life Cycle</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Self Discharge</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__SELF_DISCHARGE = ENERGY_COMPONENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Inverter Included</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__INVERTER_INCLUDED = ENERGY_COMPONENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Battery Effiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__BATTERY_EFFIENCY = ENERGY_COMPONENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Energy Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE__ENERGY_CONTENT = ENERGY_COMPONENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>Electrical Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 8;
+
+	/**
+	 * The number of operations of the '<em>Electrical Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICAL_STORAGE_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ThermalEnergyDeviceImpl <em>Thermal Energy Device</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ThermalEnergyDeviceImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getThermalEnergyDevice()
+	 * @generated
+	 */
+	int THERMAL_ENERGY_DEVICE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Modulation Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__MODULATION_RANGE = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Fuel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE__FUEL = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Thermal Energy Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Thermal Energy Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THERMAL_ENERGY_DEVICE_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl <em>Combined Heat Power</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCombinedHeatPower()
+	 * @generated
+	 */
+	int COMBINED_HEAT_POWER = 4;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__DESCRIPTION = THERMAL_ENERGY_DEVICE__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__MODEL_NAME = THERMAL_ENERGY_DEVICE__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__REVISION_YEAR = THERMAL_ENERGY_DEVICE__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__TECHNICAL_LIFETIME = THERMAL_ENERGY_DEVICE__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__MANUFACTURER = THERMAL_ENERGY_DEVICE__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__INSTALLED_THERMAL_POWER = THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER;
+
+	/**
+	 * The feature id for the '<em><b>Modulation Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__MODULATION_RANGE = THERMAL_ENERGY_DEVICE__MODULATION_RANGE;
+
+	/**
+	 * The feature id for the '<em><b>Fuel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__FUEL = THERMAL_ENERGY_DEVICE__FUEL;
+
+	/**
+	 * The feature id for the '<em><b>Thermal Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__THERMAL_EFFICIENCY = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Electrical Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Installed Electrical Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Electrical Efficiency Part Load</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Thermal Efficiency Part Load</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Combined Heat Power</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER_FEATURE_COUNT = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Combined Heat Power</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER_OPERATION_COUNT = THERMAL_ENERGY_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.HeatPumpImpl <em>Heat Pump</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.HeatPumpImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHeatPump()
+	 * @generated
+	 */
+	int HEAT_PUMP = 5;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__DESCRIPTION = THERMAL_ENERGY_DEVICE__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__MODEL_NAME = THERMAL_ENERGY_DEVICE__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__REVISION_YEAR = THERMAL_ENERGY_DEVICE__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__TECHNICAL_LIFETIME = THERMAL_ENERGY_DEVICE__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__MANUFACTURER = THERMAL_ENERGY_DEVICE__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__INSTALLED_THERMAL_POWER = THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER;
+
+	/**
+	 * The feature id for the '<em><b>Modulation Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__MODULATION_RANGE = THERMAL_ENERGY_DEVICE__MODULATION_RANGE;
+
+	/**
+	 * The feature id for the '<em><b>Fuel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__FUEL = THERMAL_ENERGY_DEVICE__FUEL;
+
+	/**
+	 * The feature id for the '<em><b>Heat Source</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__HEAT_SOURCE = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Coefficient Of Performance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Power Input</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__POWER_INPUT = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Heat Output</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP__HEAT_OUTPUT = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Heat Pump</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP_FEATURE_COUNT = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Heat Pump</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_PUMP_OPERATION_COUNT = THERMAL_ENERGY_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.BoilerImpl <em>Boiler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.BoilerImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getBoiler()
+	 * @generated
+	 */
+	int BOILER = 6;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__DESCRIPTION = THERMAL_ENERGY_DEVICE__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__MODEL_NAME = THERMAL_ENERGY_DEVICE__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__REVISION_YEAR = THERMAL_ENERGY_DEVICE__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__TECHNICAL_LIFETIME = THERMAL_ENERGY_DEVICE__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__MANUFACTURER = THERMAL_ENERGY_DEVICE__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__INSTALLED_THERMAL_POWER = THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER;
+
+	/**
+	 * The feature id for the '<em><b>Modulation Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__MODULATION_RANGE = THERMAL_ENERGY_DEVICE__MODULATION_RANGE;
+
+	/**
+	 * The feature id for the '<em><b>Fuel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__FUEL = THERMAL_ENERGY_DEVICE__FUEL;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__NOMINAL_EFFICIENCY = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Boiler Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__BOILER_TYPE = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Boiler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER_FEATURE_COUNT = THERMAL_ENERGY_DEVICE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Boiler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER_OPERATION_COUNT = THERMAL_ENERGY_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl <em>Solar Thermal Collector</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getSolarThermalCollector()
+	 * @generated
+	 */
+	int SOLAR_THERMAL_COLLECTOR = 7;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Collector Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Aperture Area</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__APERTURE_AREA = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Optical Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Linear Heat Loss Coefficient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Quadratical Heat Loss Coefficient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT = ENERGY_COMPONENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Solar Thermal Collector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Solar Thermal Collector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_THERMAL_COLLECTOR_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl <em>Electrolyzer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectrolyzer()
+	 * @generated
+	 */
+	int ELECTROLYZER = 8;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Cell Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__CELL_TYPE = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cell Area</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__CELL_AREA = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Number Of Cells</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__NUMBER_OF_CELLS = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Max Operating Current Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Min Operating Current Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY = ENERGY_COMPONENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Overload Capacity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__OVERLOAD_CAPACITY = ENERGY_COMPONENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Cell Voltage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER__NOMINAL_CELL_VOLTAGE = ENERGY_COMPONENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Electrolyzer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of operations of the '<em>Electrolyzer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTROLYZER_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl <em>Hydrogen Compressor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHydrogenCompressor()
+	 * @generated
+	 */
+	int HYDROGEN_COMPRESSOR = 10;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__EFFICIENCY = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Thermodynamic Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Max Pressure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__MAX_PRESSURE = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Max Delivery Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Hydrogen Compressor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Hydrogen Compressor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_COMPRESSOR_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.HydrogenStorageImpl <em>Hydrogen Storage</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.HydrogenStorageImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHydrogenStorage()
+	 * @generated
+	 */
+	int HYDROGEN_STORAGE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Number Of Cylinders</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cylinder Volume</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__CYLINDER_VOLUME = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Pressure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE__NOMINAL_PRESSURE = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Hydrogen Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Hydrogen Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_STORAGE_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.FuelCellImpl <em>Fuel Cell</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.FuelCellImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelCell()
+	 * @generated
+	 */
+	int FUEL_CELL = 12;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_CELL__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_CELL__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_CELL__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_CELL__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_CELL__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The number of structural features of the '<em>Fuel Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_CELL_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Fuel Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_CELL_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl <em>Energy Carrier</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyCarrier()
+	 * @generated
+	 */
+	int ENERGY_CARRIER = 13;
+
+	/**
+	 * The feature id for the '<em><b>Co2 Emissions Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_CARRIER__CO2_EMISSIONS_FACTOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Primary Energy Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_CARRIER__NAME = 2;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_CARRIER__COST = 3;
+
+	/**
+	 * The number of structural features of the '<em>Energy Carrier</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_CARRIER_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Energy Carrier</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_CARRIER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.FuelImpl <em>Fuel</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.FuelImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuel()
+	 * @generated
+	 */
+	int FUEL = 18;
+
+	/**
+	 * The feature id for the '<em><b>Co2 Emissions Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__CO2_EMISSIONS_FACTOR = ENERGY_CARRIER__CO2_EMISSIONS_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Primary Energy Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__PRIMARY_ENERGY_FACTOR = ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__NAME = ENERGY_CARRIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__COST = ENERGY_CARRIER__COST;
+
+	/**
+	 * The feature id for the '<em><b>Net Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__NET_CALORIFIC_VALUE = ENERGY_CARRIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Gross Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__GROSS_CALORIFIC_VALUE = ENERGY_CARRIER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__DENSITY = ENERGY_CARRIER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Fuel Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL__FUEL_TYPE = ENERGY_CARRIER_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Fuel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_FEATURE_COUNT = ENERGY_CARRIER_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Fuel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUEL_OPERATION_COUNT = ENERGY_CARRIER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.FossilFuelImpl <em>Fossil Fuel</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.FossilFuelImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFossilFuel()
+	 * @generated
+	 */
+	int FOSSIL_FUEL = 14;
+
+	/**
+	 * The feature id for the '<em><b>Co2 Emissions Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__CO2_EMISSIONS_FACTOR = FUEL__CO2_EMISSIONS_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Primary Energy Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__PRIMARY_ENERGY_FACTOR = FUEL__PRIMARY_ENERGY_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__NAME = FUEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__COST = FUEL__COST;
+
+	/**
+	 * The feature id for the '<em><b>Net Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__NET_CALORIFIC_VALUE = FUEL__NET_CALORIFIC_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Gross Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__GROSS_CALORIFIC_VALUE = FUEL__GROSS_CALORIFIC_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__DENSITY = FUEL__DENSITY;
+
+	/**
+	 * The feature id for the '<em><b>Fuel Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__FUEL_TYPE = FUEL__FUEL_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Methane Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL__METHANE_CONTENT = FUEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Fossil Fuel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL_FEATURE_COUNT = FUEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Fossil Fuel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOSSIL_FUEL_OPERATION_COUNT = FUEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.HydrogenImpl <em>Hydrogen</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.HydrogenImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHydrogen()
+	 * @generated
+	 */
+	int HYDROGEN = 15;
+
+	/**
+	 * The feature id for the '<em><b>Co2 Emissions Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__CO2_EMISSIONS_FACTOR = FUEL__CO2_EMISSIONS_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Primary Energy Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__PRIMARY_ENERGY_FACTOR = FUEL__PRIMARY_ENERGY_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__NAME = FUEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__COST = FUEL__COST;
+
+	/**
+	 * The feature id for the '<em><b>Net Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__NET_CALORIFIC_VALUE = FUEL__NET_CALORIFIC_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Gross Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__GROSS_CALORIFIC_VALUE = FUEL__GROSS_CALORIFIC_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__DENSITY = FUEL__DENSITY;
+
+	/**
+	 * The feature id for the '<em><b>Fuel Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__FUEL_TYPE = FUEL__FUEL_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Chemical Purity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__CHEMICAL_PURITY = FUEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Hydrogen For Hydrogen Storage</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE = FUEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Hydrogen</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_FEATURE_COUNT = FUEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Hydrogen</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HYDROGEN_OPERATION_COUNT = FUEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ElectricityImpl <em>Electricity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ElectricityImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectricity()
+	 * @generated
+	 */
+	int ELECTRICITY = 16;
+
+	/**
+	 * The feature id for the '<em><b>Co2 Emissions Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICITY__CO2_EMISSIONS_FACTOR = ENERGY_CARRIER__CO2_EMISSIONS_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Primary Energy Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICITY__PRIMARY_ENERGY_FACTOR = ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICITY__NAME = ENERGY_CARRIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICITY__COST = ENERGY_CARRIER__COST;
+
+	/**
+	 * The feature id for the '<em><b>Renewable Share</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICITY__RENEWABLE_SHARE = ENERGY_CARRIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Electricity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICITY_FEATURE_COUNT = ENERGY_CARRIER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Electricity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELECTRICITY_OPERATION_COUNT = ENERGY_CARRIER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.BioFuelImpl <em>Bio Fuel</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.BioFuelImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getBioFuel()
+	 * @generated
+	 */
+	int BIO_FUEL = 17;
+
+	/**
+	 * The feature id for the '<em><b>Co2 Emissions Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__CO2_EMISSIONS_FACTOR = FUEL__CO2_EMISSIONS_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Primary Energy Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__PRIMARY_ENERGY_FACTOR = FUEL__PRIMARY_ENERGY_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__NAME = FUEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__COST = FUEL__COST;
+
+	/**
+	 * The feature id for the '<em><b>Net Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__NET_CALORIFIC_VALUE = FUEL__NET_CALORIFIC_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Gross Calorific Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__GROSS_CALORIFIC_VALUE = FUEL__GROSS_CALORIFIC_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__DENSITY = FUEL__DENSITY;
+
+	/**
+	 * The feature id for the '<em><b>Fuel Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__FUEL_TYPE = FUEL__FUEL_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Water Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__WATER_CONTENT = FUEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Ash Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL__ASH_CONTENT = FUEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Bio Fuel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL_FEATURE_COUNT = FUEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Bio Fuel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BIO_FUEL_OPERATION_COUNT = FUEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.WindTurbineImpl <em>Wind Turbine</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.WindTurbineImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getWindTurbine()
+	 * @generated
+	 */
+	int WIND_TURBINE = 19;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WIND_TURBINE__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WIND_TURBINE__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WIND_TURBINE__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WIND_TURBINE__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WIND_TURBINE__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The number of structural features of the '<em>Wind Turbine</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WIND_TURBINE_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Wind Turbine</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WIND_TURBINE_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl <em>Photovoltaic Module</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPhotovoltaicModule()
+	 * @generated
+	 */
+	int PHOTOVOLTAIC_MODULE = 20;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Cell Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__CELL_TYPE = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__NOMINAL_POWER = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Mpp Voltage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__MPP_VOLTAGE = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Mpp Current</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__MPP_CURRENT = ENERGY_COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY = ENERGY_COMPONENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Module Area</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE__MODULE_AREA = ENERGY_COMPONENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Photovoltaic Module</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of operations of the '<em>Photovoltaic Module</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PHOTOVOLTAIC_MODULE_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.InverterImpl <em>Inverter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.InverterImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getInverter()
+	 * @generated
+	 */
+	int INVERTER = 21;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The number of structural features of the '<em>Inverter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Inverter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.HeatExchangerImpl <em>Heat Exchanger</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.HeatExchangerImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHeatExchanger()
+	 * @generated
+	 */
+	int HEAT_EXCHANGER = 22;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Heat Recovery Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Electricity Consumption</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Heat Exchanger</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Heat Exchanger</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HEAT_EXCHANGER_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.GeothermalHeatExchangerImpl <em>Geothermal Heat Exchanger</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.GeothermalHeatExchangerImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getGeothermalHeatExchanger()
+	 * @generated
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER = 23;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER__DESCRIPTION = ENERGY_COMPONENT__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER__TECHNICAL_LIFETIME = ENERGY_COMPONENT__TECHNICAL_LIFETIME;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER__MANUFACTURER = ENERGY_COMPONENT__MANUFACTURER;
+
+	/**
+	 * The feature id for the '<em><b>Pipe Diameter</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Geothermal Heat Exchanger</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Geothermal Heat Exchanger</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GEOTHERMAL_HEAT_EXCHANGER_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.MediumImpl <em>Medium</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.MediumImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getMedium()
+	 * @generated
+	 */
+	int MEDIUM = 24;
+
+	/**
+	 * The feature id for the '<em><b>Density</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MEDIUM__DENSITY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Heat Capacity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MEDIUM__HEAT_CAPACITY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Evaporation Temperature</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MEDIUM__EVAPORATION_TEMPERATURE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Melting Temperature</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MEDIUM__MELTING_TEMPERATURE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MEDIUM__NAME = 4;
+
+	/**
+	 * The number of structural features of the '<em>Medium</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MEDIUM_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Medium</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MEDIUM_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.LinearFunctionImpl <em>Linear Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.LinearFunctionImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getLinearFunction()
+	 * @generated
+	 */
+	int LINEAR_FUNCTION = 25;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_FUNCTION__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter M</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_FUNCTION__PARAMETER_M = 1;
+
+	/**
+	 * The feature id for the '<em><b>Parameter C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_FUNCTION__PARAMETER_C = 2;
+
+	/**
+	 * The number of structural features of the '<em>Linear Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_FUNCTION_FEATURE_COUNT = 3;
+
+	/**
+	 * The operation id for the '<em>Linearfunction</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_FUNCTION___LINEARFUNCTION__DOUBLE = 0;
+
+	/**
+	 * The number of operations of the '<em>Linear Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_FUNCTION_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.DataPointImpl <em>Data Point</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.DataPointImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getDataPoint()
+	 * @generated
+	 */
+	int DATA_POINT = 26;
+
+	/**
+	 * The feature id for the '<em><b>X</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_POINT__X = 0;
+
+	/**
+	 * The feature id for the '<em><b>Y</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_POINT__Y = 1;
+
+	/**
+	 * The number of structural features of the '<em>Data Point</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_POINT_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Data Point</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_POINT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.TableFunctionImpl <em>Table Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.TableFunctionImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTableFunction()
+	 * @generated
+	 */
+	int TABLE_FUNCTION = 27;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_FUNCTION__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Datapoints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_FUNCTION__DATAPOINTS = 1;
+
+	/**
+	 * The number of structural features of the '<em>Table Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_FUNCTION_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Table Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_FUNCTION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ExponentialFunctionImpl <em>Exponential Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ExponentialFunctionImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getExponentialFunction()
+	 * @generated
+	 */
+	int EXPONENTIAL_FUNCTION = 28;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIAL_FUNCTION__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIAL_FUNCTION__PARAMETER_A = 1;
+
+	/**
+	 * The feature id for the '<em><b>Parameter B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIAL_FUNCTION__PARAMETER_B = 2;
+
+	/**
+	 * The number of structural features of the '<em>Exponential Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIAL_FUNCTION_FEATURE_COUNT = 3;
+
+	/**
+	 * The operation id for the '<em>Exponentialfunction</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIAL_FUNCTION___EXPONENTIALFUNCTION__DOUBLE = 0;
+
+	/**
+	 * The number of operations of the '<em>Exponential Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIAL_FUNCTION_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.CharacteristicImpl <em>Characteristic</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.CharacteristicImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCharacteristic()
+	 * @generated
+	 */
+	int CHARACTERISTIC = 29;
+
+	/**
+	 * The number of structural features of the '<em>Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHARACTERISTIC_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHARACTERISTIC_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.TableCharacteristicImpl <em>Table Characteristic</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.TableCharacteristicImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTableCharacteristic()
+	 * @generated
+	 */
+	int TABLE_CHARACTERISTIC = 30;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_CHARACTERISTIC__FUNCTIONS = CHARACTERISTIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Table Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_CHARACTERISTIC_FEATURE_COUNT = CHARACTERISTIC_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Table Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_CHARACTERISTIC_OPERATION_COUNT = CHARACTERISTIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.LinearCharacteristicImpl <em>Linear Characteristic</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.LinearCharacteristicImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getLinearCharacteristic()
+	 * @generated
+	 */
+	int LINEAR_CHARACTERISTIC = 31;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_CHARACTERISTIC__FUNCTIONS = CHARACTERISTIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Linear Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_CHARACTERISTIC_FEATURE_COUNT = CHARACTERISTIC_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Linear Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_CHARACTERISTIC_OPERATION_COUNT = CHARACTERISTIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ExponentionalCharacteristicImpl <em>Exponentional Characteristic</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ExponentionalCharacteristicImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getExponentionalCharacteristic()
+	 * @generated
+	 */
+	int EXPONENTIONAL_CHARACTERISTIC = 32;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS = CHARACTERISTIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Exponentional Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIONAL_CHARACTERISTIC_FEATURE_COUNT = CHARACTERISTIC_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Exponentional Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPONENTIONAL_CHARACTERISTIC_OPERATION_COUNT = CHARACTERISTIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.ManufacturerImpl <em>Manufacturer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.ManufacturerImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getManufacturer()
+	 * @generated
+	 */
+	int MANUFACTURER = 33;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER__MANUFACTURER_NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Country</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER__COUNTRY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Out Of Business Since</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER__OUT_OF_BUSINESS_SINCE = 2;
+
+	/**
+	 * The number of structural features of the '<em>Manufacturer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Manufacturer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.PolynomialCharacteristicImpl <em>Polynomial Characteristic</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.PolynomialCharacteristicImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPolynomialCharacteristic()
+	 * @generated
+	 */
+	int POLYNOMIAL_CHARACTERISTIC = 34;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_CHARACTERISTIC__FUNCTIONS = CHARACTERISTIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Polynomial Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_CHARACTERISTIC_FEATURE_COUNT = CHARACTERISTIC_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Polynomial Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_CHARACTERISTIC_OPERATION_COUNT = CHARACTERISTIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl <em>Polynomial Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPolynomialFunction()
+	 * @generated
+	 */
+	int POLYNOMIAL_FUNCTION = 35;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_FUNCTION__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_FUNCTION__PARAMETER_A = 1;
+
+	/**
+	 * The feature id for the '<em><b>Parameter B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_FUNCTION__PARAMETER_B = 2;
+
+	/**
+	 * The feature id for the '<em><b>Parameter C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_FUNCTION__PARAMETER_C = 3;
+
+	/**
+	 * The number of structural features of the '<em>Polynomial Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_FUNCTION_FEATURE_COUNT = 4;
+
+	/**
+	 * The operation id for the '<em>Polynomialfunction</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_FUNCTION___POLYNOMIALFUNCTION__DOUBLE = 0;
+
+	/**
+	 * The number of operations of the '<em>Polynomial Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYNOMIAL_FUNCTION_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.MaterialImpl <em>Material</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.MaterialImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getMaterial()
+	 * @generated
+	 */
+	int MATERIAL = 36;
+
+	/**
+	 * The feature id for the '<em><b>Thermal Conductivity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MATERIAL__THERMAL_CONDUCTIVITY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MATERIAL__NAME = 1;
+
+	/**
+	 * The number of structural features of the '<em>Material</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MATERIAL_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Material</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MATERIAL_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl <em>Energy Components Cost Catalog</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyComponentsCostCatalog()
+	 * @generated
+	 */
+	int ENERGY_COMPONENTS_COST_CATALOG = 37;
+
+	/**
+	 * The feature id for the '<em><b>Author</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_COST_CATALOG__AUTHOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR = 1;
+
+	/**
+	 * The feature id for the '<em><b>Cost Categories</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES = 2;
+
+	/**
+	 * The feature id for the '<em><b>Personnel Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST = 3;
+
+	/**
+	 * The number of structural features of the '<em>Energy Components Cost Catalog</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_COST_CATALOG_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Energy Components Cost Catalog</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_COST_CATALOG_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.CostImpl <em>Cost</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.CostImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCost()
+	 * @generated
+	 */
+	int COST = 38;
+
+	/**
+	 * The feature id for the '<em><b>Component Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__COMPONENT_NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__DESCRIPTION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Heat Source</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__HEAT_SOURCE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Datasource</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__DATASOURCE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Investment Cost</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__INVESTMENT_COST = 4;
+
+	/**
+	 * The feature id for the '<em><b>Other Investment Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__OTHER_INVESTMENT_COST = 5;
+
+	/**
+	 * The feature id for the '<em><b>Personnel Hours</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__PERSONNEL_HOURS = 6;
+
+	/**
+	 * The feature id for the '<em><b>Personnel Cost Share</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__PERSONNEL_COST_SHARE = 7;
+
+	/**
+	 * The feature id for the '<em><b>Administration And Other Cost Share</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__ADMINISTRATION_AND_OTHER_COST_SHARE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Maintenance Cost Share</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST__MAINTENANCE_COST_SHARE = 9;
+
+	/**
+	 * The number of structural features of the '<em>Cost</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST_FEATURE_COUNT = 10;
+
+	/**
+	 * The number of operations of the '<em>Cost</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COST_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.PowerCharacteristicImpl <em>Power Characteristic</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.PowerCharacteristicImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPowerCharacteristic()
+	 * @generated
+	 */
+	int POWER_CHARACTERISTIC = 39;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_CHARACTERISTIC__FUNCTIONS = CHARACTERISTIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Power Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_CHARACTERISTIC_FEATURE_COUNT = CHARACTERISTIC_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Power Characteristic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_CHARACTERISTIC_OPERATION_COUNT = CHARACTERISTIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.impl.PowerFunctionImpl <em>Power Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.impl.PowerFunctionImpl
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPowerFunction()
+	 * @generated
+	 */
+	int POWER_FUNCTION = 40;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_FUNCTION__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_FUNCTION__PARAMETER_A = 1;
+
+	/**
+	 * The feature id for the '<em><b>Parameter B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_FUNCTION__PARAMETER_B = 2;
+
+	/**
+	 * The number of structural features of the '<em>Power Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_FUNCTION_FEATURE_COUNT = 3;
+
+	/**
+	 * The operation id for the '<em>Powerfunction</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_FUNCTION___POWERFUNCTION__DOUBLE = 0;
+
+	/**
+	 * The number of operations of the '<em>Power Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POWER_FUNCTION_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.HeatSources <em>Heat Sources</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.HeatSources
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHeatSources()
+	 * @generated
+	 */
+	int HEAT_SOURCES = 41;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.CollectorTypes <em>Collector Types</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.CollectorTypes
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCollectorTypes()
+	 * @generated
+	 */
+	int COLLECTOR_TYPES = 42;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.ElectricalStorageTypes <em>Electrical Storage Types</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorageTypes
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectricalStorageTypes()
+	 * @generated
+	 */
+	int ELECTRICAL_STORAGE_TYPES = 43;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.BoilerTypes <em>Boiler Types</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.BoilerTypes
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getBoilerTypes()
+	 * @generated
+	 */
+	int BOILER_TYPES = 44;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.ThermalStorageTypes <em>Thermal Storage Types</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.ThermalStorageTypes
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getThermalStorageTypes()
+	 * @generated
+	 */
+	int THERMAL_STORAGE_TYPES = 45;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelTypes()
+	 * @generated
+	 */
+	int FUEL_TYPES = 47;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTypeOfHeatSource()
+	 * @generated
+	 */
+	int TYPE_OF_HEAT_SOURCE = 48;
+
+	/**
+	 * The meta object id for the '{@link de.hftstuttgart.energycomponents.cellTypesElectrolyzer <em>cell Types Electrolyzer</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.energycomponents.cellTypesElectrolyzer
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getcellTypesElectrolyzer()
+	 * @generated
+	 */
+	int CELL_TYPES_ELECTROLYZER = 46;
+
+	/**
+	 * The meta object id for the '<em>Quantity Double</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.units.NullableQuantity
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityDouble()
+	 * @generated
+	 */
+	int QUANTITY_DOUBLE = 49;
+
+	/**
+	 * The meta object id for the '<em>Quantity Long</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see de.hftstuttgart.units.NullableQuantity
+	 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityLong()
+	 * @generated
+	 */
+	int QUANTITY_LONG = 50;
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.EnergyComponent <em>Energy Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Energy Component</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponent
+	 * @generated
+	 */
+	EClass getEnergyComponent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponent#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponent#getDescription()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EAttribute getEnergyComponent_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponent#getModelName <em>Model Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Model Name</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponent#getModelName()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EAttribute getEnergyComponent_ModelName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponent#getRevisionYear <em>Revision Year</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Revision Year</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponent#getRevisionYear()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EAttribute getEnergyComponent_RevisionYear();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponent#getTechnicalLifetime <em>Technical Lifetime</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Technical Lifetime</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponent#getTechnicalLifetime()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EAttribute getEnergyComponent_TechnicalLifetime();
+
+	/**
+	 * Returns the meta object for the reference '{@link de.hftstuttgart.energycomponents.EnergyComponent#getManufacturer <em>Manufacturer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Manufacturer</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponent#getManufacturer()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EReference getEnergyComponent_Manufacturer();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog <em>Energy Components Catalog</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Energy Components Catalog</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog
+	 * @generated
+	 */
+	EClass getEnergyComponentsCatalog();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getAuthor <em>Author</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Author</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getAuthor()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EAttribute getEnergyComponentsCatalog_Author();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getBioFuels <em>Bio Fuels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Bio Fuels</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getBioFuels()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_BioFuels();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getMedia <em>Media</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Media</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getMedia()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Media();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getCombinedHeatPowerUtilities <em>Combined Heat Power Utilities</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Combined Heat Power Utilities</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getCombinedHeatPowerUtilities()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_CombinedHeatPowerUtilities();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getBoilers <em>Boilers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Boilers</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getBoilers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Boilers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getPhotovoltaicModules <em>Photovoltaic Modules</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Photovoltaic Modules</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getPhotovoltaicModules()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_PhotovoltaicModules();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getSolarThermalCollectors <em>Solar Thermal Collectors</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Solar Thermal Collectors</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getSolarThermalCollectors()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_SolarThermalCollectors();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getWindTurbines <em>Wind Turbines</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Wind Turbines</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getWindTurbines()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_WindTurbines();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getGeothermalHeatExchangers <em>Geothermal Heat Exchangers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Geothermal Heat Exchangers</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getGeothermalHeatExchangers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_GeothermalHeatExchangers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHeatPumps <em>Heat Pumps</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Heat Pumps</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHeatPumps()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_HeatPumps();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getInverters <em>Inverters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Inverters</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getInverters()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Inverters();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHeatExchangers <em>Heat Exchangers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Heat Exchangers</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHeatExchangers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_HeatExchangers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getElectrolyzers <em>Electrolyzers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Electrolyzers</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getElectrolyzers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Electrolyzers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHydrogenCompressors <em>Hydrogen Compressors</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Hydrogen Compressors</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHydrogenCompressors()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_HydrogenCompressors();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getFuelCells <em>Fuel Cells</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Fuel Cells</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getFuelCells()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_FuelCells();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getThermalStorages <em>Thermal Storages</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Thermal Storages</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getThermalStorages()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_ThermalStorages();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getPowerStorages <em>Power Storages</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Power Storages</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getPowerStorages()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_PowerStorages();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHydrogenStorages <em>Hydrogen Storages</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Hydrogen Storages</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHydrogenStorages()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_HydrogenStorages();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getFossilFuels <em>Fossil Fuels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Fossil Fuels</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getFossilFuels()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_FossilFuels();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getManufacturers <em>Manufacturers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Manufacturers</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getManufacturers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Manufacturers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getMaterials <em>Materials</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Materials</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getMaterials()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Materials();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getEnergycomponentscostcatalog <em>Energycomponentscostcatalog</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Energycomponentscostcatalog</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getEnergycomponentscostcatalog()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Energycomponentscostcatalog();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getEnergycarriers <em>Energycarriers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Energycarriers</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getEnergycarriers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Energycarriers();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.ThermalStorage <em>Thermal Storage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Thermal Storage</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage
+	 * @generated
+	 */
+	EClass getThermalStorage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalStorage#getVolume <em>Volume</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Volume</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getVolume()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EAttribute getThermalStorage_Volume();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalStorage#getThermalStorageType <em>Thermal Storage Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Thermal Storage Type</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getThermalStorageType()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EAttribute getThermalStorage_ThermalStorageType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalStorage#getMaxTemp <em>Max Temp</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max Temp</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getMaxTemp()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EAttribute getThermalStorage_MaxTemp();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalStorage#getTankThickness <em>Tank Thickness</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Tank Thickness</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getTankThickness()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EAttribute getThermalStorage_TankThickness();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalStorage#getInsulationThickness <em>Insulation Thickness</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Insulation Thickness</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getInsulationThickness()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EAttribute getThermalStorage_InsulationThickness();
+
+	/**
+	 * Returns the meta object for the reference '{@link de.hftstuttgart.energycomponents.ThermalStorage#getUsesMedium <em>Uses Medium</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Uses Medium</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getUsesMedium()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EReference getThermalStorage_UsesMedium();
+
+	/**
+	 * Returns the meta object for the reference '{@link de.hftstuttgart.energycomponents.ThermalStorage#getInsulationMaterial <em>Insulation Material</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Insulation Material</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getInsulationMaterial()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EReference getThermalStorage_InsulationMaterial();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalStorage#getHeight <em>Height</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Height</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getHeight()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EAttribute getThermalStorage_Height();
+
+	/**
+	 * Returns the meta object for the reference '{@link de.hftstuttgart.energycomponents.ThermalStorage#getTankMaterial <em>Tank Material</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Tank Material</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorage#getTankMaterial()
+	 * @see #getThermalStorage()
+	 * @generated
+	 */
+	EReference getThermalStorage_TankMaterial();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.ElectricalStorage <em>Electrical Storage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Electrical Storage</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage
+	 * @generated
+	 */
+	EClass getElectricalStorage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getElectricalStorageType <em>Electrical Storage Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Electrical Storage Type</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getElectricalStorageType()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_ElectricalStorageType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryCapacity <em>Battery Capacity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Battery Capacity</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryCapacity()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_BatteryCapacity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryVoltage <em>Battery Voltage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Battery Voltage</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryVoltage()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_BatteryVoltage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryLifeCycle <em>Battery Life Cycle</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Battery Life Cycle</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryLifeCycle()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_BatteryLifeCycle();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getSelfDischarge <em>Self Discharge</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Self Discharge</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getSelfDischarge()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_SelfDischarge();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getInverterIncluded <em>Inverter Included</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Inverter Included</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getInverterIncluded()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_InverterIncluded();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryEffiency <em>Battery Effiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Battery Effiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getBatteryEffiency()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_BatteryEffiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ElectricalStorage#getEnergyContent <em>Energy Content</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Energy Content</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorage#getEnergyContent()
+	 * @see #getElectricalStorage()
+	 * @generated
+	 */
+	EAttribute getElectricalStorage_EnergyContent();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.CombinedHeatPower <em>Combined Heat Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Combined Heat Power</em>'.
+	 * @see de.hftstuttgart.energycomponents.CombinedHeatPower
+	 * @generated
+	 */
+	EClass getCombinedHeatPower();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiency <em>Thermal Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Thermal Efficiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiency()
+	 * @see #getCombinedHeatPower()
+	 * @generated
+	 */
+	EAttribute getCombinedHeatPower_ThermalEfficiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiency <em>Electrical Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Electrical Efficiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiency()
+	 * @see #getCombinedHeatPower()
+	 * @generated
+	 */
+	EAttribute getCombinedHeatPower_ElectricalEfficiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getInstalledElectricalPower <em>Installed Electrical Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Installed Electrical Power</em>'.
+	 * @see de.hftstuttgart.energycomponents.CombinedHeatPower#getInstalledElectricalPower()
+	 * @see #getCombinedHeatPower()
+	 * @generated
+	 */
+	EAttribute getCombinedHeatPower_InstalledElectricalPower();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiencyPartLoad <em>Electrical Efficiency Part Load</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Electrical Efficiency Part Load</em>'.
+	 * @see de.hftstuttgart.energycomponents.CombinedHeatPower#getElectricalEfficiencyPartLoad()
+	 * @see #getCombinedHeatPower()
+	 * @generated
+	 */
+	EReference getCombinedHeatPower_ElectricalEfficiencyPartLoad();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiencyPartLoad <em>Thermal Efficiency Part Load</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Thermal Efficiency Part Load</em>'.
+	 * @see de.hftstuttgart.energycomponents.CombinedHeatPower#getThermalEfficiencyPartLoad()
+	 * @see #getCombinedHeatPower()
+	 * @generated
+	 */
+	EReference getCombinedHeatPower_ThermalEfficiencyPartLoad();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.HeatPump <em>Heat Pump</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Heat Pump</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatPump
+	 * @generated
+	 */
+	EClass getHeatPump();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HeatPump#getHeatSource <em>Heat Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Heat Source</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatPump#getHeatSource()
+	 * @see #getHeatPump()
+	 * @generated
+	 */
+	EAttribute getHeatPump_HeatSource();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.HeatPump#getPowerInput <em>Power Input</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Power Input</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatPump#getPowerInput()
+	 * @see #getHeatPump()
+	 * @generated
+	 */
+	EReference getHeatPump_PowerInput();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.HeatPump#getHeatOutput <em>Heat Output</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Heat Output</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatPump#getHeatOutput()
+	 * @see #getHeatPump()
+	 * @generated
+	 */
+	EReference getHeatPump_HeatOutput();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Coefficient Of Performance</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance()
+	 * @see #getHeatPump()
+	 * @generated
+	 */
+	EReference getHeatPump_CoefficientOfPerformance();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Boiler <em>Boiler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Boiler</em>'.
+	 * @see de.hftstuttgart.energycomponents.Boiler
+	 * @generated
+	 */
+	EClass getBoiler();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Boiler#getNominalEfficiency <em>Nominal Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Efficiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.Boiler#getNominalEfficiency()
+	 * @see #getBoiler()
+	 * @generated
+	 */
+	EAttribute getBoiler_NominalEfficiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Boiler#getBoilerType <em>Boiler Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Boiler Type</em>'.
+	 * @see de.hftstuttgart.energycomponents.Boiler#getBoilerType()
+	 * @see #getBoiler()
+	 * @generated
+	 */
+	EAttribute getBoiler_BoilerType();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.SolarThermalCollector <em>Solar Thermal Collector</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Solar Thermal Collector</em>'.
+	 * @see de.hftstuttgart.energycomponents.SolarThermalCollector
+	 * @generated
+	 */
+	EClass getSolarThermalCollector();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getCollectorType <em>Collector Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Collector Type</em>'.
+	 * @see de.hftstuttgart.energycomponents.SolarThermalCollector#getCollectorType()
+	 * @see #getSolarThermalCollector()
+	 * @generated
+	 */
+	EAttribute getSolarThermalCollector_CollectorType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getApertureArea <em>Aperture Area</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Aperture Area</em>'.
+	 * @see de.hftstuttgart.energycomponents.SolarThermalCollector#getApertureArea()
+	 * @see #getSolarThermalCollector()
+	 * @generated
+	 */
+	EAttribute getSolarThermalCollector_ApertureArea();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getOpticalEfficiency <em>Optical Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Optical Efficiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.SolarThermalCollector#getOpticalEfficiency()
+	 * @see #getSolarThermalCollector()
+	 * @generated
+	 */
+	EAttribute getSolarThermalCollector_OpticalEfficiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getLinearHeatLossCoefficient <em>Linear Heat Loss Coefficient</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Linear Heat Loss Coefficient</em>'.
+	 * @see de.hftstuttgart.energycomponents.SolarThermalCollector#getLinearHeatLossCoefficient()
+	 * @see #getSolarThermalCollector()
+	 * @generated
+	 */
+	EAttribute getSolarThermalCollector_LinearHeatLossCoefficient();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getQuadraticalHeatLossCoefficient <em>Quadratical Heat Loss Coefficient</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Quadratical Heat Loss Coefficient</em>'.
+	 * @see de.hftstuttgart.energycomponents.SolarThermalCollector#getQuadraticalHeatLossCoefficient()
+	 * @see #getSolarThermalCollector()
+	 * @generated
+	 */
+	EAttribute getSolarThermalCollector_QuadraticalHeatLossCoefficient();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Electrolyzer <em>Electrolyzer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Electrolyzer</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer
+	 * @generated
+	 */
+	EClass getElectrolyzer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electrolyzer#getCellType <em>Cell Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cell Type</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer#getCellType()
+	 * @see #getElectrolyzer()
+	 * @generated
+	 */
+	EAttribute getElectrolyzer_CellType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electrolyzer#getCellArea <em>Cell Area</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cell Area</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer#getCellArea()
+	 * @see #getElectrolyzer()
+	 * @generated
+	 */
+	EAttribute getElectrolyzer_CellArea();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electrolyzer#getNumberOfCells <em>Number Of Cells</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Number Of Cells</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer#getNumberOfCells()
+	 * @see #getElectrolyzer()
+	 * @generated
+	 */
+	EAttribute getElectrolyzer_NumberOfCells();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electrolyzer#getMaxOperatingCurrentDensity <em>Max Operating Current Density</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max Operating Current Density</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer#getMaxOperatingCurrentDensity()
+	 * @see #getElectrolyzer()
+	 * @generated
+	 */
+	EAttribute getElectrolyzer_MaxOperatingCurrentDensity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electrolyzer#getMinOperatingCurrentDensity <em>Min Operating Current Density</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min Operating Current Density</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer#getMinOperatingCurrentDensity()
+	 * @see #getElectrolyzer()
+	 * @generated
+	 */
+	EAttribute getElectrolyzer_MinOperatingCurrentDensity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electrolyzer#getOverloadCapacity <em>Overload Capacity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Overload Capacity</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer#getOverloadCapacity()
+	 * @see #getElectrolyzer()
+	 * @generated
+	 */
+	EAttribute getElectrolyzer_OverloadCapacity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electrolyzer#getNominalCellVoltage <em>Nominal Cell Voltage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Cell Voltage</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electrolyzer#getNominalCellVoltage()
+	 * @see #getElectrolyzer()
+	 * @generated
+	 */
+	EAttribute getElectrolyzer_NominalCellVoltage();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice <em>Thermal Energy Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Thermal Energy Device</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalEnergyDevice
+	 * @generated
+	 */
+	EClass getThermalEnergyDevice();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Installed Thermal Power</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalEnergyDevice#getInstalledThermalPower()
+	 * @see #getThermalEnergyDevice()
+	 * @generated
+	 */
+	EAttribute getThermalEnergyDevice_InstalledThermalPower();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getModulationRange <em>Modulation Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Modulation Range</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalEnergyDevice#getModulationRange()
+	 * @see #getThermalEnergyDevice()
+	 * @generated
+	 */
+	EAttribute getThermalEnergyDevice_ModulationRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getFuel <em>Fuel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Fuel</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalEnergyDevice#getFuel()
+	 * @see #getThermalEnergyDevice()
+	 * @generated
+	 */
+	EAttribute getThermalEnergyDevice_Fuel();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.HydrogenCompressor <em>Hydrogen Compressor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Hydrogen Compressor</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenCompressor
+	 * @generated
+	 */
+	EClass getHydrogenCompressor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getEfficiency <em>Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Efficiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenCompressor#getEfficiency()
+	 * @see #getHydrogenCompressor()
+	 * @generated
+	 */
+	EAttribute getHydrogenCompressor_Efficiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getThermodynamicMode <em>Thermodynamic Mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Thermodynamic Mode</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenCompressor#getThermodynamicMode()
+	 * @see #getHydrogenCompressor()
+	 * @generated
+	 */
+	EAttribute getHydrogenCompressor_ThermodynamicMode();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxPressure <em>Max Pressure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max Pressure</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxPressure()
+	 * @see #getHydrogenCompressor()
+	 * @generated
+	 */
+	EAttribute getHydrogenCompressor_MaxPressure();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxDeliveryRate <em>Max Delivery Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max Delivery Rate</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxDeliveryRate()
+	 * @see #getHydrogenCompressor()
+	 * @generated
+	 */
+	EAttribute getHydrogenCompressor_MaxDeliveryRate();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.HydrogenStorage <em>Hydrogen Storage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Hydrogen Storage</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenStorage
+	 * @generated
+	 */
+	EClass getHydrogenStorage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HydrogenStorage#getNumberOfCylinders <em>Number Of Cylinders</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Number Of Cylinders</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenStorage#getNumberOfCylinders()
+	 * @see #getHydrogenStorage()
+	 * @generated
+	 */
+	EAttribute getHydrogenStorage_NumberOfCylinders();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HydrogenStorage#getCylinderVolume <em>Cylinder Volume</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cylinder Volume</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenStorage#getCylinderVolume()
+	 * @see #getHydrogenStorage()
+	 * @generated
+	 */
+	EAttribute getHydrogenStorage_CylinderVolume();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HydrogenStorage#getNominalPressure <em>Nominal Pressure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Pressure</em>'.
+	 * @see de.hftstuttgart.energycomponents.HydrogenStorage#getNominalPressure()
+	 * @see #getHydrogenStorage()
+	 * @generated
+	 */
+	EAttribute getHydrogenStorage_NominalPressure();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.FuelCell <em>Fuel Cell</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fuel Cell</em>'.
+	 * @see de.hftstuttgart.energycomponents.FuelCell
+	 * @generated
+	 */
+	EClass getFuelCell();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.EnergyCarrier <em>Energy Carrier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Energy Carrier</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyCarrier
+	 * @generated
+	 */
+	EClass getEnergyCarrier();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyCarrier#getCo2EmissionsFactor <em>Co2 Emissions Factor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Co2 Emissions Factor</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyCarrier#getCo2EmissionsFactor()
+	 * @see #getEnergyCarrier()
+	 * @generated
+	 */
+	EAttribute getEnergyCarrier_Co2EmissionsFactor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyCarrier#getPrimaryEnergyFactor <em>Primary Energy Factor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Primary Energy Factor</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyCarrier#getPrimaryEnergyFactor()
+	 * @see #getEnergyCarrier()
+	 * @generated
+	 */
+	EAttribute getEnergyCarrier_PrimaryEnergyFactor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyCarrier#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyCarrier#getName()
+	 * @see #getEnergyCarrier()
+	 * @generated
+	 */
+	EAttribute getEnergyCarrier_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyCarrier#getCost <em>Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cost</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyCarrier#getCost()
+	 * @see #getEnergyCarrier()
+	 * @generated
+	 */
+	EAttribute getEnergyCarrier_Cost();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.FossilFuel <em>Fossil Fuel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fossil Fuel</em>'.
+	 * @see de.hftstuttgart.energycomponents.FossilFuel
+	 * @generated
+	 */
+	EClass getFossilFuel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.FossilFuel#getMethaneContent <em>Methane Content</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Methane Content</em>'.
+	 * @see de.hftstuttgart.energycomponents.FossilFuel#getMethaneContent()
+	 * @see #getFossilFuel()
+	 * @generated
+	 */
+	EAttribute getFossilFuel_MethaneContent();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Hydrogen <em>Hydrogen</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Hydrogen</em>'.
+	 * @see de.hftstuttgart.energycomponents.Hydrogen
+	 * @generated
+	 */
+	EClass getHydrogen();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Hydrogen#getChemicalPurity <em>Chemical Purity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Chemical Purity</em>'.
+	 * @see de.hftstuttgart.energycomponents.Hydrogen#getChemicalPurity()
+	 * @see #getHydrogen()
+	 * @generated
+	 */
+	EAttribute getHydrogen_ChemicalPurity();
+
+	/**
+	 * Returns the meta object for the reference '{@link de.hftstuttgart.energycomponents.Hydrogen#getHydrogenForHydrogenStorage <em>Hydrogen For Hydrogen Storage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Hydrogen For Hydrogen Storage</em>'.
+	 * @see de.hftstuttgart.energycomponents.Hydrogen#getHydrogenForHydrogenStorage()
+	 * @see #getHydrogen()
+	 * @generated
+	 */
+	EReference getHydrogen_HydrogenForHydrogenStorage();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Electricity <em>Electricity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Electricity</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electricity
+	 * @generated
+	 */
+	EClass getElectricity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Electricity#getRenewableShare <em>Renewable Share</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Renewable Share</em>'.
+	 * @see de.hftstuttgart.energycomponents.Electricity#getRenewableShare()
+	 * @see #getElectricity()
+	 * @generated
+	 */
+	EAttribute getElectricity_RenewableShare();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.BioFuel <em>Bio Fuel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Bio Fuel</em>'.
+	 * @see de.hftstuttgart.energycomponents.BioFuel
+	 * @generated
+	 */
+	EClass getBioFuel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.BioFuel#getWaterContent <em>Water Content</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Water Content</em>'.
+	 * @see de.hftstuttgart.energycomponents.BioFuel#getWaterContent()
+	 * @see #getBioFuel()
+	 * @generated
+	 */
+	EAttribute getBioFuel_WaterContent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.BioFuel#getAshContent <em>Ash Content</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Ash Content</em>'.
+	 * @see de.hftstuttgart.energycomponents.BioFuel#getAshContent()
+	 * @see #getBioFuel()
+	 * @generated
+	 */
+	EAttribute getBioFuel_AshContent();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Fuel <em>Fuel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fuel</em>'.
+	 * @see de.hftstuttgart.energycomponents.Fuel
+	 * @generated
+	 */
+	EClass getFuel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Fuel#getNetCalorificValue <em>Net Calorific Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Net Calorific Value</em>'.
+	 * @see de.hftstuttgart.energycomponents.Fuel#getNetCalorificValue()
+	 * @see #getFuel()
+	 * @generated
+	 */
+	EAttribute getFuel_NetCalorificValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Fuel#getGrossCalorificValue <em>Gross Calorific Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Gross Calorific Value</em>'.
+	 * @see de.hftstuttgart.energycomponents.Fuel#getGrossCalorificValue()
+	 * @see #getFuel()
+	 * @generated
+	 */
+	EAttribute getFuel_GrossCalorificValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Fuel#getDensity <em>Density</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Density</em>'.
+	 * @see de.hftstuttgart.energycomponents.Fuel#getDensity()
+	 * @see #getFuel()
+	 * @generated
+	 */
+	EAttribute getFuel_Density();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Fuel#getFuelType <em>Fuel Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Fuel Type</em>'.
+	 * @see de.hftstuttgart.energycomponents.Fuel#getFuelType()
+	 * @see #getFuel()
+	 * @generated
+	 */
+	EAttribute getFuel_FuelType();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.WindTurbine <em>Wind Turbine</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Wind Turbine</em>'.
+	 * @see de.hftstuttgart.energycomponents.WindTurbine
+	 * @generated
+	 */
+	EClass getWindTurbine();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule <em>Photovoltaic Module</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Photovoltaic Module</em>'.
+	 * @see de.hftstuttgart.energycomponents.PhotovoltaicModule
+	 * @generated
+	 */
+	EClass getPhotovoltaicModule();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getCellType <em>Cell Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cell Type</em>'.
+	 * @see de.hftstuttgart.energycomponents.PhotovoltaicModule#getCellType()
+	 * @see #getPhotovoltaicModule()
+	 * @generated
+	 */
+	EAttribute getPhotovoltaicModule_CellType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalPower <em>Nominal Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Power</em>'.
+	 * @see de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalPower()
+	 * @see #getPhotovoltaicModule()
+	 * @generated
+	 */
+	EAttribute getPhotovoltaicModule_NominalPower();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppVoltage <em>Mpp Voltage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mpp Voltage</em>'.
+	 * @see de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppVoltage()
+	 * @see #getPhotovoltaicModule()
+	 * @generated
+	 */
+	EAttribute getPhotovoltaicModule_MppVoltage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppCurrent <em>Mpp Current</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mpp Current</em>'.
+	 * @see de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppCurrent()
+	 * @see #getPhotovoltaicModule()
+	 * @generated
+	 */
+	EAttribute getPhotovoltaicModule_MppCurrent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalEfficiency <em>Nominal Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Efficiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalEfficiency()
+	 * @see #getPhotovoltaicModule()
+	 * @generated
+	 */
+	EAttribute getPhotovoltaicModule_NominalEfficiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getModuleArea <em>Module Area</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Module Area</em>'.
+	 * @see de.hftstuttgart.energycomponents.PhotovoltaicModule#getModuleArea()
+	 * @see #getPhotovoltaicModule()
+	 * @generated
+	 */
+	EAttribute getPhotovoltaicModule_ModuleArea();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Inverter <em>Inverter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Inverter</em>'.
+	 * @see de.hftstuttgart.energycomponents.Inverter
+	 * @generated
+	 */
+	EClass getInverter();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.HeatExchanger <em>Heat Exchanger</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Heat Exchanger</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatExchanger
+	 * @generated
+	 */
+	EClass getHeatExchanger();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HeatExchanger#getHeatRecoveryEfficiency <em>Heat Recovery Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Heat Recovery Efficiency</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatExchanger#getHeatRecoveryEfficiency()
+	 * @see #getHeatExchanger()
+	 * @generated
+	 */
+	EAttribute getHeatExchanger_HeatRecoveryEfficiency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.HeatExchanger#getNominalElectricityConsumption <em>Nominal Electricity Consumption</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Electricity Consumption</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatExchanger#getNominalElectricityConsumption()
+	 * @see #getHeatExchanger()
+	 * @generated
+	 */
+	EAttribute getHeatExchanger_NominalElectricityConsumption();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger <em>Geothermal Heat Exchanger</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Geothermal Heat Exchanger</em>'.
+	 * @see de.hftstuttgart.energycomponents.GeothermalHeatExchanger
+	 * @generated
+	 */
+	EClass getGeothermalHeatExchanger();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger#getPipeDiameter <em>Pipe Diameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Pipe Diameter</em>'.
+	 * @see de.hftstuttgart.energycomponents.GeothermalHeatExchanger#getPipeDiameter()
+	 * @see #getGeothermalHeatExchanger()
+	 * @generated
+	 */
+	EAttribute getGeothermalHeatExchanger_PipeDiameter();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Medium <em>Medium</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Medium</em>'.
+	 * @see de.hftstuttgart.energycomponents.Medium
+	 * @generated
+	 */
+	EClass getMedium();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Medium#getDensity <em>Density</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Density</em>'.
+	 * @see de.hftstuttgart.energycomponents.Medium#getDensity()
+	 * @see #getMedium()
+	 * @generated
+	 */
+	EAttribute getMedium_Density();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Medium#getHeatCapacity <em>Heat Capacity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Heat Capacity</em>'.
+	 * @see de.hftstuttgart.energycomponents.Medium#getHeatCapacity()
+	 * @see #getMedium()
+	 * @generated
+	 */
+	EAttribute getMedium_HeatCapacity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Medium#getEvaporationTemperature <em>Evaporation Temperature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Evaporation Temperature</em>'.
+	 * @see de.hftstuttgart.energycomponents.Medium#getEvaporationTemperature()
+	 * @see #getMedium()
+	 * @generated
+	 */
+	EAttribute getMedium_EvaporationTemperature();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Medium#getMeltingTemperature <em>Melting Temperature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Melting Temperature</em>'.
+	 * @see de.hftstuttgart.energycomponents.Medium#getMeltingTemperature()
+	 * @see #getMedium()
+	 * @generated
+	 */
+	EAttribute getMedium_MeltingTemperature();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Medium#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see de.hftstuttgart.energycomponents.Medium#getName()
+	 * @see #getMedium()
+	 * @generated
+	 */
+	EAttribute getMedium_Name();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.LinearFunction <em>Linear Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Linear Function</em>'.
+	 * @see de.hftstuttgart.energycomponents.LinearFunction
+	 * @generated
+	 */
+	EClass getLinearFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.LinearFunction#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see de.hftstuttgart.energycomponents.LinearFunction#getKey()
+	 * @see #getLinearFunction()
+	 * @generated
+	 */
+	EAttribute getLinearFunction_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.LinearFunction#getParameterM <em>Parameter M</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter M</em>'.
+	 * @see de.hftstuttgart.energycomponents.LinearFunction#getParameterM()
+	 * @see #getLinearFunction()
+	 * @generated
+	 */
+	EAttribute getLinearFunction_ParameterM();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.LinearFunction#getParameterC <em>Parameter C</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter C</em>'.
+	 * @see de.hftstuttgart.energycomponents.LinearFunction#getParameterC()
+	 * @see #getLinearFunction()
+	 * @generated
+	 */
+	EAttribute getLinearFunction_ParameterC();
+
+	/**
+	 * Returns the meta object for the '{@link de.hftstuttgart.energycomponents.LinearFunction#linearfunction(double) <em>Linearfunction</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Linearfunction</em>' operation.
+	 * @see de.hftstuttgart.energycomponents.LinearFunction#linearfunction(double)
+	 * @generated
+	 */
+	EOperation getLinearFunction__Linearfunction__double();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.DataPoint <em>Data Point</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Data Point</em>'.
+	 * @see de.hftstuttgart.energycomponents.DataPoint
+	 * @generated
+	 */
+	EClass getDataPoint();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.DataPoint#getX <em>X</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>X</em>'.
+	 * @see de.hftstuttgart.energycomponents.DataPoint#getX()
+	 * @see #getDataPoint()
+	 * @generated
+	 */
+	EAttribute getDataPoint_X();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.DataPoint#getY <em>Y</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Y</em>'.
+	 * @see de.hftstuttgart.energycomponents.DataPoint#getY()
+	 * @see #getDataPoint()
+	 * @generated
+	 */
+	EAttribute getDataPoint_Y();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.TableFunction <em>Table Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Table Function</em>'.
+	 * @see de.hftstuttgart.energycomponents.TableFunction
+	 * @generated
+	 */
+	EClass getTableFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.TableFunction#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see de.hftstuttgart.energycomponents.TableFunction#getKey()
+	 * @see #getTableFunction()
+	 * @generated
+	 */
+	EAttribute getTableFunction_Key();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.TableFunction#getDatapoints <em>Datapoints</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Datapoints</em>'.
+	 * @see de.hftstuttgart.energycomponents.TableFunction#getDatapoints()
+	 * @see #getTableFunction()
+	 * @generated
+	 */
+	EReference getTableFunction_Datapoints();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.ExponentialFunction <em>Exponential Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Exponential Function</em>'.
+	 * @see de.hftstuttgart.energycomponents.ExponentialFunction
+	 * @generated
+	 */
+	EClass getExponentialFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ExponentialFunction#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see de.hftstuttgart.energycomponents.ExponentialFunction#getKey()
+	 * @see #getExponentialFunction()
+	 * @generated
+	 */
+	EAttribute getExponentialFunction_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ExponentialFunction#getParameterA <em>Parameter A</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter A</em>'.
+	 * @see de.hftstuttgart.energycomponents.ExponentialFunction#getParameterA()
+	 * @see #getExponentialFunction()
+	 * @generated
+	 */
+	EAttribute getExponentialFunction_ParameterA();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.ExponentialFunction#getParameterB <em>Parameter B</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter B</em>'.
+	 * @see de.hftstuttgart.energycomponents.ExponentialFunction#getParameterB()
+	 * @see #getExponentialFunction()
+	 * @generated
+	 */
+	EAttribute getExponentialFunction_ParameterB();
+
+	/**
+	 * Returns the meta object for the '{@link de.hftstuttgart.energycomponents.ExponentialFunction#exponentialfunction(double) <em>Exponentialfunction</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Exponentialfunction</em>' operation.
+	 * @see de.hftstuttgart.energycomponents.ExponentialFunction#exponentialfunction(double)
+	 * @generated
+	 */
+	EOperation getExponentialFunction__Exponentialfunction__double();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Characteristic <em>Characteristic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Characteristic</em>'.
+	 * @see de.hftstuttgart.energycomponents.Characteristic
+	 * @generated
+	 */
+	EClass getCharacteristic();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.TableCharacteristic <em>Table Characteristic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Table Characteristic</em>'.
+	 * @see de.hftstuttgart.energycomponents.TableCharacteristic
+	 * @generated
+	 */
+	EClass getTableCharacteristic();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.TableCharacteristic#getFunctions <em>Functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Functions</em>'.
+	 * @see de.hftstuttgart.energycomponents.TableCharacteristic#getFunctions()
+	 * @see #getTableCharacteristic()
+	 * @generated
+	 */
+	EReference getTableCharacteristic_Functions();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.LinearCharacteristic <em>Linear Characteristic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Linear Characteristic</em>'.
+	 * @see de.hftstuttgart.energycomponents.LinearCharacteristic
+	 * @generated
+	 */
+	EClass getLinearCharacteristic();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.LinearCharacteristic#getFunctions <em>Functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Functions</em>'.
+	 * @see de.hftstuttgart.energycomponents.LinearCharacteristic#getFunctions()
+	 * @see #getLinearCharacteristic()
+	 * @generated
+	 */
+	EReference getLinearCharacteristic_Functions();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic <em>Exponentional Characteristic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Exponentional Characteristic</em>'.
+	 * @see de.hftstuttgart.energycomponents.ExponentionalCharacteristic
+	 * @generated
+	 */
+	EClass getExponentionalCharacteristic();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic#getFunctions <em>Functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Functions</em>'.
+	 * @see de.hftstuttgart.energycomponents.ExponentionalCharacteristic#getFunctions()
+	 * @see #getExponentionalCharacteristic()
+	 * @generated
+	 */
+	EReference getExponentionalCharacteristic_Functions();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Manufacturer <em>Manufacturer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Manufacturer</em>'.
+	 * @see de.hftstuttgart.energycomponents.Manufacturer
+	 * @generated
+	 */
+	EClass getManufacturer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Manufacturer#getManufacturerName <em>Manufacturer Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Manufacturer Name</em>'.
+	 * @see de.hftstuttgart.energycomponents.Manufacturer#getManufacturerName()
+	 * @see #getManufacturer()
+	 * @generated
+	 */
+	EAttribute getManufacturer_ManufacturerName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Manufacturer#getCountry <em>Country</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Country</em>'.
+	 * @see de.hftstuttgart.energycomponents.Manufacturer#getCountry()
+	 * @see #getManufacturer()
+	 * @generated
+	 */
+	EAttribute getManufacturer_Country();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Manufacturer#getOutOfBusinessSince <em>Out Of Business Since</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Out Of Business Since</em>'.
+	 * @see de.hftstuttgart.energycomponents.Manufacturer#getOutOfBusinessSince()
+	 * @see #getManufacturer()
+	 * @generated
+	 */
+	EAttribute getManufacturer_OutOfBusinessSince();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.PolynomialCharacteristic <em>Polynomial Characteristic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Polynomial Characteristic</em>'.
+	 * @see de.hftstuttgart.energycomponents.PolynomialCharacteristic
+	 * @generated
+	 */
+	EClass getPolynomialCharacteristic();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.PolynomialCharacteristic#getFunctions <em>Functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Functions</em>'.
+	 * @see de.hftstuttgart.energycomponents.PolynomialCharacteristic#getFunctions()
+	 * @see #getPolynomialCharacteristic()
+	 * @generated
+	 */
+	EReference getPolynomialCharacteristic_Functions();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.PolynomialFunction <em>Polynomial Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Polynomial Function</em>'.
+	 * @see de.hftstuttgart.energycomponents.PolynomialFunction
+	 * @generated
+	 */
+	EClass getPolynomialFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see de.hftstuttgart.energycomponents.PolynomialFunction#getKey()
+	 * @see #getPolynomialFunction()
+	 * @generated
+	 */
+	EAttribute getPolynomialFunction_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterA <em>Parameter A</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter A</em>'.
+	 * @see de.hftstuttgart.energycomponents.PolynomialFunction#getParameterA()
+	 * @see #getPolynomialFunction()
+	 * @generated
+	 */
+	EAttribute getPolynomialFunction_ParameterA();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterB <em>Parameter B</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter B</em>'.
+	 * @see de.hftstuttgart.energycomponents.PolynomialFunction#getParameterB()
+	 * @see #getPolynomialFunction()
+	 * @generated
+	 */
+	EAttribute getPolynomialFunction_ParameterB();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterC <em>Parameter C</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter C</em>'.
+	 * @see de.hftstuttgart.energycomponents.PolynomialFunction#getParameterC()
+	 * @see #getPolynomialFunction()
+	 * @generated
+	 */
+	EAttribute getPolynomialFunction_ParameterC();
+
+	/**
+	 * Returns the meta object for the '{@link de.hftstuttgart.energycomponents.PolynomialFunction#polynomialfunction(double) <em>Polynomialfunction</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Polynomialfunction</em>' operation.
+	 * @see de.hftstuttgart.energycomponents.PolynomialFunction#polynomialfunction(double)
+	 * @generated
+	 */
+	EOperation getPolynomialFunction__Polynomialfunction__double();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Material <em>Material</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Material</em>'.
+	 * @see de.hftstuttgart.energycomponents.Material
+	 * @generated
+	 */
+	EClass getMaterial();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Material#getThermalConductivity <em>Thermal Conductivity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Thermal Conductivity</em>'.
+	 * @see de.hftstuttgart.energycomponents.Material#getThermalConductivity()
+	 * @see #getMaterial()
+	 * @generated
+	 */
+	EAttribute getMaterial_ThermalConductivity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Material#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see de.hftstuttgart.energycomponents.Material#getName()
+	 * @see #getMaterial()
+	 * @generated
+	 */
+	EAttribute getMaterial_Name();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog <em>Energy Components Cost Catalog</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Energy Components Cost Catalog</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog
+	 * @generated
+	 */
+	EClass getEnergyComponentsCostCatalog();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getAuthor <em>Author</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Author</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getAuthor()
+	 * @see #getEnergyComponentsCostCatalog()
+	 * @generated
+	 */
+	EAttribute getEnergyComponentsCostCatalog_Author();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getRevisionYear <em>Revision Year</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Revision Year</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getRevisionYear()
+	 * @see #getEnergyComponentsCostCatalog()
+	 * @generated
+	 */
+	EAttribute getEnergyComponentsCostCatalog_RevisionYear();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getCostCategories <em>Cost Categories</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Cost Categories</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getCostCategories()
+	 * @see #getEnergyComponentsCostCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCostCatalog_CostCategories();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getPersonnelCost <em>Personnel Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Personnel Cost</em>'.
+	 * @see de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getPersonnelCost()
+	 * @see #getEnergyComponentsCostCatalog()
+	 * @generated
+	 */
+	EAttribute getEnergyComponentsCostCatalog_PersonnelCost();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.Cost <em>Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cost</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost
+	 * @generated
+	 */
+	EClass getCost();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getDatasource <em>Datasource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Datasource</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getDatasource()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_Datasource();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link de.hftstuttgart.energycomponents.Cost#getInvestmentCost <em>Investment Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Investment Cost</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getInvestmentCost()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EReference getCost_InvestmentCost();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getOtherInvestmentCost <em>Other Investment Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Other Investment Cost</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getOtherInvestmentCost()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_OtherInvestmentCost();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getPersonnelHours <em>Personnel Hours</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Personnel Hours</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getPersonnelHours()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_PersonnelHours();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getPersonnelCostShare <em>Personnel Cost Share</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Personnel Cost Share</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getPersonnelCostShare()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_PersonnelCostShare();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Administration And Other Cost Share</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getAdministrationAndOtherCostShare()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_AdministrationAndOtherCostShare();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Maintenance Cost Share</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getMaintenanceCostShare()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_MaintenanceCostShare();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.PowerCharacteristic <em>Power Characteristic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Power Characteristic</em>'.
+	 * @see de.hftstuttgart.energycomponents.PowerCharacteristic
+	 * @generated
+	 */
+	EClass getPowerCharacteristic();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link de.hftstuttgart.energycomponents.PowerCharacteristic#getFunctions <em>Functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Functions</em>'.
+	 * @see de.hftstuttgart.energycomponents.PowerCharacteristic#getFunctions()
+	 * @see #getPowerCharacteristic()
+	 * @generated
+	 */
+	EReference getPowerCharacteristic_Functions();
+
+	/**
+	 * Returns the meta object for class '{@link de.hftstuttgart.energycomponents.PowerFunction <em>Power Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Power Function</em>'.
+	 * @see de.hftstuttgart.energycomponents.PowerFunction
+	 * @generated
+	 */
+	EClass getPowerFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PowerFunction#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see de.hftstuttgart.energycomponents.PowerFunction#getKey()
+	 * @see #getPowerFunction()
+	 * @generated
+	 */
+	EAttribute getPowerFunction_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PowerFunction#getParameterA <em>Parameter A</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter A</em>'.
+	 * @see de.hftstuttgart.energycomponents.PowerFunction#getParameterA()
+	 * @see #getPowerFunction()
+	 * @generated
+	 */
+	EAttribute getPowerFunction_ParameterA();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.PowerFunction#getParameterB <em>Parameter B</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Parameter B</em>'.
+	 * @see de.hftstuttgart.energycomponents.PowerFunction#getParameterB()
+	 * @see #getPowerFunction()
+	 * @generated
+	 */
+	EAttribute getPowerFunction_ParameterB();
+
+	/**
+	 * Returns the meta object for the '{@link de.hftstuttgart.energycomponents.PowerFunction#powerfunction(double) <em>Powerfunction</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Powerfunction</em>' operation.
+	 * @see de.hftstuttgart.energycomponents.PowerFunction#powerfunction(double)
+	 * @generated
+	 */
+	EOperation getPowerFunction__Powerfunction__double();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Component Name</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getComponentName()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_ComponentName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getDescription()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Heat Source</em>'.
+	 * @see de.hftstuttgart.energycomponents.Cost#getHeatSource()
+	 * @see #getCost()
+	 * @generated
+	 */
+	EAttribute getCost_HeatSource();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.HeatSources <em>Heat Sources</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Heat Sources</em>'.
+	 * @see de.hftstuttgart.energycomponents.HeatSources
+	 * @generated
+	 */
+	EEnum getHeatSources();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.CollectorTypes <em>Collector Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Collector Types</em>'.
+	 * @see de.hftstuttgart.energycomponents.CollectorTypes
+	 * @generated
+	 */
+	EEnum getCollectorTypes();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.ElectricalStorageTypes <em>Electrical Storage Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Electrical Storage Types</em>'.
+	 * @see de.hftstuttgart.energycomponents.ElectricalStorageTypes
+	 * @generated
+	 */
+	EEnum getElectricalStorageTypes();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.BoilerTypes <em>Boiler Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Boiler Types</em>'.
+	 * @see de.hftstuttgart.energycomponents.BoilerTypes
+	 * @generated
+	 */
+	EEnum getBoilerTypes();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.ThermalStorageTypes <em>Thermal Storage Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Thermal Storage Types</em>'.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorageTypes
+	 * @generated
+	 */
+	EEnum getThermalStorageTypes();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Fuel Types</em>'.
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
+	 * @generated
+	 */
+	EEnum getFuelTypes();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Type Of Heat Source</em>'.
+	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+	 * @generated
+	 */
+	EEnum getTypeOfHeatSource();
+
+	/**
+	 * Returns the meta object for enum '{@link de.hftstuttgart.energycomponents.cellTypesElectrolyzer <em>cell Types Electrolyzer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>cell Types Electrolyzer</em>'.
+	 * @see de.hftstuttgart.energycomponents.cellTypesElectrolyzer
+	 * @generated
+	 */
+	EEnum getcellTypesElectrolyzer();
+
+	/**
+	 * Returns the meta object for data type '{@link de.hftstuttgart.units.NullableQuantity <em>Quantity Double</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Quantity Double</em>'.
+	 * @see de.hftstuttgart.units.NullableQuantity
+	 * @model instanceClass="de.hftstuttgart.units.NullableQuantity"
+	 * @generated
+	 */
+	EDataType getQuantityDouble();
+
+	/**
+	 * Returns the meta object for data type '{@link de.hftstuttgart.units.NullableQuantity <em>Quantity Long</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Quantity Long</em>'.
+	 * @see de.hftstuttgart.units.NullableQuantity
+	 * @model instanceClass="de.hftstuttgart.units.NullableQuantity"
+	 * @generated
+	 */
+	EDataType getQuantityLong();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	EnCompFactory getEnCompFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.EnergyComponentImpl <em>Energy Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.EnergyComponentImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyComponent()
+		 * @generated
+		 */
+		EClass ENERGY_COMPONENT = eINSTANCE.getEnergyComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENT__DESCRIPTION = eINSTANCE.getEnergyComponent_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Model Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENT__MODEL_NAME = eINSTANCE.getEnergyComponent_ModelName();
+
+		/**
+		 * The meta object literal for the '<em><b>Revision Year</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENT__REVISION_YEAR = eINSTANCE.getEnergyComponent_RevisionYear();
+
+		/**
+		 * The meta object literal for the '<em><b>Technical Lifetime</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENT__TECHNICAL_LIFETIME = eINSTANCE.getEnergyComponent_TechnicalLifetime();
+
+		/**
+		 * The meta object literal for the '<em><b>Manufacturer</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENT__MANUFACTURER = eINSTANCE.getEnergyComponent_Manufacturer();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl <em>Energy Components Catalog</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyComponentsCatalog()
+		 * @generated
+		 */
+		EClass ENERGY_COMPONENTS_CATALOG = eINSTANCE.getEnergyComponentsCatalog();
+
+		/**
+		 * The meta object literal for the '<em><b>Author</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENTS_CATALOG__AUTHOR = eINSTANCE.getEnergyComponentsCatalog_Author();
+
+		/**
+		 * The meta object literal for the '<em><b>Bio Fuels</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__BIO_FUELS = eINSTANCE.getEnergyComponentsCatalog_BioFuels();
+
+		/**
+		 * The meta object literal for the '<em><b>Media</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__MEDIA = eINSTANCE.getEnergyComponentsCatalog_Media();
+
+		/**
+		 * The meta object literal for the '<em><b>Combined Heat Power Utilities</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES = eINSTANCE
+				.getEnergyComponentsCatalog_CombinedHeatPowerUtilities();
+
+		/**
+		 * The meta object literal for the '<em><b>Boilers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__BOILERS = eINSTANCE.getEnergyComponentsCatalog_Boilers();
+
+		/**
+		 * The meta object literal for the '<em><b>Photovoltaic Modules</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES = eINSTANCE
+				.getEnergyComponentsCatalog_PhotovoltaicModules();
+
+		/**
+		 * The meta object literal for the '<em><b>Solar Thermal Collectors</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS = eINSTANCE
+				.getEnergyComponentsCatalog_SolarThermalCollectors();
+
+		/**
+		 * The meta object literal for the '<em><b>Wind Turbines</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__WIND_TURBINES = eINSTANCE.getEnergyComponentsCatalog_WindTurbines();
+
+		/**
+		 * The meta object literal for the '<em><b>Geothermal Heat Exchangers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS = eINSTANCE
+				.getEnergyComponentsCatalog_GeothermalHeatExchangers();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Pumps</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS = eINSTANCE.getEnergyComponentsCatalog_HeatPumps();
+
+		/**
+		 * The meta object literal for the '<em><b>Inverters</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__INVERTERS = eINSTANCE.getEnergyComponentsCatalog_Inverters();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Exchangers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS = eINSTANCE.getEnergyComponentsCatalog_HeatExchangers();
+
+		/**
+		 * The meta object literal for the '<em><b>Electrolyzers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS = eINSTANCE.getEnergyComponentsCatalog_Electrolyzers();
+
+		/**
+		 * The meta object literal for the '<em><b>Hydrogen Compressors</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS = eINSTANCE
+				.getEnergyComponentsCatalog_HydrogenCompressors();
+
+		/**
+		 * The meta object literal for the '<em><b>Fuel Cells</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__FUEL_CELLS = eINSTANCE.getEnergyComponentsCatalog_FuelCells();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermal Storages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES = eINSTANCE.getEnergyComponentsCatalog_ThermalStorages();
+
+		/**
+		 * The meta object literal for the '<em><b>Power Storages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__POWER_STORAGES = eINSTANCE.getEnergyComponentsCatalog_PowerStorages();
+
+		/**
+		 * The meta object literal for the '<em><b>Hydrogen Storages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES = eINSTANCE
+				.getEnergyComponentsCatalog_HydrogenStorages();
+
+		/**
+		 * The meta object literal for the '<em><b>Fossil Fuels</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS = eINSTANCE.getEnergyComponentsCatalog_FossilFuels();
+
+		/**
+		 * The meta object literal for the '<em><b>Manufacturers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__MANUFACTURERS = eINSTANCE.getEnergyComponentsCatalog_Manufacturers();
+
+		/**
+		 * The meta object literal for the '<em><b>Materials</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__MATERIALS = eINSTANCE.getEnergyComponentsCatalog_Materials();
+
+		/**
+		 * The meta object literal for the '<em><b>Energycomponentscostcatalog</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG = eINSTANCE
+				.getEnergyComponentsCatalog_Energycomponentscostcatalog();
+
+		/**
+		 * The meta object literal for the '<em><b>Energycarriers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS = eINSTANCE.getEnergyComponentsCatalog_Energycarriers();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl <em>Thermal Storage</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ThermalStorageImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getThermalStorage()
+		 * @generated
+		 */
+		EClass THERMAL_STORAGE = eINSTANCE.getThermalStorage();
+
+		/**
+		 * The meta object literal for the '<em><b>Volume</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_STORAGE__VOLUME = eINSTANCE.getThermalStorage_Volume();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermal Storage Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_STORAGE__THERMAL_STORAGE_TYPE = eINSTANCE.getThermalStorage_ThermalStorageType();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Temp</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_STORAGE__MAX_TEMP = eINSTANCE.getThermalStorage_MaxTemp();
+
+		/**
+		 * The meta object literal for the '<em><b>Tank Thickness</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_STORAGE__TANK_THICKNESS = eINSTANCE.getThermalStorage_TankThickness();
+
+		/**
+		 * The meta object literal for the '<em><b>Insulation Thickness</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_STORAGE__INSULATION_THICKNESS = eINSTANCE.getThermalStorage_InsulationThickness();
+
+		/**
+		 * The meta object literal for the '<em><b>Uses Medium</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference THERMAL_STORAGE__USES_MEDIUM = eINSTANCE.getThermalStorage_UsesMedium();
+
+		/**
+		 * The meta object literal for the '<em><b>Insulation Material</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference THERMAL_STORAGE__INSULATION_MATERIAL = eINSTANCE.getThermalStorage_InsulationMaterial();
+
+		/**
+		 * The meta object literal for the '<em><b>Height</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_STORAGE__HEIGHT = eINSTANCE.getThermalStorage_Height();
+
+		/**
+		 * The meta object literal for the '<em><b>Tank Material</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference THERMAL_STORAGE__TANK_MATERIAL = eINSTANCE.getThermalStorage_TankMaterial();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl <em>Electrical Storage</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectricalStorage()
+		 * @generated
+		 */
+		EClass ELECTRICAL_STORAGE = eINSTANCE.getElectricalStorage();
+
+		/**
+		 * The meta object literal for the '<em><b>Electrical Storage Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE = eINSTANCE.getElectricalStorage_ElectricalStorageType();
+
+		/**
+		 * The meta object literal for the '<em><b>Battery Capacity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__BATTERY_CAPACITY = eINSTANCE.getElectricalStorage_BatteryCapacity();
+
+		/**
+		 * The meta object literal for the '<em><b>Battery Voltage</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__BATTERY_VOLTAGE = eINSTANCE.getElectricalStorage_BatteryVoltage();
+
+		/**
+		 * The meta object literal for the '<em><b>Battery Life Cycle</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE = eINSTANCE.getElectricalStorage_BatteryLifeCycle();
+
+		/**
+		 * The meta object literal for the '<em><b>Self Discharge</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__SELF_DISCHARGE = eINSTANCE.getElectricalStorage_SelfDischarge();
+
+		/**
+		 * The meta object literal for the '<em><b>Inverter Included</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__INVERTER_INCLUDED = eINSTANCE.getElectricalStorage_InverterIncluded();
+
+		/**
+		 * The meta object literal for the '<em><b>Battery Effiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__BATTERY_EFFIENCY = eINSTANCE.getElectricalStorage_BatteryEffiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Energy Content</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICAL_STORAGE__ENERGY_CONTENT = eINSTANCE.getElectricalStorage_EnergyContent();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl <em>Combined Heat Power</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCombinedHeatPower()
+		 * @generated
+		 */
+		EClass COMBINED_HEAT_POWER = eINSTANCE.getCombinedHeatPower();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermal Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMBINED_HEAT_POWER__THERMAL_EFFICIENCY = eINSTANCE.getCombinedHeatPower_ThermalEfficiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Electrical Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY = eINSTANCE.getCombinedHeatPower_ElectricalEfficiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Installed Electrical Power</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER = eINSTANCE
+				.getCombinedHeatPower_InstalledElectricalPower();
+
+		/**
+		 * The meta object literal for the '<em><b>Electrical Efficiency Part Load</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD = eINSTANCE
+				.getCombinedHeatPower_ElectricalEfficiencyPartLoad();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermal Efficiency Part Load</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD = eINSTANCE
+				.getCombinedHeatPower_ThermalEfficiencyPartLoad();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.HeatPumpImpl <em>Heat Pump</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.HeatPumpImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHeatPump()
+		 * @generated
+		 */
+		EClass HEAT_PUMP = eINSTANCE.getHeatPump();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Source</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HEAT_PUMP__HEAT_SOURCE = eINSTANCE.getHeatPump_HeatSource();
+
+		/**
+		 * The meta object literal for the '<em><b>Power Input</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference HEAT_PUMP__POWER_INPUT = eINSTANCE.getHeatPump_PowerInput();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Output</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference HEAT_PUMP__HEAT_OUTPUT = eINSTANCE.getHeatPump_HeatOutput();
+
+		/**
+		 * The meta object literal for the '<em><b>Coefficient Of Performance</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE = eINSTANCE.getHeatPump_CoefficientOfPerformance();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.BoilerImpl <em>Boiler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.BoilerImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getBoiler()
+		 * @generated
+		 */
+		EClass BOILER = eINSTANCE.getBoiler();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BOILER__NOMINAL_EFFICIENCY = eINSTANCE.getBoiler_NominalEfficiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Boiler Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BOILER__BOILER_TYPE = eINSTANCE.getBoiler_BoilerType();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl <em>Solar Thermal Collector</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getSolarThermalCollector()
+		 * @generated
+		 */
+		EClass SOLAR_THERMAL_COLLECTOR = eINSTANCE.getSolarThermalCollector();
+
+		/**
+		 * The meta object literal for the '<em><b>Collector Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE = eINSTANCE.getSolarThermalCollector_CollectorType();
+
+		/**
+		 * The meta object literal for the '<em><b>Aperture Area</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOLAR_THERMAL_COLLECTOR__APERTURE_AREA = eINSTANCE.getSolarThermalCollector_ApertureArea();
+
+		/**
+		 * The meta object literal for the '<em><b>Optical Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY = eINSTANCE.getSolarThermalCollector_OpticalEfficiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Linear Heat Loss Coefficient</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT = eINSTANCE
+				.getSolarThermalCollector_LinearHeatLossCoefficient();
+
+		/**
+		 * The meta object literal for the '<em><b>Quadratical Heat Loss Coefficient</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT = eINSTANCE
+				.getSolarThermalCollector_QuadraticalHeatLossCoefficient();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl <em>Electrolyzer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectrolyzer()
+		 * @generated
+		 */
+		EClass ELECTROLYZER = eINSTANCE.getElectrolyzer();
+
+		/**
+		 * The meta object literal for the '<em><b>Cell Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTROLYZER__CELL_TYPE = eINSTANCE.getElectrolyzer_CellType();
+
+		/**
+		 * The meta object literal for the '<em><b>Cell Area</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTROLYZER__CELL_AREA = eINSTANCE.getElectrolyzer_CellArea();
+
+		/**
+		 * The meta object literal for the '<em><b>Number Of Cells</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTROLYZER__NUMBER_OF_CELLS = eINSTANCE.getElectrolyzer_NumberOfCells();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Operating Current Density</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY = eINSTANCE.getElectrolyzer_MaxOperatingCurrentDensity();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Operating Current Density</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY = eINSTANCE.getElectrolyzer_MinOperatingCurrentDensity();
+
+		/**
+		 * The meta object literal for the '<em><b>Overload Capacity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTROLYZER__OVERLOAD_CAPACITY = eINSTANCE.getElectrolyzer_OverloadCapacity();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Cell Voltage</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTROLYZER__NOMINAL_CELL_VOLTAGE = eINSTANCE.getElectrolyzer_NominalCellVoltage();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ThermalEnergyDeviceImpl <em>Thermal Energy Device</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ThermalEnergyDeviceImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getThermalEnergyDevice()
+		 * @generated
+		 */
+		EClass THERMAL_ENERGY_DEVICE = eINSTANCE.getThermalEnergyDevice();
+
+		/**
+		 * The meta object literal for the '<em><b>Installed Thermal Power</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER = eINSTANCE
+				.getThermalEnergyDevice_InstalledThermalPower();
+
+		/**
+		 * The meta object literal for the '<em><b>Modulation Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_ENERGY_DEVICE__MODULATION_RANGE = eINSTANCE.getThermalEnergyDevice_ModulationRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Fuel</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THERMAL_ENERGY_DEVICE__FUEL = eINSTANCE.getThermalEnergyDevice_Fuel();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl <em>Hydrogen Compressor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHydrogenCompressor()
+		 * @generated
+		 */
+		EClass HYDROGEN_COMPRESSOR = eINSTANCE.getHydrogenCompressor();
+
+		/**
+		 * The meta object literal for the '<em><b>Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN_COMPRESSOR__EFFICIENCY = eINSTANCE.getHydrogenCompressor_Efficiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermodynamic Mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE = eINSTANCE.getHydrogenCompressor_ThermodynamicMode();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Pressure</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN_COMPRESSOR__MAX_PRESSURE = eINSTANCE.getHydrogenCompressor_MaxPressure();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Delivery Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE = eINSTANCE.getHydrogenCompressor_MaxDeliveryRate();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.HydrogenStorageImpl <em>Hydrogen Storage</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.HydrogenStorageImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHydrogenStorage()
+		 * @generated
+		 */
+		EClass HYDROGEN_STORAGE = eINSTANCE.getHydrogenStorage();
+
+		/**
+		 * The meta object literal for the '<em><b>Number Of Cylinders</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS = eINSTANCE.getHydrogenStorage_NumberOfCylinders();
+
+		/**
+		 * The meta object literal for the '<em><b>Cylinder Volume</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN_STORAGE__CYLINDER_VOLUME = eINSTANCE.getHydrogenStorage_CylinderVolume();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Pressure</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN_STORAGE__NOMINAL_PRESSURE = eINSTANCE.getHydrogenStorage_NominalPressure();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.FuelCellImpl <em>Fuel Cell</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.FuelCellImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelCell()
+		 * @generated
+		 */
+		EClass FUEL_CELL = eINSTANCE.getFuelCell();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl <em>Energy Carrier</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyCarrier()
+		 * @generated
+		 */
+		EClass ENERGY_CARRIER = eINSTANCE.getEnergyCarrier();
+
+		/**
+		 * The meta object literal for the '<em><b>Co2 Emissions Factor</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_CARRIER__CO2_EMISSIONS_FACTOR = eINSTANCE.getEnergyCarrier_Co2EmissionsFactor();
+
+		/**
+		 * The meta object literal for the '<em><b>Primary Energy Factor</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR = eINSTANCE.getEnergyCarrier_PrimaryEnergyFactor();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_CARRIER__NAME = eINSTANCE.getEnergyCarrier_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Cost</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_CARRIER__COST = eINSTANCE.getEnergyCarrier_Cost();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.FossilFuelImpl <em>Fossil Fuel</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.FossilFuelImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFossilFuel()
+		 * @generated
+		 */
+		EClass FOSSIL_FUEL = eINSTANCE.getFossilFuel();
+
+		/**
+		 * The meta object literal for the '<em><b>Methane Content</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FOSSIL_FUEL__METHANE_CONTENT = eINSTANCE.getFossilFuel_MethaneContent();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.HydrogenImpl <em>Hydrogen</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.HydrogenImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHydrogen()
+		 * @generated
+		 */
+		EClass HYDROGEN = eINSTANCE.getHydrogen();
+
+		/**
+		 * The meta object literal for the '<em><b>Chemical Purity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HYDROGEN__CHEMICAL_PURITY = eINSTANCE.getHydrogen_ChemicalPurity();
+
+		/**
+		 * The meta object literal for the '<em><b>Hydrogen For Hydrogen Storage</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE = eINSTANCE.getHydrogen_HydrogenForHydrogenStorage();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ElectricityImpl <em>Electricity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ElectricityImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectricity()
+		 * @generated
+		 */
+		EClass ELECTRICITY = eINSTANCE.getElectricity();
+
+		/**
+		 * The meta object literal for the '<em><b>Renewable Share</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELECTRICITY__RENEWABLE_SHARE = eINSTANCE.getElectricity_RenewableShare();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.BioFuelImpl <em>Bio Fuel</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.BioFuelImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getBioFuel()
+		 * @generated
+		 */
+		EClass BIO_FUEL = eINSTANCE.getBioFuel();
+
+		/**
+		 * The meta object literal for the '<em><b>Water Content</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BIO_FUEL__WATER_CONTENT = eINSTANCE.getBioFuel_WaterContent();
+
+		/**
+		 * The meta object literal for the '<em><b>Ash Content</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BIO_FUEL__ASH_CONTENT = eINSTANCE.getBioFuel_AshContent();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.FuelImpl <em>Fuel</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.FuelImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuel()
+		 * @generated
+		 */
+		EClass FUEL = eINSTANCE.getFuel();
+
+		/**
+		 * The meta object literal for the '<em><b>Net Calorific Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUEL__NET_CALORIFIC_VALUE = eINSTANCE.getFuel_NetCalorificValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Gross Calorific Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUEL__GROSS_CALORIFIC_VALUE = eINSTANCE.getFuel_GrossCalorificValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Density</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUEL__DENSITY = eINSTANCE.getFuel_Density();
+
+		/**
+		 * The meta object literal for the '<em><b>Fuel Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUEL__FUEL_TYPE = eINSTANCE.getFuel_FuelType();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.WindTurbineImpl <em>Wind Turbine</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.WindTurbineImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getWindTurbine()
+		 * @generated
+		 */
+		EClass WIND_TURBINE = eINSTANCE.getWindTurbine();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl <em>Photovoltaic Module</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPhotovoltaicModule()
+		 * @generated
+		 */
+		EClass PHOTOVOLTAIC_MODULE = eINSTANCE.getPhotovoltaicModule();
+
+		/**
+		 * The meta object literal for the '<em><b>Cell Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PHOTOVOLTAIC_MODULE__CELL_TYPE = eINSTANCE.getPhotovoltaicModule_CellType();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Power</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PHOTOVOLTAIC_MODULE__NOMINAL_POWER = eINSTANCE.getPhotovoltaicModule_NominalPower();
+
+		/**
+		 * The meta object literal for the '<em><b>Mpp Voltage</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PHOTOVOLTAIC_MODULE__MPP_VOLTAGE = eINSTANCE.getPhotovoltaicModule_MppVoltage();
+
+		/**
+		 * The meta object literal for the '<em><b>Mpp Current</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PHOTOVOLTAIC_MODULE__MPP_CURRENT = eINSTANCE.getPhotovoltaicModule_MppCurrent();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY = eINSTANCE.getPhotovoltaicModule_NominalEfficiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Module Area</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PHOTOVOLTAIC_MODULE__MODULE_AREA = eINSTANCE.getPhotovoltaicModule_ModuleArea();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.InverterImpl <em>Inverter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.InverterImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getInverter()
+		 * @generated
+		 */
+		EClass INVERTER = eINSTANCE.getInverter();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.HeatExchangerImpl <em>Heat Exchanger</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.HeatExchangerImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHeatExchanger()
+		 * @generated
+		 */
+		EClass HEAT_EXCHANGER = eINSTANCE.getHeatExchanger();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Recovery Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY = eINSTANCE.getHeatExchanger_HeatRecoveryEfficiency();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Electricity Consumption</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION = eINSTANCE
+				.getHeatExchanger_NominalElectricityConsumption();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.GeothermalHeatExchangerImpl <em>Geothermal Heat Exchanger</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.GeothermalHeatExchangerImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getGeothermalHeatExchanger()
+		 * @generated
+		 */
+		EClass GEOTHERMAL_HEAT_EXCHANGER = eINSTANCE.getGeothermalHeatExchanger();
+
+		/**
+		 * The meta object literal for the '<em><b>Pipe Diameter</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER = eINSTANCE.getGeothermalHeatExchanger_PipeDiameter();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.MediumImpl <em>Medium</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.MediumImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getMedium()
+		 * @generated
+		 */
+		EClass MEDIUM = eINSTANCE.getMedium();
+
+		/**
+		 * The meta object literal for the '<em><b>Density</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MEDIUM__DENSITY = eINSTANCE.getMedium_Density();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Capacity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MEDIUM__HEAT_CAPACITY = eINSTANCE.getMedium_HeatCapacity();
+
+		/**
+		 * The meta object literal for the '<em><b>Evaporation Temperature</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MEDIUM__EVAPORATION_TEMPERATURE = eINSTANCE.getMedium_EvaporationTemperature();
+
+		/**
+		 * The meta object literal for the '<em><b>Melting Temperature</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MEDIUM__MELTING_TEMPERATURE = eINSTANCE.getMedium_MeltingTemperature();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MEDIUM__NAME = eINSTANCE.getMedium_Name();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.LinearFunctionImpl <em>Linear Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.LinearFunctionImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getLinearFunction()
+		 * @generated
+		 */
+		EClass LINEAR_FUNCTION = eINSTANCE.getLinearFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR_FUNCTION__KEY = eINSTANCE.getLinearFunction_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter M</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR_FUNCTION__PARAMETER_M = eINSTANCE.getLinearFunction_ParameterM();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter C</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR_FUNCTION__PARAMETER_C = eINSTANCE.getLinearFunction_ParameterC();
+
+		/**
+		 * The meta object literal for the '<em><b>Linearfunction</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LINEAR_FUNCTION___LINEARFUNCTION__DOUBLE = eINSTANCE.getLinearFunction__Linearfunction__double();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.DataPointImpl <em>Data Point</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.DataPointImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getDataPoint()
+		 * @generated
+		 */
+		EClass DATA_POINT = eINSTANCE.getDataPoint();
+
+		/**
+		 * The meta object literal for the '<em><b>X</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_POINT__X = eINSTANCE.getDataPoint_X();
+
+		/**
+		 * The meta object literal for the '<em><b>Y</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_POINT__Y = eINSTANCE.getDataPoint_Y();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.TableFunctionImpl <em>Table Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.TableFunctionImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTableFunction()
+		 * @generated
+		 */
+		EClass TABLE_FUNCTION = eINSTANCE.getTableFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TABLE_FUNCTION__KEY = eINSTANCE.getTableFunction_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Datapoints</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TABLE_FUNCTION__DATAPOINTS = eINSTANCE.getTableFunction_Datapoints();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ExponentialFunctionImpl <em>Exponential Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ExponentialFunctionImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getExponentialFunction()
+		 * @generated
+		 */
+		EClass EXPONENTIAL_FUNCTION = eINSTANCE.getExponentialFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPONENTIAL_FUNCTION__KEY = eINSTANCE.getExponentialFunction_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter A</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPONENTIAL_FUNCTION__PARAMETER_A = eINSTANCE.getExponentialFunction_ParameterA();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter B</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPONENTIAL_FUNCTION__PARAMETER_B = eINSTANCE.getExponentialFunction_ParameterB();
+
+		/**
+		 * The meta object literal for the '<em><b>Exponentialfunction</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation EXPONENTIAL_FUNCTION___EXPONENTIALFUNCTION__DOUBLE = eINSTANCE
+				.getExponentialFunction__Exponentialfunction__double();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.CharacteristicImpl <em>Characteristic</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.CharacteristicImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCharacteristic()
+		 * @generated
+		 */
+		EClass CHARACTERISTIC = eINSTANCE.getCharacteristic();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.TableCharacteristicImpl <em>Table Characteristic</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.TableCharacteristicImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTableCharacteristic()
+		 * @generated
+		 */
+		EClass TABLE_CHARACTERISTIC = eINSTANCE.getTableCharacteristic();
+
+		/**
+		 * The meta object literal for the '<em><b>Functions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TABLE_CHARACTERISTIC__FUNCTIONS = eINSTANCE.getTableCharacteristic_Functions();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.LinearCharacteristicImpl <em>Linear Characteristic</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.LinearCharacteristicImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getLinearCharacteristic()
+		 * @generated
+		 */
+		EClass LINEAR_CHARACTERISTIC = eINSTANCE.getLinearCharacteristic();
+
+		/**
+		 * The meta object literal for the '<em><b>Functions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LINEAR_CHARACTERISTIC__FUNCTIONS = eINSTANCE.getLinearCharacteristic_Functions();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ExponentionalCharacteristicImpl <em>Exponentional Characteristic</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ExponentionalCharacteristicImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getExponentionalCharacteristic()
+		 * @generated
+		 */
+		EClass EXPONENTIONAL_CHARACTERISTIC = eINSTANCE.getExponentionalCharacteristic();
+
+		/**
+		 * The meta object literal for the '<em><b>Functions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS = eINSTANCE.getExponentionalCharacteristic_Functions();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.ManufacturerImpl <em>Manufacturer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.ManufacturerImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getManufacturer()
+		 * @generated
+		 */
+		EClass MANUFACTURER = eINSTANCE.getManufacturer();
+
+		/**
+		 * The meta object literal for the '<em><b>Manufacturer Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MANUFACTURER__MANUFACTURER_NAME = eINSTANCE.getManufacturer_ManufacturerName();
+
+		/**
+		 * The meta object literal for the '<em><b>Country</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MANUFACTURER__COUNTRY = eINSTANCE.getManufacturer_Country();
+
+		/**
+		 * The meta object literal for the '<em><b>Out Of Business Since</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MANUFACTURER__OUT_OF_BUSINESS_SINCE = eINSTANCE.getManufacturer_OutOfBusinessSince();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.PolynomialCharacteristicImpl <em>Polynomial Characteristic</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.PolynomialCharacteristicImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPolynomialCharacteristic()
+		 * @generated
+		 */
+		EClass POLYNOMIAL_CHARACTERISTIC = eINSTANCE.getPolynomialCharacteristic();
+
+		/**
+		 * The meta object literal for the '<em><b>Functions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference POLYNOMIAL_CHARACTERISTIC__FUNCTIONS = eINSTANCE.getPolynomialCharacteristic_Functions();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl <em>Polynomial Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPolynomialFunction()
+		 * @generated
+		 */
+		EClass POLYNOMIAL_FUNCTION = eINSTANCE.getPolynomialFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POLYNOMIAL_FUNCTION__KEY = eINSTANCE.getPolynomialFunction_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter A</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POLYNOMIAL_FUNCTION__PARAMETER_A = eINSTANCE.getPolynomialFunction_ParameterA();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter B</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POLYNOMIAL_FUNCTION__PARAMETER_B = eINSTANCE.getPolynomialFunction_ParameterB();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter C</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POLYNOMIAL_FUNCTION__PARAMETER_C = eINSTANCE.getPolynomialFunction_ParameterC();
+
+		/**
+		 * The meta object literal for the '<em><b>Polynomialfunction</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation POLYNOMIAL_FUNCTION___POLYNOMIALFUNCTION__DOUBLE = eINSTANCE
+				.getPolynomialFunction__Polynomialfunction__double();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.MaterialImpl <em>Material</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.MaterialImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getMaterial()
+		 * @generated
+		 */
+		EClass MATERIAL = eINSTANCE.getMaterial();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermal Conductivity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MATERIAL__THERMAL_CONDUCTIVITY = eINSTANCE.getMaterial_ThermalConductivity();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MATERIAL__NAME = eINSTANCE.getMaterial_Name();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl <em>Energy Components Cost Catalog</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getEnergyComponentsCostCatalog()
+		 * @generated
+		 */
+		EClass ENERGY_COMPONENTS_COST_CATALOG = eINSTANCE.getEnergyComponentsCostCatalog();
+
+		/**
+		 * The meta object literal for the '<em><b>Author</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENTS_COST_CATALOG__AUTHOR = eINSTANCE.getEnergyComponentsCostCatalog_Author();
+
+		/**
+		 * The meta object literal for the '<em><b>Revision Year</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR = eINSTANCE
+				.getEnergyComponentsCostCatalog_RevisionYear();
+
+		/**
+		 * The meta object literal for the '<em><b>Cost Categories</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES = eINSTANCE
+				.getEnergyComponentsCostCatalog_CostCategories();
+
+		/**
+		 * The meta object literal for the '<em><b>Personnel Cost</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST = eINSTANCE
+				.getEnergyComponentsCostCatalog_PersonnelCost();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.CostImpl <em>Cost</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.CostImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCost()
+		 * @generated
+		 */
+		EClass COST = eINSTANCE.getCost();
+
+		/**
+		 * The meta object literal for the '<em><b>Datasource</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__DATASOURCE = eINSTANCE.getCost_Datasource();
+
+		/**
+		 * The meta object literal for the '<em><b>Investment Cost</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COST__INVESTMENT_COST = eINSTANCE.getCost_InvestmentCost();
+
+		/**
+		 * The meta object literal for the '<em><b>Other Investment Cost</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__OTHER_INVESTMENT_COST = eINSTANCE.getCost_OtherInvestmentCost();
+
+		/**
+		 * The meta object literal for the '<em><b>Personnel Hours</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__PERSONNEL_HOURS = eINSTANCE.getCost_PersonnelHours();
+
+		/**
+		 * The meta object literal for the '<em><b>Personnel Cost Share</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__PERSONNEL_COST_SHARE = eINSTANCE.getCost_PersonnelCostShare();
+
+		/**
+		 * The meta object literal for the '<em><b>Administration And Other Cost Share</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__ADMINISTRATION_AND_OTHER_COST_SHARE = eINSTANCE.getCost_AdministrationAndOtherCostShare();
+
+		/**
+		 * The meta object literal for the '<em><b>Maintenance Cost Share</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__MAINTENANCE_COST_SHARE = eINSTANCE.getCost_MaintenanceCostShare();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.PowerCharacteristicImpl <em>Power Characteristic</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.PowerCharacteristicImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPowerCharacteristic()
+		 * @generated
+		 */
+		EClass POWER_CHARACTERISTIC = eINSTANCE.getPowerCharacteristic();
+
+		/**
+		 * The meta object literal for the '<em><b>Functions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference POWER_CHARACTERISTIC__FUNCTIONS = eINSTANCE.getPowerCharacteristic_Functions();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.impl.PowerFunctionImpl <em>Power Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.impl.PowerFunctionImpl
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getPowerFunction()
+		 * @generated
+		 */
+		EClass POWER_FUNCTION = eINSTANCE.getPowerFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POWER_FUNCTION__KEY = eINSTANCE.getPowerFunction_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter A</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POWER_FUNCTION__PARAMETER_A = eINSTANCE.getPowerFunction_ParameterA();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter B</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POWER_FUNCTION__PARAMETER_B = eINSTANCE.getPowerFunction_ParameterB();
+
+		/**
+		 * The meta object literal for the '<em><b>Powerfunction</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation POWER_FUNCTION___POWERFUNCTION__DOUBLE = eINSTANCE.getPowerFunction__Powerfunction__double();
+
+		/**
+		 * The meta object literal for the '<em><b>Component Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__COMPONENT_NAME = eINSTANCE.getCost_ComponentName();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__DESCRIPTION = eINSTANCE.getCost_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Heat Source</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COST__HEAT_SOURCE = eINSTANCE.getCost_HeatSource();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.HeatSources <em>Heat Sources</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.HeatSources
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getHeatSources()
+		 * @generated
+		 */
+		EEnum HEAT_SOURCES = eINSTANCE.getHeatSources();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.CollectorTypes <em>Collector Types</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.CollectorTypes
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getCollectorTypes()
+		 * @generated
+		 */
+		EEnum COLLECTOR_TYPES = eINSTANCE.getCollectorTypes();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.ElectricalStorageTypes <em>Electrical Storage Types</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.ElectricalStorageTypes
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getElectricalStorageTypes()
+		 * @generated
+		 */
+		EEnum ELECTRICAL_STORAGE_TYPES = eINSTANCE.getElectricalStorageTypes();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.BoilerTypes <em>Boiler Types</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.BoilerTypes
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getBoilerTypes()
+		 * @generated
+		 */
+		EEnum BOILER_TYPES = eINSTANCE.getBoilerTypes();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.ThermalStorageTypes <em>Thermal Storage Types</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.ThermalStorageTypes
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getThermalStorageTypes()
+		 * @generated
+		 */
+		EEnum THERMAL_STORAGE_TYPES = eINSTANCE.getThermalStorageTypes();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.FuelTypes <em>Fuel Types</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.FuelTypes
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getFuelTypes()
+		 * @generated
+		 */
+		EEnum FUEL_TYPES = eINSTANCE.getFuelTypes();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.TypeOfHeatSource <em>Type Of Heat Source</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getTypeOfHeatSource()
+		 * @generated
+		 */
+		EEnum TYPE_OF_HEAT_SOURCE = eINSTANCE.getTypeOfHeatSource();
+
+		/**
+		 * The meta object literal for the '{@link de.hftstuttgart.energycomponents.cellTypesElectrolyzer <em>cell Types Electrolyzer</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.energycomponents.cellTypesElectrolyzer
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getcellTypesElectrolyzer()
+		 * @generated
+		 */
+		EEnum CELL_TYPES_ELECTROLYZER = eINSTANCE.getcellTypesElectrolyzer();
+
+		/**
+		 * The meta object literal for the '<em>Quantity Double</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.units.NullableQuantity
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityDouble()
+		 * @generated
+		 */
+		EDataType QUANTITY_DOUBLE = eINSTANCE.getQuantityDouble();
+
+		/**
+		 * The meta object literal for the '<em>Quantity Long</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see de.hftstuttgart.units.NullableQuantity
+		 * @see de.hftstuttgart.energycomponents.impl.EnCompPackageImpl#getQuantityLong()
+		 * @generated
+		 */
+		EDataType QUANTITY_LONG = eINSTANCE.getQuantityLong();
+
+	}
+
+} //EnCompPackage
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyCarrier.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyCarrier.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bbcefe81a1a90c07c141bcad45ea6532fee1d87
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyCarrier.java
@@ -0,0 +1,118 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Energy Carrier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyCarrier#getCo2EmissionsFactor <em>Co2 Emissions Factor</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyCarrier#getPrimaryEnergyFactor <em>Primary Energy Factor</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyCarrier#getName <em>Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyCarrier#getCost <em>Cost</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyCarrier()
+ * @model abstract="true"
+ * @generated
+ */
+public interface EnergyCarrier extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Co2 Emissions Factor</b></em>' attribute.
+	 * The default value is <code>"t/MW*h"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Co2 Emissions Factor</em>' attribute.
+	 * @see #setCo2EmissionsFactor(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyCarrier_Co2EmissionsFactor()
+	 * @model default="t/MW*h" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getCo2EmissionsFactor();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyCarrier#getCo2EmissionsFactor <em>Co2 Emissions Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Co2 Emissions Factor</em>' attribute.
+	 * @see #getCo2EmissionsFactor()
+	 * @generated
+	 */
+	void setCo2EmissionsFactor(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Primary Energy Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Primary Energy Factor</em>' attribute.
+	 * @see #setPrimaryEnergyFactor(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyCarrier_PrimaryEnergyFactor()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getPrimaryEnergyFactor();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyCarrier#getPrimaryEnergyFactor <em>Primary Energy Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Primary Energy Factor</em>' attribute.
+	 * @see #getPrimaryEnergyFactor()
+	 * @generated
+	 */
+	void setPrimaryEnergyFactor(double 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.energycomponents.EnCompPackage#getEnergyCarrier_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyCarrier#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>Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cost</em>' attribute.
+	 * @see #setCost(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyCarrier_Cost()
+	 * @model
+	 * @generated
+	 */
+	double getCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyCarrier#getCost <em>Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cost</em>' attribute.
+	 * @see #getCost()
+	 * @generated
+	 */
+	void setCost(double value);
+
+} // EnergyCarrier
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyCarriers.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyCarriers.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b66b04eed16938feefd05e99ad4c33eaf168b53
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyCarriers.java
@@ -0,0 +1,386 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Energy Carriers</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyCarriers()
+ * @model
+ * @generated
+ */
+public enum EnergyCarriers implements Enumerator {
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NATURAL_GAS(0, "naturalGas", "naturalGas"),
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OIL(1, "oil", "oil"),
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DIESEL(2, "diesel", "diesel"),
+
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIO_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BIO_GAS(0, "bioGas", "bioGas"),
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_CHIPS(3, "woodChips", "woodChips"),
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SEWAGE_GAS(4, "sewageGas", "sewageGas"),
+
+	/**
+	 * The '<em><b>Electricity</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ELECTRICITY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ELECTRICITY(8, "electricity", "electricity"),
+
+	/**
+	 * The '<em><b>Hydrogen</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HYDROGEN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	HYDROGEN(9, "hydrogen", "hydrogen");
+
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS
+	 * @model name="naturalGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NATURAL_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL
+	 * @model name="oil"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OIL_VALUE = 1;
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL
+	 * @model name="diesel"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DIESEL_VALUE = 2;
+
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIO_GAS
+	 * @model name="bioGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BIO_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS
+	 * @model name="syntheticGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SYNTHETIC_GAS_VALUE = 1;
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS
+	 * @model name="woodPellets"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_PELLETS_VALUE = 2;
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS
+	 * @model name="woodChips"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_CHIPS_VALUE = 3;
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS
+	 * @model name="sewageGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SEWAGE_GAS_VALUE = 4;
+
+	/**
+	 * The '<em><b>Electricity</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ELECTRICITY
+	 * @model name="electricity"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ELECTRICITY_VALUE = 8;
+
+	/**
+	 * The '<em><b>Hydrogen</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HYDROGEN
+	 * @model name="hydrogen"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int HYDROGEN_VALUE = 9;
+
+	/**
+	 * An array of all the '<em><b>Energy Carriers</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final EnergyCarriers[] VALUES_ARRAY = new EnergyCarriers[] { NATURAL_GAS, OIL, DIESEL, BIO_GAS,
+			SYNTHETIC_GAS, WOOD_PELLETS, WOOD_CHIPS, SEWAGE_GAS, ELECTRICITY, HYDROGEN, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Energy Carriers</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<EnergyCarriers> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Energy Carriers</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EnergyCarriers get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EnergyCarriers result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Energy Carriers</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EnergyCarriers getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EnergyCarriers result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Energy Carriers</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EnergyCarriers get(int value) {
+		switch (value) {
+		case NATURAL_GAS_VALUE:
+			return NATURAL_GAS;
+		case OIL_VALUE:
+			return OIL;
+		case DIESEL_VALUE:
+			return DIESEL;
+		case WOOD_CHIPS_VALUE:
+			return WOOD_CHIPS;
+		case SEWAGE_GAS_VALUE:
+			return SEWAGE_GAS;
+		case ELECTRICITY_VALUE:
+			return ELECTRICITY;
+		case HYDROGEN_VALUE:
+			return HYDROGEN;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EnergyCarriers(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //EnergyCarriers
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponent.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponent.java
new file mode 100644
index 0000000000000000000000000000000000000000..b3b74425efca449c71da22273d22eab13e866157
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponent.java
@@ -0,0 +1,146 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Energy Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponent#getDescription <em>Description</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponent#getModelName <em>Model Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponent#getRevisionYear <em>Revision Year</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponent#getTechnicalLifetime <em>Technical Lifetime</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponent#getManufacturer <em>Manufacturer</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface EnergyComponent extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponent_Description()
+	 * @model
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponent#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Model Name</b></em>' attribute.
+	 * The default value is <code>"model xyz"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Model Name</em>' attribute.
+	 * @see #setModelName(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponent_ModelName()
+	 * @model default="model xyz" id="true" required="true"
+	 * @generated
+	 */
+	String getModelName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponent#getModelName <em>Model Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Model Name</em>' attribute.
+	 * @see #getModelName()
+	 * @generated
+	 */
+	void setModelName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Year from which information is provided
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Revision Year</em>' attribute.
+	 * @see #setRevisionYear(int)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponent_RevisionYear()
+	 * @model
+	 * @generated
+	 */
+	int getRevisionYear();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponent#getRevisionYear <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Revision Year</em>' attribute.
+	 * @see #getRevisionYear()
+	 * @generated
+	 */
+	void setRevisionYear(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Technical Lifetime</b></em>' attribute.
+	 * The default value is <code>"30"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * years
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Technical Lifetime</em>' attribute.
+	 * @see #setTechnicalLifetime(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponent_TechnicalLifetime()
+	 * @model default="30"
+	 * @generated
+	 */
+	double getTechnicalLifetime();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponent#getTechnicalLifetime <em>Technical Lifetime</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Technical Lifetime</em>' attribute.
+	 * @see #getTechnicalLifetime()
+	 * @generated
+	 */
+	void setTechnicalLifetime(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Manufacturer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Manufacturer</em>' reference.
+	 * @see #setManufacturer(Manufacturer)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponent_Manufacturer()
+	 * @model required="true"
+	 * @generated
+	 */
+	Manufacturer getManufacturer();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponent#getManufacturer <em>Manufacturer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Manufacturer</em>' reference.
+	 * @see #getManufacturer()
+	 * @generated
+	 */
+	void setManufacturer(Manufacturer value);
+
+} // EnergyComponent
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponentsCatalog.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponentsCatalog.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1c6e7b216f893aa9bfcd44f4b5a5fc8c9f77d22
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponentsCatalog.java
@@ -0,0 +1,345 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Energy Components Catalog</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getAuthor <em>Author</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getBioFuels <em>Bio Fuels</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getMedia <em>Media</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getCombinedHeatPowerUtilities <em>Combined Heat Power Utilities</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getBoilers <em>Boilers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getPhotovoltaicModules <em>Photovoltaic Modules</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getSolarThermalCollectors <em>Solar Thermal Collectors</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getWindTurbines <em>Wind Turbines</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getGeothermalHeatExchangers <em>Geothermal Heat Exchangers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHeatPumps <em>Heat Pumps</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getInverters <em>Inverters</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHeatExchangers <em>Heat Exchangers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getElectrolyzers <em>Electrolyzers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHydrogenCompressors <em>Hydrogen Compressors</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getFuelCells <em>Fuel Cells</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getThermalStorages <em>Thermal Storages</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getPowerStorages <em>Power Storages</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getHydrogenStorages <em>Hydrogen Storages</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getFossilFuels <em>Fossil Fuels</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getManufacturers <em>Manufacturers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getMaterials <em>Materials</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getEnergycomponentscostcatalog <em>Energycomponentscostcatalog</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getEnergycarriers <em>Energycarriers</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog()
+ * @model
+ * @generated
+ */
+public interface EnergyComponentsCatalog extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Author</b></em>' attribute.
+	 * The default value is <code>"HFT_Stuttgart"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Author</em>' attribute.
+	 * @see #setAuthor(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Author()
+	 * @model default="HFT_Stuttgart"
+	 * @generated
+	 */
+	String getAuthor();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getAuthor <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Author</em>' attribute.
+	 * @see #getAuthor()
+	 * @generated
+	 */
+	void setAuthor(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Bio Fuels</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.BioFuel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bio Fuels</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_BioFuels()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<BioFuel> getBioFuels();
+
+	/**
+	 * Returns the value of the '<em><b>Media</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Medium}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Media</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Media()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Medium> getMedia();
+
+	/**
+	 * Returns the value of the '<em><b>Combined Heat Power Utilities</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.CombinedHeatPower}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Combined Heat Power Utilities</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_CombinedHeatPowerUtilities()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CombinedHeatPower> getCombinedHeatPowerUtilities();
+
+	/**
+	 * Returns the value of the '<em><b>Boilers</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Boiler}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Boilers</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Boilers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Boiler> getBoilers();
+
+	/**
+	 * Returns the value of the '<em><b>Photovoltaic Modules</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.PhotovoltaicModule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Photovoltaic Modules</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_PhotovoltaicModules()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<PhotovoltaicModule> getPhotovoltaicModules();
+
+	/**
+	 * Returns the value of the '<em><b>Solar Thermal Collectors</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.SolarThermalCollector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Solar Thermal Collectors</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_SolarThermalCollectors()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<SolarThermalCollector> getSolarThermalCollectors();
+
+	/**
+	 * Returns the value of the '<em><b>Wind Turbines</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.WindTurbine}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Wind Turbines</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_WindTurbines()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<WindTurbine> getWindTurbines();
+
+	/**
+	 * Returns the value of the '<em><b>Geothermal Heat Exchangers</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Geothermal Heat Exchangers</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_GeothermalHeatExchangers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<GeothermalHeatExchanger> getGeothermalHeatExchangers();
+
+	/**
+	 * Returns the value of the '<em><b>Heat Pumps</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.HeatPump}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Heat Pumps</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_HeatPumps()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<HeatPump> getHeatPumps();
+
+	/**
+	 * Returns the value of the '<em><b>Inverters</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Inverter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inverters</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Inverters()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Inverter> getInverters();
+
+	/**
+	 * Returns the value of the '<em><b>Heat Exchangers</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.HeatExchanger}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Heat Exchangers</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_HeatExchangers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<HeatExchanger> getHeatExchangers();
+
+	/**
+	 * Returns the value of the '<em><b>Electrolyzers</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Electrolyzer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Electrolyzers</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Electrolyzers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Electrolyzer> getElectrolyzers();
+
+	/**
+	 * Returns the value of the '<em><b>Hydrogen Compressors</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.HydrogenCompressor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hydrogen Compressors</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_HydrogenCompressors()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<HydrogenCompressor> getHydrogenCompressors();
+
+	/**
+	 * Returns the value of the '<em><b>Fuel Cells</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.FuelCell}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fuel Cells</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_FuelCells()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FuelCell> getFuelCells();
+
+	/**
+	 * Returns the value of the '<em><b>Thermal Storages</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.ThermalStorage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Thermal Storages</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_ThermalStorages()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<ThermalStorage> getThermalStorages();
+
+	/**
+	 * Returns the value of the '<em><b>Power Storages</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.ElectricalStorage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Power Storages</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_PowerStorages()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<ElectricalStorage> getPowerStorages();
+
+	/**
+	 * Returns the value of the '<em><b>Hydrogen Storages</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.HydrogenStorage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hydrogen Storages</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_HydrogenStorages()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<HydrogenStorage> getHydrogenStorages();
+
+	/**
+	 * Returns the value of the '<em><b>Fossil Fuels</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.FossilFuel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fossil Fuels</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_FossilFuels()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FossilFuel> getFossilFuels();
+
+	/**
+	 * Returns the value of the '<em><b>Manufacturers</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Manufacturer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Manufacturers</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Manufacturers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Manufacturer> getManufacturers();
+
+	/**
+	 * Returns the value of the '<em><b>Materials</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Material}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Materials</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Materials()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Material> getMaterials();
+
+	/**
+	 * Returns the value of the '<em><b>Energycomponentscostcatalog</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Energycomponentscostcatalog</em>' containment reference.
+	 * @see #setEnergycomponentscostcatalog(EnergyComponentsCostCatalog)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Energycomponentscostcatalog()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EnergyComponentsCostCatalog getEnergycomponentscostcatalog();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog#getEnergycomponentscostcatalog <em>Energycomponentscostcatalog</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Energycomponentscostcatalog</em>' containment reference.
+	 * @see #getEnergycomponentscostcatalog()
+	 * @generated
+	 */
+	void setEnergycomponentscostcatalog(EnergyComponentsCostCatalog value);
+
+	/**
+	 * Returns the value of the '<em><b>Energycarriers</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.EnergyCarrier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Energycarriers</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCatalog_Energycarriers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<EnergyCarrier> getEnergycarriers();
+
+} // EnergyComponentsCatalog
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponentsCostCatalog.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponentsCostCatalog.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a6a07571763591d1ae45627ab042014d60079d9
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/EnergyComponentsCostCatalog.java
@@ -0,0 +1,108 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Energy Components Cost Catalog</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getAuthor <em>Author</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getRevisionYear <em>Revision Year</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getCostCategories <em>Cost Categories</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getPersonnelCost <em>Personnel Cost</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCostCatalog()
+ * @model
+ * @generated
+ */
+public interface EnergyComponentsCostCatalog extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Author</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Author</em>' attribute.
+	 * @see #setAuthor(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCostCatalog_Author()
+	 * @model
+	 * @generated
+	 */
+	String getAuthor();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getAuthor <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Author</em>' attribute.
+	 * @see #getAuthor()
+	 * @generated
+	 */
+	void setAuthor(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Revision Year</em>' attribute.
+	 * @see #setRevisionYear(int)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCostCatalog_RevisionYear()
+	 * @model required="true"
+	 * @generated
+	 */
+	int getRevisionYear();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getRevisionYear <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Revision Year</em>' attribute.
+	 * @see #getRevisionYear()
+	 * @generated
+	 */
+	void setRevisionYear(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Cost Categories</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Cost}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cost Categories</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCostCatalog_CostCategories()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Cost> getCostCategories();
+
+	/**
+	 * Returns the value of the '<em><b>Personnel Cost</b></em>' attribute.
+	 * The default value is <code>"150 "</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Personnel Cost</em>' attribute.
+	 * @see #setPersonnelCost(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getEnergyComponentsCostCatalog_PersonnelCost()
+	 * @model default="150 "
+	 * @generated
+	 */
+	double getPersonnelCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog#getPersonnelCost <em>Personnel Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Personnel Cost</em>' attribute.
+	 * @see #getPersonnelCost()
+	 * @generated
+	 */
+	void setPersonnelCost(double value);
+
+} // EnergyComponentsCostCatalog
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ExponentialFunction.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ExponentialFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..78c2550308b546fb2e5f946b29984ca59c995307
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ExponentialFunction.java
@@ -0,0 +1,113 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Exponential Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * y = ParameterA * ParameterB ^ x
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.ExponentialFunction#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ExponentialFunction#getParameterA <em>Parameter A</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ExponentialFunction#getParameterB <em>Parameter B</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getExponentialFunction()
+ * @model
+ * @generated
+ */
+public interface ExponentialFunction extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getExponentialFunction_Key()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ExponentialFunction#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * ParameterB ^ x
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Parameter A</em>' attribute.
+	 * @see #setParameterA(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getExponentialFunction_ParameterA()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterA();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ExponentialFunction#getParameterA <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter A</em>' attribute.
+	 * @see #getParameterA()
+	 * @generated
+	 */
+	void setParameterA(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * ParameterB ^ x
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Parameter B</em>' attribute.
+	 * @see #setParameterB(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getExponentialFunction_ParameterB()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterB();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ExponentialFunction#getParameterB <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter B</em>' attribute.
+	 * @see #getParameterB()
+	 * @generated
+	 */
+	void setParameterB(double value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * ParameterB ^ x
+	 * <!-- end-model-doc -->
+	 * @model required="true"
+	 * @generated
+	 */
+	double exponentialfunction(double x);
+
+} // ExponentialFunction
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ExponentionalCharacteristic.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ExponentionalCharacteristic.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd216f5abe054144726eb4aca53f2b0d2defc747
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ExponentionalCharacteristic.java
@@ -0,0 +1,36 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Exponentional Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getExponentionalCharacteristic()
+ * @model
+ * @generated
+ */
+public interface ExponentionalCharacteristic extends Characteristic {
+	/**
+	 * Returns the value of the '<em><b>Functions</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.ExponentialFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Functions</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getExponentionalCharacteristic_Functions()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<ExponentialFunction> getFunctions();
+
+} // ExponentionalCharacteristic
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FossilFuel.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FossilFuel.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e0d206ea41bec6d22cfe545db4a71772f79dafa
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FossilFuel.java
@@ -0,0 +1,44 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fossil Fuel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.FossilFuel#getMethaneContent <em>Methane Content</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getFossilFuel()
+ * @model
+ * @generated
+ */
+public interface FossilFuel extends Fuel {
+	/**
+	 * Returns the value of the '<em><b>Methane Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Methane Content</em>' attribute.
+	 * @see #setMethaneContent(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFossilFuel_MethaneContent()
+	 * @model
+	 * @generated
+	 */
+	double getMethaneContent();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.FossilFuel#getMethaneContent <em>Methane Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Methane Content</em>' attribute.
+	 * @see #getMethaneContent()
+	 * @generated
+	 */
+	void setMethaneContent(double value);
+
+} // FossilFuel
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FossilFuelTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FossilFuelTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb90beb8f5a8cd2002ecdc0cf3e0d9275757aacf
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FossilFuelTypes.java
@@ -0,0 +1,274 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Fossil Fuel Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getFossilFuelTypes()
+ * @model
+ * @generated
+ */
+public enum FossilFuelTypes implements Enumerator {
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NATURAL_GAS(0, "naturalGas", "naturalGas"),
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OIL(1, "oil", "oil"),
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DIESEL(2, "diesel", "diesel"),
+	/**
+	 * The '<em><b>LNG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #LNG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LNG(3, "LNG", "LNG"),
+	/**
+	 * The '<em><b>CNG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #CNG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CNG(4, "CNG", "CNG");
+
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS
+	 * @model name="naturalGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NATURAL_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL
+	 * @model name="oil"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OIL_VALUE = 1;
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL
+	 * @model name="diesel"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DIESEL_VALUE = 2;
+
+	/**
+	 * The '<em><b>LNG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LNG
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LNG_VALUE = 3;
+
+	/**
+	 * The '<em><b>CNG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CNG
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CNG_VALUE = 4;
+
+	/**
+	 * An array of all the '<em><b>Fossil Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final FossilFuelTypes[] VALUES_ARRAY = new FossilFuelTypes[] { NATURAL_GAS, OIL, DIESEL, LNG, CNG, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Fossil Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<FossilFuelTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Fossil Fuel Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static FossilFuelTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FossilFuelTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Fossil Fuel Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static FossilFuelTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FossilFuelTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Fossil Fuel Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static FossilFuelTypes get(int value) {
+		switch (value) {
+		case NATURAL_GAS_VALUE:
+			return NATURAL_GAS;
+		case OIL_VALUE:
+			return OIL;
+		case DIESEL_VALUE:
+			return DIESEL;
+		case LNG_VALUE:
+			return LNG;
+		case CNG_VALUE:
+			return CNG;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private FossilFuelTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //FossilFuelTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Fuel.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Fuel.java
new file mode 100644
index 0000000000000000000000000000000000000000..b922afa2fbb055dde1186d689d1a51e9a5375337
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Fuel.java
@@ -0,0 +1,132 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fuel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Fuel#getNetCalorificValue <em>Net Calorific Value</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Fuel#getGrossCalorificValue <em>Gross Calorific Value</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Fuel#getDensity <em>Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Fuel#getFuelType <em>Fuel Type</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Fuel extends EnergyCarrier {
+	/**
+	 * Returns the value of the '<em><b>Net Calorific Value</b></em>' attribute.
+	 * The default value is <code>"(kW*h)/m\u00b3"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kWh/m³
+	 * Heizwert
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Net Calorific Value</em>' attribute.
+	 * @see #setNetCalorificValue(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel_NetCalorificValue()
+	 * @model default="(kW*h)/m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getNetCalorificValue();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Fuel#getNetCalorificValue <em>Net Calorific Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Net Calorific Value</em>' attribute.
+	 * @see #getNetCalorificValue()
+	 * @generated
+	 */
+	void setNetCalorificValue(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Gross Calorific Value</b></em>' attribute.
+	 * The default value is <code>"(kW*h)/m\u00b3"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kWh/m³
+	 * Brennwert
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Gross Calorific Value</em>' attribute.
+	 * @see #setGrossCalorificValue(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel_GrossCalorificValue()
+	 * @model default="(kW*h)/m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getGrossCalorificValue();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Fuel#getGrossCalorificValue <em>Gross Calorific Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Gross Calorific Value</em>' attribute.
+	 * @see #getGrossCalorificValue()
+	 * @generated
+	 */
+	void setGrossCalorificValue(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Density</b></em>' attribute.
+	 * The default value is <code>"kg/m\u00b3"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kg/m³
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Density</em>' attribute.
+	 * @see #setDensity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel_Density()
+	 * @model default="kg/m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getDensity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Fuel#getDensity <em>Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Density</em>' attribute.
+	 * @see #getDensity()
+	 * @generated
+	 */
+	void setDensity(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Fuel Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.FuelTypes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fuel Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
+	 * @see #setFuelType(FuelTypes)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuel_FuelType()
+	 * @model required="true"
+	 * @generated
+	 */
+	FuelTypes getFuelType();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Fuel#getFuelType <em>Fuel Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Fuel Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
+	 * @see #getFuelType()
+	 * @generated
+	 */
+	void setFuelType(FuelTypes value);
+
+} // Fuel
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FuelCell.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FuelCell.java
new file mode 100644
index 0000000000000000000000000000000000000000..2613ffc0e1b2a45116d70864deefe50868681889
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FuelCell.java
@@ -0,0 +1,16 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fuel Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuelCell()
+ * @model
+ * @generated
+ */
+public interface FuelCell extends EnergyComponent {
+} // FuelCell
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FuelTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FuelTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d8a3d105c216bc836c4d6e5b87e407be93953eb
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/FuelTypes.java
@@ -0,0 +1,355 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Fuel Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getFuelTypes()
+ * @model
+ * @generated
+ */
+public enum FuelTypes implements Enumerator {
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NATURAL_GAS(0, "naturalGas", "naturalGas"),
+	/**
+	 * The '<em><b>Oil</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #OIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OIL(1, "oil", "oil"),
+	/**
+	 * The '<em><b>Diesel</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #DIESEL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DIESEL(2, "diesel", "diesel"),
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #BIO_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BIO_GAS(0, "bioGas", "bioGas"),
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SYNTHETIC_GAS(1, "syntheticGas", "syntheticGas"),
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_PELLETS(2, "woodPellets", "woodPellets"),
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_CHIPS(3, "woodChips", "woodChips"),
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SEWAGE_GAS(4, "sewageGas", "sewageGas"),
+	/**
+	 * The '<em><b>Electricity</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	* <!-- end-user-doc -->
+	 * @see #ELECTRICITY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ELECTRICITY(8, "electricity", "electricity");
+
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS
+	 * @model name="naturalGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NATURAL_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL
+	 * @model name="oil"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OIL_VALUE = 1;
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL
+	 * @model name="diesel"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DIESEL_VALUE = 2;
+
+	/**
+	 * The '<em><b>Bio Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIO_GAS
+	 * @model name="bioGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BIO_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS
+	 * @model name="syntheticGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SYNTHETIC_GAS_VALUE = 1;
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS
+	 * @model name="woodPellets"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_PELLETS_VALUE = 2;
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS
+	 * @model name="woodChips"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_CHIPS_VALUE = 3;
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS
+	 * @model name="sewageGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SEWAGE_GAS_VALUE = 4;
+
+	/**
+	 * The '<em><b>Electricity</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ELECTRICITY
+	 * @model name="electricity"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ELECTRICITY_VALUE = 8;
+
+	/**
+	 * An array of all the '<em><b>Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final FuelTypes[] VALUES_ARRAY = new FuelTypes[] { NATURAL_GAS, OIL, DIESEL, BIO_GAS, SYNTHETIC_GAS,
+			WOOD_PELLETS, WOOD_CHIPS, SEWAGE_GAS, ELECTRICITY, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Fuel Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<FuelTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Fuel Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static FuelTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FuelTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Fuel Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static FuelTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FuelTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Fuel Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static FuelTypes get(int value) {
+		switch (value) {
+		case NATURAL_GAS_VALUE:
+			return NATURAL_GAS;
+		case OIL_VALUE:
+			return OIL;
+		case DIESEL_VALUE:
+			return DIESEL;
+		case WOOD_CHIPS_VALUE:
+			return WOOD_CHIPS;
+		case SEWAGE_GAS_VALUE:
+			return SEWAGE_GAS;
+		case ELECTRICITY_VALUE:
+			return ELECTRICITY;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private FuelTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //FuelTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/GeothermalHeatExchanger.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/GeothermalHeatExchanger.java
new file mode 100644
index 0000000000000000000000000000000000000000..37fc2162556b7cc3fe0b47ae5419a5271f8ecdfe
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/GeothermalHeatExchanger.java
@@ -0,0 +1,47 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Geothermal Heat Exchanger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger#getPipeDiameter <em>Pipe Diameter</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getGeothermalHeatExchanger()
+ * @model
+ * @generated
+ */
+public interface GeothermalHeatExchanger extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Pipe Diameter</b></em>' attribute.
+	 * The default value is <code>"1 cm"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pipe Diameter</em>' attribute.
+	 * @see #setPipeDiameter(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getGeothermalHeatExchanger_PipeDiameter()
+	 * @model default="1 cm" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getPipeDiameter();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger#getPipeDiameter <em>Pipe Diameter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pipe Diameter</em>' attribute.
+	 * @see #getPipeDiameter()
+	 * @generated
+	 */
+	void setPipeDiameter(NullableQuantity value);
+
+} // GeothermalHeatExchanger
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatExchanger.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatExchanger.java
new file mode 100644
index 0000000000000000000000000000000000000000..f60aed823a740ae905ee9bd722d9c41eef80dc48
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatExchanger.java
@@ -0,0 +1,74 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Heat Exchanger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.HeatExchanger#getHeatRecoveryEfficiency <em>Heat Recovery Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HeatExchanger#getNominalElectricityConsumption <em>Nominal Electricity Consumption</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatExchanger()
+ * @model
+ * @generated
+ */
+public interface HeatExchanger extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Heat Recovery Efficiency</b></em>' attribute.
+	 * The default value is <code>"0.8"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Heat Recovery Efficiency</em>' attribute.
+	 * @see #setHeatRecoveryEfficiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatExchanger_HeatRecoveryEfficiency()
+	 * @model default="0.8"
+	 * @generated
+	 */
+	double getHeatRecoveryEfficiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatExchanger#getHeatRecoveryEfficiency <em>Heat Recovery Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Heat Recovery Efficiency</em>' attribute.
+	 * @see #getHeatRecoveryEfficiency()
+	 * @generated
+	 */
+	void setHeatRecoveryEfficiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Nominal Electricity Consumption</b></em>' attribute.
+	 * The default value is <code>"W"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Watt
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Nominal Electricity Consumption</em>' attribute.
+	 * @see #setNominalElectricityConsumption(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatExchanger_NominalElectricityConsumption()
+	 * @model default="W" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getNominalElectricityConsumption();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatExchanger#getNominalElectricityConsumption <em>Nominal Electricity Consumption</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Electricity Consumption</em>' attribute.
+	 * @see #getNominalElectricityConsumption()
+	 * @generated
+	 */
+	void setNominalElectricityConsumption(NullableQuantity value);
+
+} // HeatExchanger
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatPump.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatPump.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b4c57d6d0e6ff8e84cec60eb0e0e486215b7e19
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatPump.java
@@ -0,0 +1,116 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Heat Pump</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getHeatSource <em>Heat Source</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getPowerInput <em>Power Input</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getHeatOutput <em>Heat Output</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump()
+ * @model
+ * @generated
+ */
+public interface HeatPump extends ThermalEnergyDevice {
+	/**
+	 * Returns the value of the '<em><b>Heat Source</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.HeatSources}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Heat Source</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.HeatSources
+	 * @see #setHeatSource(HeatSources)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_HeatSource()
+	 * @model required="true"
+	 * @generated
+	 */
+	HeatSources getHeatSource();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getHeatSource <em>Heat Source</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Heat Source</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.HeatSources
+	 * @see #getHeatSource()
+	 * @generated
+	 */
+	void setHeatSource(HeatSources value);
+
+	/**
+	 * Returns the value of the '<em><b>Power Input</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Power Input</em>' containment reference.
+	 * @see #setPowerInput(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_PowerInput()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Characteristic getPowerInput();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getPowerInput <em>Power Input</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Power Input</em>' containment reference.
+	 * @see #getPowerInput()
+	 * @generated
+	 */
+	void setPowerInput(Characteristic value);
+
+	/**
+	 * Returns the value of the '<em><b>Heat Output</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Heat Output</em>' containment reference.
+	 * @see #setHeatOutput(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_HeatOutput()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Characteristic getHeatOutput();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getHeatOutput <em>Heat Output</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Heat Output</em>' containment reference.
+	 * @see #getHeatOutput()
+	 * @generated
+	 */
+	void setHeatOutput(Characteristic value);
+
+	/**
+	 * Returns the value of the '<em><b>Coefficient Of Performance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Coefficient Of Performance</em>' containment reference.
+	 * @see #setCoefficientOfPerformance(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_CoefficientOfPerformance()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Characteristic getCoefficientOfPerformance();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Coefficient Of Performance</em>' containment reference.
+	 * @see #getCoefficientOfPerformance()
+	 * @generated
+	 */
+	void setCoefficientOfPerformance(Characteristic value);
+
+} // HeatPump
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatSources.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatSources.java
new file mode 100644
index 0000000000000000000000000000000000000000..4989ec958de08d30a4e69c80e1f39689fa2d3cb3
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HeatSources.java
@@ -0,0 +1,226 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Heat Sources</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatSources()
+ * @model
+ * @generated
+ */
+public enum HeatSources implements Enumerator {
+	/**
+	 * The '<em><b>Air</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AIR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AIR(0, "air", "air"),
+
+	/**
+	 * The '<em><b>Ground</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GROUND_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GROUND(0, "ground", "ground"),
+
+	/**
+	 * The '<em><b>Water</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WATER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WATER(0, "water", "water");
+
+	/**
+	 * The '<em><b>Air</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AIR
+	 * @model name="air"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AIR_VALUE = 0;
+
+	/**
+	 * The '<em><b>Ground</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GROUND
+	 * @model name="ground"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GROUND_VALUE = 0;
+
+	/**
+	 * The '<em><b>Water</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WATER
+	 * @model name="water"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WATER_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Heat Sources</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final HeatSources[] VALUES_ARRAY = new HeatSources[] { AIR, GROUND, WATER, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Heat Sources</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<HeatSources> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Heat Sources</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static HeatSources get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			HeatSources result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Heat Sources</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static HeatSources getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			HeatSources result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Heat Sources</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static HeatSources get(int value) {
+		switch (value) {
+		case AIR_VALUE:
+			return AIR;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private HeatSources(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //HeatSources
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Hydrocarbon.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Hydrocarbon.java
new file mode 100644
index 0000000000000000000000000000000000000000..2ec7a02b11c4f5adb14cf0e229ebbb8b70421c46
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Hydrocarbon.java
@@ -0,0 +1,16 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hydrocarbon</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrocarbon()
+ * @model
+ * @generated
+ */
+public interface Hydrocarbon extends Medium {
+} // Hydrocarbon
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Hydrogen.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Hydrogen.java
new file mode 100644
index 0000000000000000000000000000000000000000..e7f07f2292cd2f0215010253eb0c31e4b049fac0
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Hydrogen.java
@@ -0,0 +1,71 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hydrogen</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Hydrogen#getChemicalPurity <em>Chemical Purity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Hydrogen#getHydrogenForHydrogenStorage <em>Hydrogen For Hydrogen Storage</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogen()
+ * @model
+ * @generated
+ */
+public interface Hydrogen extends Fuel {
+	/**
+	 * Returns the value of the '<em><b>Chemical Purity</b></em>' attribute.
+	 * The default value is <code>"0.99"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * 
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Chemical Purity</em>' attribute.
+	 * @see #setChemicalPurity(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogen_ChemicalPurity()
+	 * @model default="0.99" required="true"
+	 * @generated
+	 */
+	double getChemicalPurity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Hydrogen#getChemicalPurity <em>Chemical Purity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Chemical Purity</em>' attribute.
+	 * @see #getChemicalPurity()
+	 * @generated
+	 */
+	void setChemicalPurity(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Hydrogen For Hydrogen Storage</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hydrogen For Hydrogen Storage</em>' reference.
+	 * @see #setHydrogenForHydrogenStorage(HydrogenStorage)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogen_HydrogenForHydrogenStorage()
+	 * @model
+	 * @generated
+	 */
+	HydrogenStorage getHydrogenForHydrogenStorage();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Hydrogen#getHydrogenForHydrogenStorage <em>Hydrogen For Hydrogen Storage</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Hydrogen For Hydrogen Storage</em>' reference.
+	 * @see #getHydrogenForHydrogenStorage()
+	 * @generated
+	 */
+	void setHydrogenForHydrogenStorage(HydrogenStorage value);
+
+} // Hydrogen
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HydrogenCompressor.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HydrogenCompressor.java
new file mode 100644
index 0000000000000000000000000000000000000000..aaaf886c2a0ed12d80da33a278890d6871c5bee0
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HydrogenCompressor.java
@@ -0,0 +1,128 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hydrogen Compressor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getEfficiency <em>Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getThermodynamicMode <em>Thermodynamic Mode</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxPressure <em>Max Pressure</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxDeliveryRate <em>Max Delivery Rate</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenCompressor()
+ * @model
+ * @generated
+ */
+public interface HydrogenCompressor extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Efficiency</b></em>' attribute.
+	 * The default value is <code>"0.68"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Efficiency</em>' attribute.
+	 * @see #setEfficiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenCompressor_Efficiency()
+	 * @model default="0.68"
+	 * @generated
+	 */
+	double getEfficiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getEfficiency <em>Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Efficiency</em>' attribute.
+	 * @see #getEfficiency()
+	 * @generated
+	 */
+	void setEfficiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Thermodynamic Mode</b></em>' attribute.
+	 * The default value is <code>"0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Thermodynamic Mode</em>' attribute.
+	 * @see #setThermodynamicMode(int)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenCompressor_ThermodynamicMode()
+	 * @model default="0"
+	 * @generated
+	 */
+	int getThermodynamicMode();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getThermodynamicMode <em>Thermodynamic Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Thermodynamic Mode</em>' attribute.
+	 * @see #getThermodynamicMode()
+	 * @generated
+	 */
+	void setThermodynamicMode(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Pressure</b></em>' attribute.
+	 * The default value is <code>"50 MPa"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * MPa
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Max Pressure</em>' attribute.
+	 * @see #setMaxPressure(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenCompressor_MaxPressure()
+	 * @model default="50 MPa" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getMaxPressure();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxPressure <em>Max Pressure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Pressure</em>' attribute.
+	 * @see #getMaxPressure()
+	 * @generated
+	 */
+	void setMaxPressure(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Delivery Rate</b></em>' attribute.
+	 * The default value is <code>"9 kg/h"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kg/h
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Max Delivery Rate</em>' attribute.
+	 * @see #setMaxDeliveryRate(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenCompressor_MaxDeliveryRate()
+	 * @model default="9 kg/h" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getMaxDeliveryRate();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HydrogenCompressor#getMaxDeliveryRate <em>Max Delivery Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Delivery Rate</em>' attribute.
+	 * @see #getMaxDeliveryRate()
+	 * @generated
+	 */
+	void setMaxDeliveryRate(NullableQuantity value);
+
+} // HydrogenCompressor
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HydrogenStorage.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HydrogenStorage.java
new file mode 100644
index 0000000000000000000000000000000000000000..946268165e5c5f294aa6cb05356e54792a29bfba
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/HydrogenStorage.java
@@ -0,0 +1,98 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hydrogen Storage</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.HydrogenStorage#getNumberOfCylinders <em>Number Of Cylinders</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HydrogenStorage#getCylinderVolume <em>Cylinder Volume</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.HydrogenStorage#getNominalPressure <em>Nominal Pressure</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenStorage()
+ * @model
+ * @generated
+ */
+public interface HydrogenStorage extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Number Of Cylinders</b></em>' attribute.
+	 * The default value is <code>"1"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Number Of Cylinders</em>' attribute.
+	 * @see #setNumberOfCylinders(int)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenStorage_NumberOfCylinders()
+	 * @model default="1" required="true"
+	 * @generated
+	 */
+	int getNumberOfCylinders();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HydrogenStorage#getNumberOfCylinders <em>Number Of Cylinders</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Number Of Cylinders</em>' attribute.
+	 * @see #getNumberOfCylinders()
+	 * @generated
+	 */
+	void setNumberOfCylinders(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Cylinder Volume</b></em>' attribute.
+	 * The default value is <code>"1.5 m\u00b3"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * m³
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Cylinder Volume</em>' attribute.
+	 * @see #setCylinderVolume(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenStorage_CylinderVolume()
+	 * @model default="1.5 m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getCylinderVolume();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HydrogenStorage#getCylinderVolume <em>Cylinder Volume</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cylinder Volume</em>' attribute.
+	 * @see #getCylinderVolume()
+	 * @generated
+	 */
+	void setCylinderVolume(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Nominal Pressure</b></em>' attribute.
+	 * The default value is <code>"25 MPa"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Nominal Pressure</em>' attribute.
+	 * @see #setNominalPressure(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHydrogenStorage_NominalPressure()
+	 * @model default="25 MPa" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getNominalPressure();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HydrogenStorage#getNominalPressure <em>Nominal Pressure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Pressure</em>' attribute.
+	 * @see #getNominalPressure()
+	 * @generated
+	 */
+	void setNominalPressure(NullableQuantity value);
+
+} // HydrogenStorage
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Inverter.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Inverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..876a783cac86f5a9531e1174490130eb58f668f1
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Inverter.java
@@ -0,0 +1,16 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Inverter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getInverter()
+ * @model
+ * @generated
+ */
+public interface Inverter extends EnergyComponent {
+} // Inverter
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/InvestmentCost.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/InvestmentCost.java
new file mode 100644
index 0000000000000000000000000000000000000000..24a352798300c2640feb54fedb01e2f9ea489f16
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/InvestmentCost.java
@@ -0,0 +1,70 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Investment Cost</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.InvestmentCost#getOtherInvestmentCost <em>Other Investment Cost</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.InvestmentCost#getInvestmentCost <em>Investment Cost</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getInvestmentCost()
+ * @model abstract="true"
+ * @generated
+ */
+public interface InvestmentCost extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Other Investment Cost</b></em>' attribute.
+	 * The default value is <code>"0"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other Investment Cost</em>' attribute.
+	 * @see #setOtherInvestmentCost(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getInvestmentCost_OtherInvestmentCost()
+	 * @model default="0"
+	 * @generated
+	 */
+	double getOtherInvestmentCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.InvestmentCost#getOtherInvestmentCost <em>Other Investment Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other Investment Cost</em>' attribute.
+	 * @see #getOtherInvestmentCost()
+	 * @generated
+	 */
+	void setOtherInvestmentCost(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Investment Cost</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Investment Cost</em>' containment reference.
+	 * @see #setInvestmentCost(Characteristic)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getInvestmentCost_InvestmentCost()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Characteristic getInvestmentCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.InvestmentCost#getInvestmentCost <em>Investment Cost</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Investment Cost</em>' containment reference.
+	 * @see #getInvestmentCost()
+	 * @generated
+	 */
+	void setInvestmentCost(Characteristic value);
+
+} // InvestmentCost
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/LinearCharacteristic.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/LinearCharacteristic.java
new file mode 100644
index 0000000000000000000000000000000000000000..e03de0f6e89cf39e881fd5d2e4c8376d6b742368
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/LinearCharacteristic.java
@@ -0,0 +1,36 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Linear Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.LinearCharacteristic#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getLinearCharacteristic()
+ * @model
+ * @generated
+ */
+public interface LinearCharacteristic extends Characteristic {
+	/**
+	 * Returns the value of the '<em><b>Functions</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.LinearFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Functions</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getLinearCharacteristic_Functions()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<LinearFunction> getFunctions();
+
+} // LinearCharacteristic
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/LinearFunction.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/LinearFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1a09731f18dd4ea5b1476b9db3b0fe4b7c20a32
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/LinearFunction.java
@@ -0,0 +1,113 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Linear Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * y = ParameterM * x + ParameterC
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.LinearFunction#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.LinearFunction#getParameterM <em>Parameter M</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.LinearFunction#getParameterC <em>Parameter C</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getLinearFunction()
+ * @model
+ * @generated
+ */
+public interface LinearFunction extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getLinearFunction_Key()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.LinearFunction#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter M</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterM * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Parameter M</em>' attribute.
+	 * @see #setParameterM(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getLinearFunction_ParameterM()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterM();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.LinearFunction#getParameterM <em>Parameter M</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter M</em>' attribute.
+	 * @see #getParameterM()
+	 * @generated
+	 */
+	void setParameterM(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterM * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Parameter C</em>' attribute.
+	 * @see #setParameterC(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getLinearFunction_ParameterC()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterC();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.LinearFunction#getParameterC <em>Parameter C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter C</em>' attribute.
+	 * @see #getParameterC()
+	 * @generated
+	 */
+	void setParameterC(double value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterM * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @model required="true"
+	 * @generated
+	 */
+	double linearfunction(double x);
+
+} // LinearFunction
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Manufacturer.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Manufacturer.java
new file mode 100644
index 0000000000000000000000000000000000000000..80d7c7a845dd922edd78cfde98011331a96d4979
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Manufacturer.java
@@ -0,0 +1,92 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Manufacturer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Manufacturer#getManufacturerName <em>Manufacturer Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Manufacturer#getCountry <em>Country</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Manufacturer#getOutOfBusinessSince <em>Out Of Business Since</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getManufacturer()
+ * @model
+ * @generated
+ */
+public interface Manufacturer extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Manufacturer Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Manufacturer Name</em>' attribute.
+	 * @see #setManufacturerName(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getManufacturer_ManufacturerName()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getManufacturerName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Manufacturer#getManufacturerName <em>Manufacturer Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Manufacturer Name</em>' attribute.
+	 * @see #getManufacturerName()
+	 * @generated
+	 */
+	void setManufacturerName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Country</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Country</em>' attribute.
+	 * @see #setCountry(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getManufacturer_Country()
+	 * @model
+	 * @generated
+	 */
+	String getCountry();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Manufacturer#getCountry <em>Country</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Country</em>' attribute.
+	 * @see #getCountry()
+	 * @generated
+	 */
+	void setCountry(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Out Of Business Since</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Out Of Business Since</em>' attribute.
+	 * @see #setOutOfBusinessSince(int)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getManufacturer_OutOfBusinessSince()
+	 * @model
+	 * @generated
+	 */
+	int getOutOfBusinessSince();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Manufacturer#getOutOfBusinessSince <em>Out Of Business Since</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Out Of Business Since</em>' attribute.
+	 * @see #getOutOfBusinessSince()
+	 * @generated
+	 */
+	void setOutOfBusinessSince(int value);
+
+} // Manufacturer
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Material.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Material.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d5b89ef9baaae4911064ed11401e7fad6381379
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Material.java
@@ -0,0 +1,74 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Material</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Material#getThermalConductivity <em>Thermal Conductivity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Material#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getMaterial()
+ * @model
+ * @generated
+ */
+public interface Material extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Thermal Conductivity</b></em>' attribute.
+	 * The default value is <code>" W/(m*K)"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 *  W/(m*K)
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Thermal Conductivity</em>' attribute.
+	 * @see #setThermalConductivity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMaterial_ThermalConductivity()
+	 * @model default=" W/(m*K)" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getThermalConductivity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Material#getThermalConductivity <em>Thermal Conductivity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Thermal Conductivity</em>' attribute.
+	 * @see #getThermalConductivity()
+	 * @generated
+	 */
+	void setThermalConductivity(NullableQuantity 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.energycomponents.EnCompPackage#getMaterial_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Material#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);
+
+} // Material
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Medium.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Medium.java
new file mode 100644
index 0000000000000000000000000000000000000000..aa73ba0da242462e4710da27202ed2c734a429fb
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Medium.java
@@ -0,0 +1,156 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Medium</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.Medium#getDensity <em>Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Medium#getHeatCapacity <em>Heat Capacity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Medium#getEvaporationTemperature <em>Evaporation Temperature</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Medium#getMeltingTemperature <em>Melting Temperature</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.Medium#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium()
+ * @model
+ * @generated
+ */
+public interface Medium extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Density</b></em>' attribute.
+	 * The default value is <code>"g/cm\u00b3"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kg/m³
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Density</em>' attribute.
+	 * @see #setDensity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_Density()
+	 * @model default="g/cm\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getDensity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Medium#getDensity <em>Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Density</em>' attribute.
+	 * @see #getDensity()
+	 * @generated
+	 */
+	void setDensity(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Heat Capacity</b></em>' attribute.
+	 * The default value is <code>"kJ/(kg*K)"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kJ/kg*K
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Heat Capacity</em>' attribute.
+	 * @see #setHeatCapacity(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_HeatCapacity()
+	 * @model default="kJ/(kg*K)" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getHeatCapacity();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Medium#getHeatCapacity <em>Heat Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Heat Capacity</em>' attribute.
+	 * @see #getHeatCapacity()
+	 * @generated
+	 */
+	void setHeatCapacity(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Evaporation Temperature</b></em>' attribute.
+	 * The default value is <code>"\u00b0C"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * degree Celsius
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Evaporation Temperature</em>' attribute.
+	 * @see #setEvaporationTemperature(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_EvaporationTemperature()
+	 * @model default="\u00b0C" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getEvaporationTemperature();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Medium#getEvaporationTemperature <em>Evaporation Temperature</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Evaporation Temperature</em>' attribute.
+	 * @see #getEvaporationTemperature()
+	 * @generated
+	 */
+	void setEvaporationTemperature(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Melting Temperature</b></em>' attribute.
+	 * The default value is <code>"\u00b0C"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * degree Celsius
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Melting Temperature</em>' attribute.
+	 * @see #setMeltingTemperature(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getMedium_MeltingTemperature()
+	 * @model default="\u00b0C" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getMeltingTemperature();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Medium#getMeltingTemperature <em>Melting Temperature</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Melting Temperature</em>' attribute.
+	 * @see #getMeltingTemperature()
+	 * @generated
+	 */
+	void setMeltingTemperature(NullableQuantity 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.energycomponents.EnCompPackage#getMedium_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Medium#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);
+
+} // Medium
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/NewEClass40.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/NewEClass40.java
new file mode 100644
index 0000000000000000000000000000000000000000..bd6610e28ad493df26ac1bf675121347294d16c3
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/NewEClass40.java
@@ -0,0 +1,86 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>New EClass40</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.NewEClass40#getOtherCost <em>Other Cost</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.NewEClass40#getMaintenanceCost <em>Maintenance Cost</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.NewEClass40#getInvestmentCost <em>Investment Cost</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40()
+ * @model
+ * @generated
+ */
+public interface NewEClass40 extends EnergyComponentsCostCatalog {
+	/**
+	 * Returns the value of the '<em><b>Other Cost</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Other Cost</em>' attribute.
+	 * @see #setOtherCost(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40_OtherCost()
+	 * @model
+	 * @generated
+	 */
+	double getOtherCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.NewEClass40#getOtherCost <em>Other Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Other Cost</em>' attribute.
+	 * @see #getOtherCost()
+	 * @generated
+	 */
+	void setOtherCost(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Maintenance Cost</b></em>' attribute.
+	 * The default value is <code>"0.015"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * percentage of total investment cost
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Maintenance Cost</em>' attribute.
+	 * @see #setMaintenanceCost(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40_MaintenanceCost()
+	 * @model default="0.015"
+	 * @generated
+	 */
+	double getMaintenanceCost();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.NewEClass40#getMaintenanceCost <em>Maintenance Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Maintenance Cost</em>' attribute.
+	 * @see #getMaintenanceCost()
+	 * @generated
+	 */
+	void setMaintenanceCost(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Investment Cost</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.Characteristic}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Investment Cost</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getNewEClass40_InvestmentCost()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Characteristic> getInvestmentCost();
+
+} // NewEClass40
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PersonnelCost.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PersonnelCost.java
new file mode 100644
index 0000000000000000000000000000000000000000..bef3c6ecbb7688e2440a5bc3e73b73217c5b74b1
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PersonnelCost.java
@@ -0,0 +1,71 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Personnel Cost</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelHours <em>Personnel Hours</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelCostShare <em>Personnel Cost Share</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getPersonnelCost()
+ * @model abstract="true"
+ * @generated
+ */
+public interface PersonnelCost extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Personnel Hours</b></em>' attribute.
+	 * The default value is <code>"10 h"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Personnel Hours</em>' attribute.
+	 * @see #setPersonnelHours(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPersonnelCost_PersonnelHours()
+	 * @model default="10 h" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getPersonnelHours();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelHours <em>Personnel Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Personnel Hours</em>' attribute.
+	 * @see #getPersonnelHours()
+	 * @generated
+	 */
+	void setPersonnelHours(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Personnel Cost Share</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Personnel Cost Share</em>' attribute.
+	 * @see #setPersonnelCostShare(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPersonnelCost_PersonnelCostShare()
+	 * @model
+	 * @generated
+	 */
+	double getPersonnelCostShare();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PersonnelCost#getPersonnelCostShare <em>Personnel Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Personnel Cost Share</em>' attribute.
+	 * @see #getPersonnelCostShare()
+	 * @generated
+	 */
+	void setPersonnelCostShare(double value);
+
+} // PersonnelCost
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PhotovoltaicModule.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PhotovoltaicModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..146be7b37c2cac70c17015db69762959ded20254
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PhotovoltaicModule.java
@@ -0,0 +1,183 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Photovoltaic Module</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getCellType <em>Cell Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalPower <em>Nominal Power</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppVoltage <em>Mpp Voltage</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppCurrent <em>Mpp Current</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalEfficiency <em>Nominal Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getModuleArea <em>Module Area</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule()
+ * @model
+ * @generated
+ */
+public interface PhotovoltaicModule extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Cell Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cell Type</em>' attribute.
+	 * @see #setCellType(Enumerator)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_CellType()
+	 * @model required="true" transient="true"
+	 * @generated
+	 */
+	Enumerator getCellType();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getCellType <em>Cell Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cell Type</em>' attribute.
+	 * @see #getCellType()
+	 * @generated
+	 */
+	void setCellType(Enumerator value);
+
+	/**
+	 * Returns the value of the '<em><b>Nominal Power</b></em>' attribute.
+	 * The default value is <code>"W"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * W
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Nominal Power</em>' attribute.
+	 * @see #setNominalPower(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_NominalPower()
+	 * @model default="W" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getNominalPower();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalPower <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Power</em>' attribute.
+	 * @see #getNominalPower()
+	 * @generated
+	 */
+	void setNominalPower(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Mpp Voltage</b></em>' attribute.
+	 * The default value is <code>"V"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * V
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Mpp Voltage</em>' attribute.
+	 * @see #setMppVoltage(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_MppVoltage()
+	 * @model default="V" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getMppVoltage();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppVoltage <em>Mpp Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mpp Voltage</em>' attribute.
+	 * @see #getMppVoltage()
+	 * @generated
+	 */
+	void setMppVoltage(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Mpp Current</b></em>' attribute.
+	 * The default value is <code>"A"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * A
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Mpp Current</em>' attribute.
+	 * @see #setMppCurrent(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_MppCurrent()
+	 * @model default="A" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getMppCurrent();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getMppCurrent <em>Mpp Current</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mpp Current</em>' attribute.
+	 * @see #getMppCurrent()
+	 * @generated
+	 */
+	void setMppCurrent(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Nominal Efficiency</b></em>' attribute.
+	 * The default value is <code>"0.18"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * 
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Nominal Efficiency</em>' attribute.
+	 * @see #setNominalEfficiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_NominalEfficiency()
+	 * @model default="0.18" required="true"
+	 * @generated
+	 */
+	double getNominalEfficiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getNominalEfficiency <em>Nominal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Efficiency</em>' attribute.
+	 * @see #getNominalEfficiency()
+	 * @generated
+	 */
+	void setNominalEfficiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Module Area</b></em>' attribute.
+	 * The default value is <code>"m\u00b2"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * m²
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Module Area</em>' attribute.
+	 * @see #setModuleArea(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPhotovoltaicModule_ModuleArea()
+	 * @model default="m\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getModuleArea();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule#getModuleArea <em>Module Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Module Area</em>' attribute.
+	 * @see #getModuleArea()
+	 * @generated
+	 */
+	void setModuleArea(NullableQuantity value);
+
+} // PhotovoltaicModule
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PolynomialCharacteristic.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PolynomialCharacteristic.java
new file mode 100644
index 0000000000000000000000000000000000000000..c03c0c59a68161591f6c20a57dc73f8384988ae9
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PolynomialCharacteristic.java
@@ -0,0 +1,36 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Polynomial Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.PolynomialCharacteristic#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getPolynomialCharacteristic()
+ * @model
+ * @generated
+ */
+public interface PolynomialCharacteristic extends Characteristic {
+	/**
+	 * Returns the value of the '<em><b>Functions</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.PolynomialFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Functions</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPolynomialCharacteristic_Functions()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<PolynomialFunction> getFunctions();
+
+} // PolynomialCharacteristic
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PolynomialFunction.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PolynomialFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..71065cf67cf4a08048f423bd8fa916b54e4558a4
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PolynomialFunction.java
@@ -0,0 +1,142 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Polynomial Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * y = ParameterA * x^2 + ParameterB * x + ParameterC
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.PolynomialFunction#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterA <em>Parameter A</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterB <em>Parameter B</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterC <em>Parameter C</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getPolynomialFunction()
+ * @model
+ * @generated
+ */
+public interface PolynomialFunction extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * x^2 + ParameterB * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPolynomialFunction_Key()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * x^2 + ParameterB * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Parameter A</em>' attribute.
+	 * @see #setParameterA(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPolynomialFunction_ParameterA()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterA();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterA <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter A</em>' attribute.
+	 * @see #getParameterA()
+	 * @generated
+	 */
+	void setParameterA(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * x^2 + ParameterB * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Parameter B</em>' attribute.
+	 * @see #setParameterB(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPolynomialFunction_ParameterB()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterB();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterB <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter B</em>' attribute.
+	 * @see #getParameterB()
+	 * @generated
+	 */
+	void setParameterB(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * x^2 + ParameterB * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Parameter C</em>' attribute.
+	 * @see #setParameterC(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPolynomialFunction_ParameterC()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterC();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PolynomialFunction#getParameterC <em>Parameter C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter C</em>' attribute.
+	 * @see #getParameterC()
+	 * @generated
+	 */
+	void setParameterC(double value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * x^2 + ParameterB * x + ParameterC
+	 * <!-- end-model-doc -->
+	 * @model
+	 * @generated
+	 */
+	double polynomialfunction(double x);
+
+} // PolynomialFunction
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerCharacteristic.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerCharacteristic.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e303ed77aae17e2a85d72813293a1f9526d7cd7
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerCharacteristic.java
@@ -0,0 +1,36 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Power Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.PowerCharacteristic#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerCharacteristic()
+ * @model
+ * @generated
+ */
+public interface PowerCharacteristic extends Characteristic {
+	/**
+	 * Returns the value of the '<em><b>Functions</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.PowerFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Functions</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerCharacteristic_Functions()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<PowerFunction> getFunctions();
+
+} // PowerCharacteristic
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerFunction.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9290baccc1455d5de345b36237cbb6b9664ed33
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerFunction.java
@@ -0,0 +1,103 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Power Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.PowerFunction#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PowerFunction#getParameterA <em>Parameter A</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.PowerFunction#getParameterB <em>Parameter B</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerFunction()
+ * @model
+ * @generated
+ */
+public interface PowerFunction extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerFunction_Key()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PowerFunction#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parameter A</em>' attribute.
+	 * @see #setParameterA(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerFunction_ParameterA()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterA();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PowerFunction#getParameterA <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter A</em>' attribute.
+	 * @see #getParameterA()
+	 * @generated
+	 */
+	void setParameterA(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parameter B</em>' attribute.
+	 * @see #setParameterB(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerFunction_ParameterB()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getParameterB();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.PowerFunction#getParameterB <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter B</em>' attribute.
+	 * @see #getParameterB()
+	 * @generated
+	 */
+	void setParameterB(double value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * y = ParameterA * x^ParameterB
+	 * <!-- end-model-doc -->
+	 * @model
+	 * @generated
+	 */
+	double powerfunction(double x);
+
+} // PowerFunction
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerSources.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerSources.java
new file mode 100644
index 0000000000000000000000000000000000000000..601b9643efae0877441e519489327d8014bb8a36
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/PowerSources.java
@@ -0,0 +1,207 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Power Sources</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getPowerSources()
+ * @model
+ * @generated
+ */
+public enum PowerSources implements Enumerator {
+	/**
+	 * The '<em><b>Electricity</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ELECTRICITY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ELECTRICITY(0, "electricity", "electricity"),
+
+	/**
+	 * The '<em><b>Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GAS(1, "gas", "gas");
+
+	/**
+	 * The '<em><b>Electricity</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ELECTRICITY
+	 * @model name="electricity"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ELECTRICITY_VALUE = 0;
+
+	/**
+	 * The '<em><b>Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GAS
+	 * @model name="gas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GAS_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Power Sources</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final PowerSources[] VALUES_ARRAY = new PowerSources[] { ELECTRICITY, GAS, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Power Sources</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<PowerSources> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Power Sources</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static PowerSources get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			PowerSources result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Power Sources</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static PowerSources getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			PowerSources result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Power Sources</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static PowerSources get(int value) {
+		switch (value) {
+		case ELECTRICITY_VALUE:
+			return ELECTRICITY;
+		case GAS_VALUE:
+			return GAS;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private PowerSources(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //PowerSources
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/RegularFuel.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/RegularFuel.java
new file mode 100644
index 0000000000000000000000000000000000000000..608c32a4ee16ab3503f87b1d4fec96e62d7b1930
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/RegularFuel.java
@@ -0,0 +1,16 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Regular Fuel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getRegularFuel()
+ * @model abstract="true"
+ * @generated
+ */
+public interface RegularFuel extends Fuel {
+} // RegularFuel
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/SaltHydrate.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/SaltHydrate.java
new file mode 100644
index 0000000000000000000000000000000000000000..e55a6580777d618410271d142015c98c392d4d06
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/SaltHydrate.java
@@ -0,0 +1,16 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Salt Hydrate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getSaltHydrate()
+ * @model
+ * @generated
+ */
+public interface SaltHydrate extends Medium {
+} // SaltHydrate
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/SolarThermalCollector.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/SolarThermalCollector.java
new file mode 100644
index 0000000000000000000000000000000000000000..595f3dd35342be7844093560a18d74afccae93d4
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/SolarThermalCollector.java
@@ -0,0 +1,151 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Solar Thermal Collector</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getCollectorType <em>Collector Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getApertureArea <em>Aperture Area</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getOpticalEfficiency <em>Optical Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getLinearHeatLossCoefficient <em>Linear Heat Loss Coefficient</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getQuadraticalHeatLossCoefficient <em>Quadratical Heat Loss Coefficient</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getSolarThermalCollector()
+ * @model
+ * @generated
+ */
+public interface SolarThermalCollector extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Collector Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.CollectorTypes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Collector Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.CollectorTypes
+	 * @see #setCollectorType(CollectorTypes)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getSolarThermalCollector_CollectorType()
+	 * @model required="true"
+	 * @generated
+	 */
+	CollectorTypes getCollectorType();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getCollectorType <em>Collector Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Collector Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.CollectorTypes
+	 * @see #getCollectorType()
+	 * @generated
+	 */
+	void setCollectorType(CollectorTypes value);
+
+	/**
+	 * Returns the value of the '<em><b>Aperture Area</b></em>' attribute.
+	 * The default value is <code>"m\u00b2"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * m²
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Aperture Area</em>' attribute.
+	 * @see #setApertureArea(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getSolarThermalCollector_ApertureArea()
+	 * @model default="m\u00b2" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getApertureArea();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getApertureArea <em>Aperture Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Aperture Area</em>' attribute.
+	 * @see #getApertureArea()
+	 * @generated
+	 */
+	void setApertureArea(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Optical Efficiency</b></em>' attribute.
+	 * The default value is <code>"0.77"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Optical Efficiency</em>' attribute.
+	 * @see #setOpticalEfficiency(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getSolarThermalCollector_OpticalEfficiency()
+	 * @model default="0.77"
+	 * @generated
+	 */
+	double getOpticalEfficiency();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getOpticalEfficiency <em>Optical Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Optical Efficiency</em>' attribute.
+	 * @see #getOpticalEfficiency()
+	 * @generated
+	 */
+	void setOpticalEfficiency(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Linear Heat Loss Coefficient</b></em>' attribute.
+	 * The default value is <code>"3.2"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Linear Heat Loss Coefficient</em>' attribute.
+	 * @see #setLinearHeatLossCoefficient(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getSolarThermalCollector_LinearHeatLossCoefficient()
+	 * @model default="3.2"
+	 * @generated
+	 */
+	double getLinearHeatLossCoefficient();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getLinearHeatLossCoefficient <em>Linear Heat Loss Coefficient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Linear Heat Loss Coefficient</em>' attribute.
+	 * @see #getLinearHeatLossCoefficient()
+	 * @generated
+	 */
+	void setLinearHeatLossCoefficient(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Quadratical Heat Loss Coefficient</b></em>' attribute.
+	 * The default value is <code>"0.01"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Quadratical Heat Loss Coefficient</em>' attribute.
+	 * @see #setQuadraticalHeatLossCoefficient(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getSolarThermalCollector_QuadraticalHeatLossCoefficient()
+	 * @model default="0.01"
+	 * @generated
+	 */
+	double getQuadraticalHeatLossCoefficient();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.SolarThermalCollector#getQuadraticalHeatLossCoefficient <em>Quadratical Heat Loss Coefficient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Quadratical Heat Loss Coefficient</em>' attribute.
+	 * @see #getQuadraticalHeatLossCoefficient()
+	 * @generated
+	 */
+	void setQuadraticalHeatLossCoefficient(double value);
+
+} // SolarThermalCollector
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TableCharacteristic.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TableCharacteristic.java
new file mode 100644
index 0000000000000000000000000000000000000000..71206dbdbd7e00acaebfac62f77e15b344ff01ba
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TableCharacteristic.java
@@ -0,0 +1,36 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Table Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.TableCharacteristic#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getTableCharacteristic()
+ * @model
+ * @generated
+ */
+public interface TableCharacteristic extends Characteristic {
+	/**
+	 * Returns the value of the '<em><b>Functions</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.TableFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Functions</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getTableCharacteristic_Functions()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<TableFunction> getFunctions();
+
+} // TableCharacteristic
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TableFunction.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TableFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..039ce07d53da32df4b4a34fe3d5565dd43250616
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TableFunction.java
@@ -0,0 +1,61 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Table Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.TableFunction#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.TableFunction#getDatapoints <em>Datapoints</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getTableFunction()
+ * @model
+ * @generated
+ */
+public interface TableFunction extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getTableFunction_Key()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.TableFunction#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Datapoints</b></em>' containment reference list.
+	 * The list contents are of type {@link de.hftstuttgart.energycomponents.DataPoint}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Datapoints</em>' containment reference list.
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getTableFunction_Datapoints()
+	 * @model containment="true" lower="2"
+	 * @generated
+	 */
+	EList<DataPoint> getDatapoints();
+
+} // TableFunction
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalEnergyDevice.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalEnergyDevice.java
new file mode 100644
index 0000000000000000000000000000000000000000..c8fcb5c5eb5bcbfbc58118926f3352036601dd86
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalEnergyDevice.java
@@ -0,0 +1,103 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Thermal Energy Device</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getModulationRange <em>Modulation Range</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getFuel <em>Fuel</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalEnergyDevice()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ThermalEnergyDevice extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * The default value is <code>"kW"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * kW
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Installed Thermal Power</em>' attribute.
+	 * @see #setInstalledThermalPower(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalEnergyDevice_InstalledThermalPower()
+	 * @model default="kW" dataType="de.hftstuttgart.energycomponents.QuantityDouble" required="true"
+	 * @generated
+	 */
+	NullableQuantity getInstalledThermalPower();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Installed Thermal Power</em>' attribute.
+	 * @see #getInstalledThermalPower()
+	 * @generated
+	 */
+	void setInstalledThermalPower(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Modulation Range</b></em>' attribute.
+	 * The default value is <code>"0.5"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Modulation Range</em>' attribute.
+	 * @see #setModulationRange(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalEnergyDevice_ModulationRange()
+	 * @model default="0.5"
+	 * @generated
+	 */
+	double getModulationRange();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getModulationRange <em>Modulation Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Modulation Range</em>' attribute.
+	 * @see #getModulationRange()
+	 * @generated
+	 */
+	void setModulationRange(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Fuel</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.FuelTypes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fuel</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
+	 * @see #setFuel(FuelTypes)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalEnergyDevice_Fuel()
+	 * @model required="true"
+	 * @generated
+	 */
+	FuelTypes getFuel();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice#getFuel <em>Fuel</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Fuel</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.FuelTypes
+	 * @see #getFuel()
+	 * @generated
+	 */
+	void setFuel(FuelTypes value);
+
+} // ThermalEnergyDevice
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalStorage.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalStorage.java
new file mode 100644
index 0000000000000000000000000000000000000000..a999bac03aa0f0948896c4417ff811f073199b58
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalStorage.java
@@ -0,0 +1,244 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Thermal Storage</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getVolume <em>Volume</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getThermalStorageType <em>Thermal Storage Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getMaxTemp <em>Max Temp</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getTankThickness <em>Tank Thickness</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getInsulationThickness <em>Insulation Thickness</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getUsesMedium <em>Uses Medium</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getInsulationMaterial <em>Insulation Material</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getHeight <em>Height</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.ThermalStorage#getTankMaterial <em>Tank Material</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage()
+ * @model
+ * @generated
+ */
+public interface ThermalStorage extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Volume</b></em>' attribute.
+	 * The default value is <code>"5 m\u00b3"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * m³
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Volume</em>' attribute.
+	 * @see #setVolume(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_Volume()
+	 * @model default="5 m\u00b3" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getVolume();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getVolume <em>Volume</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Volume</em>' attribute.
+	 * @see #getVolume()
+	 * @generated
+	 */
+	void setVolume(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Thermal Storage Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.ThermalStorageTypes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Thermal Storage Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorageTypes
+	 * @see #setThermalStorageType(ThermalStorageTypes)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_ThermalStorageType()
+	 * @model unique="false" transient="true"
+	 * @generated
+	 */
+	ThermalStorageTypes getThermalStorageType();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getThermalStorageType <em>Thermal Storage Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Thermal Storage Type</em>' attribute.
+	 * @see de.hftstuttgart.energycomponents.ThermalStorageTypes
+	 * @see #getThermalStorageType()
+	 * @generated
+	 */
+	void setThermalStorageType(ThermalStorageTypes value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Temp</b></em>' attribute.
+	 * The default value is <code>"80 \u00b0C"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * degree Celsius
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Max Temp</em>' attribute.
+	 * @see #setMaxTemp(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_MaxTemp()
+	 * @model default="80 \u00b0C" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getMaxTemp();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getMaxTemp <em>Max Temp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Temp</em>' attribute.
+	 * @see #getMaxTemp()
+	 * @generated
+	 */
+	void setMaxTemp(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Tank Thickness</b></em>' attribute.
+	 * The default value is <code>"10 mm "</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tank Thickness</em>' attribute.
+	 * @see #setTankThickness(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_TankThickness()
+	 * @model default="10 mm " dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getTankThickness();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getTankThickness <em>Tank Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Tank Thickness</em>' attribute.
+	 * @see #getTankThickness()
+	 * @generated
+	 */
+	void setTankThickness(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Insulation Thickness</b></em>' attribute.
+	 * The default value is <code>"100 mm"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Insulation Thickness</em>' attribute.
+	 * @see #setInsulationThickness(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_InsulationThickness()
+	 * @model default="100 mm" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getInsulationThickness();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getInsulationThickness <em>Insulation Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Insulation Thickness</em>' attribute.
+	 * @see #getInsulationThickness()
+	 * @generated
+	 */
+	void setInsulationThickness(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Uses Medium</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Uses Medium</em>' reference.
+	 * @see #setUsesMedium(Medium)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_UsesMedium()
+	 * @model required="true"
+	 * @generated
+	 */
+	Medium getUsesMedium();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getUsesMedium <em>Uses Medium</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Uses Medium</em>' reference.
+	 * @see #getUsesMedium()
+	 * @generated
+	 */
+	void setUsesMedium(Medium value);
+
+	/**
+	 * Returns the value of the '<em><b>Insulation Material</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Insulation Material</em>' reference.
+	 * @see #setInsulationMaterial(Material)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_InsulationMaterial()
+	 * @model
+	 * @generated
+	 */
+	Material getInsulationMaterial();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getInsulationMaterial <em>Insulation Material</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Insulation Material</em>' reference.
+	 * @see #getInsulationMaterial()
+	 * @generated
+	 */
+	void setInsulationMaterial(Material value);
+
+	/**
+	 * Returns the value of the '<em><b>Height</b></em>' attribute.
+	 * The default value is <code>"2 m"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Height</em>' attribute.
+	 * @see #setHeight(NullableQuantity)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_Height()
+	 * @model default="2 m" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
+	 * @generated
+	 */
+	NullableQuantity getHeight();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getHeight <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Height</em>' attribute.
+	 * @see #getHeight()
+	 * @generated
+	 */
+	void setHeight(NullableQuantity value);
+
+	/**
+	 * Returns the value of the '<em><b>Tank Material</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tank Material</em>' reference.
+	 * @see #setTankMaterial(Material)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorage_TankMaterial()
+	 * @model
+	 * @generated
+	 */
+	Material getTankMaterial();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.ThermalStorage#getTankMaterial <em>Tank Material</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Tank Material</em>' reference.
+	 * @see #getTankMaterial()
+	 * @generated
+	 */
+	void setTankMaterial(Material value);
+
+} // ThermalStorage
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalStorageTypes.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalStorageTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d2a6539afb59d43a51f57e13d99568beabc0275
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/ThermalStorageTypes.java
@@ -0,0 +1,207 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Thermal Storage Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getThermalStorageTypes()
+ * @model
+ * @generated
+ */
+public enum ThermalStorageTypes implements Enumerator {
+	/**
+	 * The '<em><b>Sensible</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SENSIBLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SENSIBLE(0, "sensible", "sensible"),
+
+	/**
+	 * The '<em><b>Latent</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LATENT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LATENT(1, "latent", "LITERAL1");
+
+	/**
+	 * The '<em><b>Sensible</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SENSIBLE
+	 * @model name="sensible"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SENSIBLE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Latent</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LATENT
+	 * @model name="latent" literal="LITERAL1"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LATENT_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Thermal Storage Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ThermalStorageTypes[] VALUES_ARRAY = new ThermalStorageTypes[] { SENSIBLE, LATENT, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Thermal Storage Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ThermalStorageTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Thermal Storage Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ThermalStorageTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ThermalStorageTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Thermal Storage Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ThermalStorageTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ThermalStorageTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Thermal Storage Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ThermalStorageTypes get(int value) {
+		switch (value) {
+		case SENSIBLE_VALUE:
+			return SENSIBLE;
+		case LATENT_VALUE:
+			return LATENT;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private ThermalStorageTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //ThermalStorageTypes
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TypeOfHeatSource.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TypeOfHeatSource.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ee583dc69704fb9de3a54e4a0a1d2fc98820d05
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/TypeOfHeatSource.java
@@ -0,0 +1,484 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Type Of Heat Source</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getTypeOfHeatSource()
+ * @model
+ * @generated
+ */
+public enum TypeOfHeatSource implements Enumerator {
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NATURAL_GAS(0, "naturalGas", "naturalGas"),
+
+	/**
+	 * The '<em><b>Biogas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIOGAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BIOGAS(1, "biogas", "biogas"),
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OIL(2, "oil", "oil"),
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DIESEL(3, "diesel", "diesel"),
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SYNTHETIC_GAS(4, "syntheticGas", "syntheticGas"),
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_PELLETS(5, "woodPellets", "woodPellets"),
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WOOD_CHIPS(6, "woodChips", "woodChips"),
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SEWAGE_GAS(7, "sewageGas", "sewageGas"),
+
+	/**
+	 * The '<em><b>LNG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LNG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LNG(8, "LNG", "LNG"),
+
+	/**
+	 * The '<em><b>CNG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CNG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CNG(9, "CNG", "CNG"),
+
+	/**
+	 * The '<em><b>Water</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WATER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WATER(10, "water", "water"),
+
+	/**
+	 * The '<em><b>Air</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AIR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AIR(11, "air", "air"),
+
+	/**
+	 * The '<em><b>Soil</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SOIL(12, "soil", "soil"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(13, "none", "none");
+
+	/**
+	 * The '<em><b>Natural Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NATURAL_GAS
+	 * @model name="naturalGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NATURAL_GAS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Biogas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BIOGAS
+	 * @model name="biogas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BIOGAS_VALUE = 1;
+
+	/**
+	 * The '<em><b>Oil</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OIL
+	 * @model name="oil"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OIL_VALUE = 2;
+
+	/**
+	 * The '<em><b>Diesel</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIESEL
+	 * @model name="diesel"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DIESEL_VALUE = 3;
+
+	/**
+	 * The '<em><b>Synthetic Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNTHETIC_GAS
+	 * @model name="syntheticGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SYNTHETIC_GAS_VALUE = 4;
+
+	/**
+	 * The '<em><b>Wood Pellets</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_PELLETS
+	 * @model name="woodPellets"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_PELLETS_VALUE = 5;
+
+	/**
+	 * The '<em><b>Wood Chips</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WOOD_CHIPS
+	 * @model name="woodChips"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WOOD_CHIPS_VALUE = 6;
+
+	/**
+	 * The '<em><b>Sewage Gas</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEWAGE_GAS
+	 * @model name="sewageGas"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SEWAGE_GAS_VALUE = 7;
+
+	/**
+	 * The '<em><b>LNG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LNG
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LNG_VALUE = 8;
+
+	/**
+	 * The '<em><b>CNG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CNG
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CNG_VALUE = 9;
+
+	/**
+	 * The '<em><b>Water</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WATER
+	 * @model name="water"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WATER_VALUE = 10;
+
+	/**
+	 * The '<em><b>Air</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AIR
+	 * @model name="air"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AIR_VALUE = 11;
+
+	/**
+	 * The '<em><b>Soil</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOIL
+	 * @model name="soil"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SOIL_VALUE = 12;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 13;
+
+	/**
+	 * An array of all the '<em><b>Type Of Heat Source</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final TypeOfHeatSource[] VALUES_ARRAY = new TypeOfHeatSource[] { NATURAL_GAS, BIOGAS, OIL, DIESEL,
+			SYNTHETIC_GAS, WOOD_PELLETS, WOOD_CHIPS, SEWAGE_GAS, LNG, CNG, WATER, AIR, SOIL, NONE, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Type Of Heat Source</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<TypeOfHeatSource> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Type Of Heat Source</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TypeOfHeatSource get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TypeOfHeatSource result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Type Of Heat Source</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TypeOfHeatSource getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TypeOfHeatSource result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Type Of Heat Source</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TypeOfHeatSource get(int value) {
+		switch (value) {
+		case NATURAL_GAS_VALUE:
+			return NATURAL_GAS;
+		case BIOGAS_VALUE:
+			return BIOGAS;
+		case OIL_VALUE:
+			return OIL;
+		case DIESEL_VALUE:
+			return DIESEL;
+		case SYNTHETIC_GAS_VALUE:
+			return SYNTHETIC_GAS;
+		case WOOD_PELLETS_VALUE:
+			return WOOD_PELLETS;
+		case WOOD_CHIPS_VALUE:
+			return WOOD_CHIPS;
+		case SEWAGE_GAS_VALUE:
+			return SEWAGE_GAS;
+		case LNG_VALUE:
+			return LNG;
+		case CNG_VALUE:
+			return CNG;
+		case WATER_VALUE:
+			return WATER;
+		case AIR_VALUE:
+			return AIR;
+		case SOIL_VALUE:
+			return SOIL;
+		case NONE_VALUE:
+			return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private TypeOfHeatSource(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //TypeOfHeatSource
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Water.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Water.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca4ee0e3c79590230e961e1fa86e85a2690e4ac7
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/Water.java
@@ -0,0 +1,16 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Water</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getWater()
+ * @model
+ * @generated
+ */
+public interface Water extends Medium {
+} // Water
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/WindTurbine.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/WindTurbine.java
new file mode 100644
index 0000000000000000000000000000000000000000..72f5e764b2de0c19fdace5df7fc5082b321dc309
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/WindTurbine.java
@@ -0,0 +1,16 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Wind Turbine</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getWindTurbine()
+ * @model
+ * @generated
+ */
+public interface WindTurbine extends EnergyComponent {
+} // WindTurbine
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/cellTypesElectrolyzer.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/cellTypesElectrolyzer.java
new file mode 100644
index 0000000000000000000000000000000000000000..802379986cfcc0c856dbd29b3515f85292624d5e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/cellTypesElectrolyzer.java
@@ -0,0 +1,184 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>cell Types Electrolyzer</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getcellTypesElectrolyzer()
+ * @model
+ * @generated
+ */
+public enum cellTypesElectrolyzer implements Enumerator {
+	/**
+	 * The '<em><b>PEM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PEM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PEM(0, "PEM", "PEM");
+
+	/**
+	 * The '<em><b>PEM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PEM
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PEM_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>cell Types Electrolyzer</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final cellTypesElectrolyzer[] VALUES_ARRAY = new cellTypesElectrolyzer[] { PEM, };
+
+	/**
+	 * A public read-only list of all the '<em><b>cell Types Electrolyzer</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<cellTypesElectrolyzer> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>cell Types Electrolyzer</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static cellTypesElectrolyzer get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			cellTypesElectrolyzer result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>cell Types Electrolyzer</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static cellTypesElectrolyzer getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			cellTypesElectrolyzer result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>cell Types Electrolyzer</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static cellTypesElectrolyzer get(int value) {
+		switch (value) {
+		case PEM_VALUE:
+			return PEM;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private cellTypesElectrolyzer(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //cellTypesElectrolyzer
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/BioFuelImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/BioFuelImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e84808fc800bdb192a6f51b9c8140aa45292bb32
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/BioFuelImpl.java
@@ -0,0 +1,223 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.BioFuel;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bio Fuel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.BioFuelImpl#getWaterContent <em>Water Content</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.BioFuelImpl#getAshContent <em>Ash Content</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BioFuelImpl extends FuelImpl implements BioFuel {
+	/**
+	 * The default value of the '{@link #getWaterContent() <em>Water Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWaterContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double WATER_CONTENT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getWaterContent() <em>Water Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWaterContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected double waterContent = WATER_CONTENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAshContent() <em>Ash Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAshContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ASH_CONTENT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getAshContent() <em>Ash Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAshContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected double ashContent = ASH_CONTENT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BioFuelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.BIO_FUEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getWaterContent() {
+		return waterContent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setWaterContent(double newWaterContent) {
+		double oldWaterContent = waterContent;
+		waterContent = newWaterContent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.BIO_FUEL__WATER_CONTENT,
+					oldWaterContent, waterContent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getAshContent() {
+		return ashContent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAshContent(double newAshContent) {
+		double oldAshContent = ashContent;
+		ashContent = newAshContent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.BIO_FUEL__ASH_CONTENT, oldAshContent,
+					ashContent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.BIO_FUEL__WATER_CONTENT:
+			return getWaterContent();
+		case EnCompPackage.BIO_FUEL__ASH_CONTENT:
+			return getAshContent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.BIO_FUEL__WATER_CONTENT:
+			setWaterContent((Double) newValue);
+			return;
+		case EnCompPackage.BIO_FUEL__ASH_CONTENT:
+			setAshContent((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.BIO_FUEL__WATER_CONTENT:
+			setWaterContent(WATER_CONTENT_EDEFAULT);
+			return;
+		case EnCompPackage.BIO_FUEL__ASH_CONTENT:
+			setAshContent(ASH_CONTENT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.BIO_FUEL__WATER_CONTENT:
+			return waterContent != WATER_CONTENT_EDEFAULT;
+		case EnCompPackage.BIO_FUEL__ASH_CONTENT:
+			return ashContent != ASH_CONTENT_EDEFAULT;
+		}
+		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(" (waterContent: ");
+		result.append(waterContent);
+		result.append(", ashContent: ");
+		result.append(ashContent);
+		result.append(')');
+		return result.toString();
+	}
+
+} //BioFuelImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/BoilerImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/BoilerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d9fadf3566904c3dfb549bade4b7b21b4fd8b0a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/BoilerImpl.java
@@ -0,0 +1,224 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Boiler;
+import de.hftstuttgart.energycomponents.BoilerTypes;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boiler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.BoilerImpl#getNominalEfficiency <em>Nominal Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.BoilerImpl#getBoilerType <em>Boiler Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BoilerImpl extends ThermalEnergyDeviceImpl implements Boiler {
+	/**
+	 * The default value of the '{@link #getNominalEfficiency() <em>Nominal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double NOMINAL_EFFICIENCY_EDEFAULT = 0.98;
+
+	/**
+	 * The cached value of the '{@link #getNominalEfficiency() <em>Nominal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double nominalEfficiency = NOMINAL_EFFICIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBoilerType() <em>Boiler Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBoilerType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final BoilerTypes BOILER_TYPE_EDEFAULT = BoilerTypes.CONDENSING_BOILER;
+
+	/**
+	 * The cached value of the '{@link #getBoilerType() <em>Boiler Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBoilerType()
+	 * @generated
+	 * @ordered
+	 */
+	protected BoilerTypes boilerType = BOILER_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoilerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.BOILER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getNominalEfficiency() {
+		return nominalEfficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNominalEfficiency(double newNominalEfficiency) {
+		double oldNominalEfficiency = nominalEfficiency;
+		nominalEfficiency = newNominalEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.BOILER__NOMINAL_EFFICIENCY,
+					oldNominalEfficiency, nominalEfficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BoilerTypes getBoilerType() {
+		return boilerType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBoilerType(BoilerTypes newBoilerType) {
+		BoilerTypes oldBoilerType = boilerType;
+		boilerType = newBoilerType == null ? BOILER_TYPE_EDEFAULT : newBoilerType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.BOILER__BOILER_TYPE, oldBoilerType,
+					boilerType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.BOILER__NOMINAL_EFFICIENCY:
+			return getNominalEfficiency();
+		case EnCompPackage.BOILER__BOILER_TYPE:
+			return getBoilerType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.BOILER__NOMINAL_EFFICIENCY:
+			setNominalEfficiency((Double) newValue);
+			return;
+		case EnCompPackage.BOILER__BOILER_TYPE:
+			setBoilerType((BoilerTypes) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.BOILER__NOMINAL_EFFICIENCY:
+			setNominalEfficiency(NOMINAL_EFFICIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.BOILER__BOILER_TYPE:
+			setBoilerType(BOILER_TYPE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.BOILER__NOMINAL_EFFICIENCY:
+			return nominalEfficiency != NOMINAL_EFFICIENCY_EDEFAULT;
+		case EnCompPackage.BOILER__BOILER_TYPE:
+			return boilerType != BOILER_TYPE_EDEFAULT;
+		}
+		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(" (nominalEfficiency: ");
+		result.append(nominalEfficiency);
+		result.append(", boilerType: ");
+		result.append(boilerType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //BoilerImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CharacteristicImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CharacteristicImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba2e4e6406e06700cbd0d343aa86dcd3f01f5623
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CharacteristicImpl.java
@@ -0,0 +1,39 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Characteristic;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class CharacteristicImpl extends MinimalEObjectImpl.Container implements Characteristic {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CharacteristicImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.CHARACTERISTIC;
+	}
+
+} //CharacteristicImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CombinedHeatPowerImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CombinedHeatPowerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0977f44e3a03ca1a26110c9735a8d93934e44eb
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CombinedHeatPowerImpl.java
@@ -0,0 +1,462 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Characteristic;
+import de.hftstuttgart.energycomponents.CombinedHeatPower;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Combined Heat Power</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl#getThermalEfficiency <em>Thermal Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl#getElectricalEfficiency <em>Electrical Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl#getInstalledElectricalPower <em>Installed Electrical Power</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl#getElectricalEfficiencyPartLoad <em>Electrical Efficiency Part Load</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CombinedHeatPowerImpl#getThermalEfficiencyPartLoad <em>Thermal Efficiency Part Load</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CombinedHeatPowerImpl extends ThermalEnergyDeviceImpl implements CombinedHeatPower {
+	/**
+	 * The default value of the '{@link #getThermalEfficiency() <em>Thermal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double THERMAL_EFFICIENCY_EDEFAULT = 0.4;
+
+	/**
+	 * The cached value of the '{@link #getThermalEfficiency() <em>Thermal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double thermalEfficiency = THERMAL_EFFICIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getElectricalEfficiency() <em>Electrical Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElectricalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ELECTRICAL_EFFICIENCY_EDEFAULT = 0.4;
+
+	/**
+	 * The cached value of the '{@link #getElectricalEfficiency() <em>Electrical Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElectricalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double electricalEfficiency = ELECTRICAL_EFFICIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getInstalledElectricalPower() <em>Installed Electrical Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInstalledElectricalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity INSTALLED_ELECTRICAL_POWER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kW");
+
+	/**
+	 * The cached value of the '{@link #getInstalledElectricalPower() <em>Installed Electrical Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInstalledElectricalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity installedElectricalPower = INSTALLED_ELECTRICAL_POWER_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getElectricalEfficiencyPartLoad() <em>Electrical Efficiency Part Load</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElectricalEfficiencyPartLoad()
+	 * @generated
+	 * @ordered
+	 */
+	protected Characteristic electricalEfficiencyPartLoad;
+
+	/**
+	 * The cached value of the '{@link #getThermalEfficiencyPartLoad() <em>Thermal Efficiency Part Load</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalEfficiencyPartLoad()
+	 * @generated
+	 * @ordered
+	 */
+	protected Characteristic thermalEfficiencyPartLoad;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CombinedHeatPowerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.COMBINED_HEAT_POWER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getThermalEfficiency() {
+		return thermalEfficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThermalEfficiency(double newThermalEfficiency) {
+		double oldThermalEfficiency = thermalEfficiency;
+		thermalEfficiency = newThermalEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY,
+					oldThermalEfficiency, thermalEfficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getElectricalEfficiency() {
+		return electricalEfficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setElectricalEfficiency(double newElectricalEfficiency) {
+		double oldElectricalEfficiency = electricalEfficiency;
+		electricalEfficiency = newElectricalEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY, oldElectricalEfficiency,
+					electricalEfficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getInstalledElectricalPower() {
+		return installedElectricalPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInstalledElectricalPower(NullableQuantity newInstalledElectricalPower) {
+		NullableQuantity oldInstalledElectricalPower = installedElectricalPower;
+		installedElectricalPower = newInstalledElectricalPower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER, oldInstalledElectricalPower,
+					installedElectricalPower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Characteristic getElectricalEfficiencyPartLoad() {
+		return electricalEfficiencyPartLoad;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetElectricalEfficiencyPartLoad(Characteristic newElectricalEfficiencyPartLoad,
+			NotificationChain msgs) {
+		Characteristic oldElectricalEfficiencyPartLoad = electricalEfficiencyPartLoad;
+		electricalEfficiencyPartLoad = newElectricalEfficiencyPartLoad;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD, oldElectricalEfficiencyPartLoad,
+					newElectricalEfficiencyPartLoad);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setElectricalEfficiencyPartLoad(Characteristic newElectricalEfficiencyPartLoad) {
+		if (newElectricalEfficiencyPartLoad != electricalEfficiencyPartLoad) {
+			NotificationChain msgs = null;
+			if (electricalEfficiencyPartLoad != null)
+				msgs = ((InternalEObject) electricalEfficiencyPartLoad).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD,
+						null, msgs);
+			if (newElectricalEfficiencyPartLoad != null)
+				msgs = ((InternalEObject) newElectricalEfficiencyPartLoad).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD,
+						null, msgs);
+			msgs = basicSetElectricalEfficiencyPartLoad(newElectricalEfficiencyPartLoad, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD, newElectricalEfficiencyPartLoad,
+					newElectricalEfficiencyPartLoad));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Characteristic getThermalEfficiencyPartLoad() {
+		return thermalEfficiencyPartLoad;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetThermalEfficiencyPartLoad(Characteristic newThermalEfficiencyPartLoad,
+			NotificationChain msgs) {
+		Characteristic oldThermalEfficiencyPartLoad = thermalEfficiencyPartLoad;
+		thermalEfficiencyPartLoad = newThermalEfficiencyPartLoad;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD, oldThermalEfficiencyPartLoad,
+					newThermalEfficiencyPartLoad);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThermalEfficiencyPartLoad(Characteristic newThermalEfficiencyPartLoad) {
+		if (newThermalEfficiencyPartLoad != thermalEfficiencyPartLoad) {
+			NotificationChain msgs = null;
+			if (thermalEfficiencyPartLoad != null)
+				msgs = ((InternalEObject) thermalEfficiencyPartLoad).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD, null,
+						msgs);
+			if (newThermalEfficiencyPartLoad != null)
+				msgs = ((InternalEObject) newThermalEfficiencyPartLoad).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD, null,
+						msgs);
+			msgs = basicSetThermalEfficiencyPartLoad(newThermalEfficiencyPartLoad, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD, newThermalEfficiencyPartLoad,
+					newThermalEfficiencyPartLoad));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD:
+			return basicSetElectricalEfficiencyPartLoad(null, msgs);
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD:
+			return basicSetThermalEfficiencyPartLoad(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			return getThermalEfficiency();
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY:
+			return getElectricalEfficiency();
+		case EnCompPackage.COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER:
+			return getInstalledElectricalPower();
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD:
+			return getElectricalEfficiencyPartLoad();
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD:
+			return getThermalEfficiencyPartLoad();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			setThermalEfficiency((Double) newValue);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY:
+			setElectricalEfficiency((Double) newValue);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER:
+			setInstalledElectricalPower((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD:
+			setElectricalEfficiencyPartLoad((Characteristic) newValue);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD:
+			setThermalEfficiencyPartLoad((Characteristic) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			setThermalEfficiency(THERMAL_EFFICIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY:
+			setElectricalEfficiency(ELECTRICAL_EFFICIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER:
+			setInstalledElectricalPower(INSTALLED_ELECTRICAL_POWER_EDEFAULT);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD:
+			setElectricalEfficiencyPartLoad((Characteristic) null);
+			return;
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD:
+			setThermalEfficiencyPartLoad((Characteristic) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			return thermalEfficiency != THERMAL_EFFICIENCY_EDEFAULT;
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY:
+			return electricalEfficiency != ELECTRICAL_EFFICIENCY_EDEFAULT;
+		case EnCompPackage.COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER:
+			return INSTALLED_ELECTRICAL_POWER_EDEFAULT == null ? installedElectricalPower != null
+					: !INSTALLED_ELECTRICAL_POWER_EDEFAULT.equals(installedElectricalPower);
+		case EnCompPackage.COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD:
+			return electricalEfficiencyPartLoad != null;
+		case EnCompPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD:
+			return thermalEfficiencyPartLoad != null;
+		}
+		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(" (thermalEfficiency: ");
+		result.append(thermalEfficiency);
+		result.append(", electricalEfficiency: ");
+		result.append(electricalEfficiency);
+		result.append(", installedElectricalPower: ");
+		result.append(installedElectricalPower);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CombinedHeatPowerImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CostImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CostImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..26e9d1b8c47ed3b4cbaee44364d3c30d1343918f
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/CostImpl.java
@@ -0,0 +1,718 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Characteristic;
+import de.hftstuttgart.energycomponents.Cost;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.TypeOfHeatSource;
+import de.hftstuttgart.units.NullableQuantity;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cost</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getComponentName <em>Component Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getHeatSource <em>Heat Source</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getDatasource <em>Datasource</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getInvestmentCost <em>Investment Cost</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getOtherInvestmentCost <em>Other Investment Cost</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getPersonnelHours <em>Personnel Hours</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getPersonnelCostShare <em>Personnel Cost Share</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.CostImpl#getMaintenanceCostShare <em>Maintenance Cost Share</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CostImpl extends MinimalEObjectImpl.Container implements Cost {
+	/**
+	 * The default value of the '{@link #getComponentName() <em>Component Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComponentName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String COMPONENT_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getComponentName() <em>Component Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComponentName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String componentName = COMPONENT_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getHeatSource() <em>Heat Source</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final TypeOfHeatSource HEAT_SOURCE_EDEFAULT = TypeOfHeatSource.NATURAL_GAS;
+
+	/**
+	 * The cached value of the '{@link #getHeatSource() <em>Heat Source</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected TypeOfHeatSource heatSource = HEAT_SOURCE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDatasource() <em>Datasource</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatasource()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DATASOURCE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDatasource() <em>Datasource</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatasource()
+	 * @generated
+	 * @ordered
+	 */
+	protected String datasource = DATASOURCE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getInvestmentCost() <em>Investment Cost</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInvestmentCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected Characteristic investmentCost;
+
+	/**
+	 * The default value of the '{@link #getOtherInvestmentCost() <em>Other Investment Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherInvestmentCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double OTHER_INVESTMENT_COST_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getOtherInvestmentCost() <em>Other Investment Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOtherInvestmentCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected double otherInvestmentCost = OTHER_INVESTMENT_COST_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPersonnelHours() <em>Personnel Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersonnelHours()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity PERSONNEL_HOURS_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "10 h");
+
+	/**
+	 * The cached value of the '{@link #getPersonnelHours() <em>Personnel Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersonnelHours()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity personnelHours = PERSONNEL_HOURS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPersonnelCostShare() <em>Personnel Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersonnelCostShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PERSONNEL_COST_SHARE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getPersonnelCostShare() <em>Personnel Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersonnelCostShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected double personnelCostShare = PERSONNEL_COST_SHARE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAdministrationAndOtherCostShare() <em>Administration And Other Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAdministrationAndOtherCostShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ADMINISTRATION_AND_OTHER_COST_SHARE_EDEFAULT = 0.015;
+
+	/**
+	 * The cached value of the '{@link #getAdministrationAndOtherCostShare() <em>Administration And Other Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAdministrationAndOtherCostShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected double administrationAndOtherCostShare = ADMINISTRATION_AND_OTHER_COST_SHARE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaintenanceCostShare() <em>Maintenance Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaintenanceCostShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MAINTENANCE_COST_SHARE_EDEFAULT = 0.015;
+
+	/**
+	 * The cached value of the '{@link #getMaintenanceCostShare() <em>Maintenance Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaintenanceCostShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected double maintenanceCostShare = MAINTENANCE_COST_SHARE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CostImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.COST;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getPersonnelHours() {
+		return personnelHours;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPersonnelHours(NullableQuantity newPersonnelHours) {
+		NullableQuantity oldPersonnelHours = personnelHours;
+		personnelHours = newPersonnelHours;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__PERSONNEL_HOURS,
+					oldPersonnelHours, personnelHours));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getPersonnelCostShare() {
+		return personnelCostShare;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPersonnelCostShare(double newPersonnelCostShare) {
+		double oldPersonnelCostShare = personnelCostShare;
+		personnelCostShare = newPersonnelCostShare;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__PERSONNEL_COST_SHARE,
+					oldPersonnelCostShare, personnelCostShare));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getAdministrationAndOtherCostShare() {
+		return administrationAndOtherCostShare;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAdministrationAndOtherCostShare(double newAdministrationAndOtherCostShare) {
+		double oldAdministrationAndOtherCostShare = administrationAndOtherCostShare;
+		administrationAndOtherCostShare = newAdministrationAndOtherCostShare;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE, oldAdministrationAndOtherCostShare,
+					administrationAndOtherCostShare));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMaintenanceCostShare() {
+		return maintenanceCostShare;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaintenanceCostShare(double newMaintenanceCostShare) {
+		double oldMaintenanceCostShare = maintenanceCostShare;
+		maintenanceCostShare = newMaintenanceCostShare;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__MAINTENANCE_COST_SHARE,
+					oldMaintenanceCostShare, maintenanceCostShare));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.COST__INVESTMENT_COST:
+			return basicSetInvestmentCost(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDatasource() {
+		return datasource;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDatasource(String newDatasource) {
+		String oldDatasource = datasource;
+		datasource = newDatasource;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__DATASOURCE, oldDatasource,
+					datasource));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Characteristic getInvestmentCost() {
+		return investmentCost;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInvestmentCost(Characteristic newInvestmentCost, NotificationChain msgs) {
+		Characteristic oldInvestmentCost = investmentCost;
+		investmentCost = newInvestmentCost;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.COST__INVESTMENT_COST, oldInvestmentCost, newInvestmentCost);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInvestmentCost(Characteristic newInvestmentCost) {
+		if (newInvestmentCost != investmentCost) {
+			NotificationChain msgs = null;
+			if (investmentCost != null)
+				msgs = ((InternalEObject) investmentCost).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.COST__INVESTMENT_COST, null, msgs);
+			if (newInvestmentCost != null)
+				msgs = ((InternalEObject) newInvestmentCost).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.COST__INVESTMENT_COST, null, msgs);
+			msgs = basicSetInvestmentCost(newInvestmentCost, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__INVESTMENT_COST,
+					newInvestmentCost, newInvestmentCost));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getOtherInvestmentCost() {
+		return otherInvestmentCost;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOtherInvestmentCost(double newOtherInvestmentCost) {
+		double oldOtherInvestmentCost = otherInvestmentCost;
+		otherInvestmentCost = newOtherInvestmentCost;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__OTHER_INVESTMENT_COST,
+					oldOtherInvestmentCost, otherInvestmentCost));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getComponentName() {
+		return componentName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setComponentName(String newComponentName) {
+		String oldComponentName = componentName;
+		componentName = newComponentName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__COMPONENT_NAME, oldComponentName,
+					componentName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__DESCRIPTION, oldDescription,
+					description));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TypeOfHeatSource getHeatSource() {
+		return heatSource;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHeatSource(TypeOfHeatSource newHeatSource) {
+		TypeOfHeatSource oldHeatSource = heatSource;
+		heatSource = newHeatSource == null ? HEAT_SOURCE_EDEFAULT : newHeatSource;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.COST__HEAT_SOURCE, oldHeatSource,
+					heatSource));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.COST__COMPONENT_NAME:
+			return getComponentName();
+		case EnCompPackage.COST__DESCRIPTION:
+			return getDescription();
+		case EnCompPackage.COST__HEAT_SOURCE:
+			return getHeatSource();
+		case EnCompPackage.COST__DATASOURCE:
+			return getDatasource();
+		case EnCompPackage.COST__INVESTMENT_COST:
+			return getInvestmentCost();
+		case EnCompPackage.COST__OTHER_INVESTMENT_COST:
+			return getOtherInvestmentCost();
+		case EnCompPackage.COST__PERSONNEL_HOURS:
+			return getPersonnelHours();
+		case EnCompPackage.COST__PERSONNEL_COST_SHARE:
+			return getPersonnelCostShare();
+		case EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE:
+			return getAdministrationAndOtherCostShare();
+		case EnCompPackage.COST__MAINTENANCE_COST_SHARE:
+			return getMaintenanceCostShare();
+		}
+		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 EnCompPackage.COST__COMPONENT_NAME:
+			setComponentName((String) newValue);
+			return;
+		case EnCompPackage.COST__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		case EnCompPackage.COST__HEAT_SOURCE:
+			setHeatSource((TypeOfHeatSource) newValue);
+			return;
+		case EnCompPackage.COST__DATASOURCE:
+			setDatasource((String) newValue);
+			return;
+		case EnCompPackage.COST__INVESTMENT_COST:
+			setInvestmentCost((Characteristic) newValue);
+			return;
+		case EnCompPackage.COST__OTHER_INVESTMENT_COST:
+			setOtherInvestmentCost((Double) newValue);
+			return;
+		case EnCompPackage.COST__PERSONNEL_HOURS:
+			setPersonnelHours((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.COST__PERSONNEL_COST_SHARE:
+			setPersonnelCostShare((Double) newValue);
+			return;
+		case EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE:
+			setAdministrationAndOtherCostShare((Double) newValue);
+			return;
+		case EnCompPackage.COST__MAINTENANCE_COST_SHARE:
+			setMaintenanceCostShare((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.COST__COMPONENT_NAME:
+			setComponentName(COMPONENT_NAME_EDEFAULT);
+			return;
+		case EnCompPackage.COST__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		case EnCompPackage.COST__HEAT_SOURCE:
+			setHeatSource(HEAT_SOURCE_EDEFAULT);
+			return;
+		case EnCompPackage.COST__DATASOURCE:
+			setDatasource(DATASOURCE_EDEFAULT);
+			return;
+		case EnCompPackage.COST__INVESTMENT_COST:
+			setInvestmentCost((Characteristic) null);
+			return;
+		case EnCompPackage.COST__OTHER_INVESTMENT_COST:
+			setOtherInvestmentCost(OTHER_INVESTMENT_COST_EDEFAULT);
+			return;
+		case EnCompPackage.COST__PERSONNEL_HOURS:
+			setPersonnelHours(PERSONNEL_HOURS_EDEFAULT);
+			return;
+		case EnCompPackage.COST__PERSONNEL_COST_SHARE:
+			setPersonnelCostShare(PERSONNEL_COST_SHARE_EDEFAULT);
+			return;
+		case EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE:
+			setAdministrationAndOtherCostShare(ADMINISTRATION_AND_OTHER_COST_SHARE_EDEFAULT);
+			return;
+		case EnCompPackage.COST__MAINTENANCE_COST_SHARE:
+			setMaintenanceCostShare(MAINTENANCE_COST_SHARE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.COST__COMPONENT_NAME:
+			return COMPONENT_NAME_EDEFAULT == null ? componentName != null
+					: !COMPONENT_NAME_EDEFAULT.equals(componentName);
+		case EnCompPackage.COST__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		case EnCompPackage.COST__HEAT_SOURCE:
+			return heatSource != HEAT_SOURCE_EDEFAULT;
+		case EnCompPackage.COST__DATASOURCE:
+			return DATASOURCE_EDEFAULT == null ? datasource != null : !DATASOURCE_EDEFAULT.equals(datasource);
+		case EnCompPackage.COST__INVESTMENT_COST:
+			return investmentCost != null;
+		case EnCompPackage.COST__OTHER_INVESTMENT_COST:
+			return otherInvestmentCost != OTHER_INVESTMENT_COST_EDEFAULT;
+		case EnCompPackage.COST__PERSONNEL_HOURS:
+			return PERSONNEL_HOURS_EDEFAULT == null ? personnelHours != null
+					: !PERSONNEL_HOURS_EDEFAULT.equals(personnelHours);
+		case EnCompPackage.COST__PERSONNEL_COST_SHARE:
+			return personnelCostShare != PERSONNEL_COST_SHARE_EDEFAULT;
+		case EnCompPackage.COST__ADMINISTRATION_AND_OTHER_COST_SHARE:
+			return administrationAndOtherCostShare != ADMINISTRATION_AND_OTHER_COST_SHARE_EDEFAULT;
+		case EnCompPackage.COST__MAINTENANCE_COST_SHARE:
+			return maintenanceCostShare != MAINTENANCE_COST_SHARE_EDEFAULT;
+		}
+		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(" (componentName: ");
+		result.append(componentName);
+		result.append(", description: ");
+		result.append(description);
+		result.append(", heatSource: ");
+		result.append(heatSource);
+		result.append(", datasource: ");
+		result.append(datasource);
+		result.append(", otherInvestmentCost: ");
+		result.append(otherInvestmentCost);
+		result.append(", personnelHours: ");
+		result.append(personnelHours);
+		result.append(", personnelCostShare: ");
+		result.append(personnelCostShare);
+		result.append(", administrationAndOtherCostShare: ");
+		result.append(administrationAndOtherCostShare);
+		result.append(", maintenanceCostShare: ");
+		result.append(maintenanceCostShare);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CostImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/DataPointImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/DataPointImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..973f3c6793ca28b2139f88e2a714a6ea1ba6d7b7
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/DataPointImpl.java
@@ -0,0 +1,222 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.DataPoint;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.DataPointImpl#getX <em>X</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.DataPointImpl#getY <em>Y</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataPointImpl extends MinimalEObjectImpl.Container implements DataPoint {
+	/**
+	 * The default value of the '{@link #getX() <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getX()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double X_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getX() <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getX()
+	 * @generated
+	 * @ordered
+	 */
+	protected double x = X_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getY() <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getY()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double Y_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getY() <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getY()
+	 * @generated
+	 * @ordered
+	 */
+	protected double y = Y_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DataPointImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.DATA_POINT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getX() {
+		return x;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setX(double newX) {
+		double oldX = x;
+		x = newX;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.DATA_POINT__X, oldX, x));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getY() {
+		return y;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setY(double newY) {
+		double oldY = y;
+		y = newY;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.DATA_POINT__Y, oldY, y));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.DATA_POINT__X:
+			return getX();
+		case EnCompPackage.DATA_POINT__Y:
+			return getY();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.DATA_POINT__X:
+			setX((Double) newValue);
+			return;
+		case EnCompPackage.DATA_POINT__Y:
+			setY((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.DATA_POINT__X:
+			setX(X_EDEFAULT);
+			return;
+		case EnCompPackage.DATA_POINT__Y:
+			setY(Y_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.DATA_POINT__X:
+			return x != X_EDEFAULT;
+		case EnCompPackage.DATA_POINT__Y:
+			return y != Y_EDEFAULT;
+		}
+		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(" (x: ");
+		result.append(x);
+		result.append(", y: ");
+		result.append(y);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DataPointImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectricalStorageImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectricalStorageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..429461d03c49effd8a475a407b6d7132d4f5911c
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectricalStorageImpl.java
@@ -0,0 +1,578 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.ElectricalStorage;
+import de.hftstuttgart.energycomponents.ElectricalStorageTypes;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Electrical Storage</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getElectricalStorageType <em>Electrical Storage Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getBatteryCapacity <em>Battery Capacity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getBatteryVoltage <em>Battery Voltage</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getBatteryLifeCycle <em>Battery Life Cycle</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getSelfDischarge <em>Self Discharge</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getInverterIncluded <em>Inverter Included</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getBatteryEffiency <em>Battery Effiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricalStorageImpl#getEnergyContent <em>Energy Content</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ElectricalStorageImpl extends EnergyComponentImpl implements ElectricalStorage {
+	/**
+	 * The default value of the '{@link #getElectricalStorageType() <em>Electrical Storage Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElectricalStorageType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ElectricalStorageTypes ELECTRICAL_STORAGE_TYPE_EDEFAULT = ElectricalStorageTypes.LITHIUM_ION;
+
+	/**
+	 * The cached value of the '{@link #getElectricalStorageType() <em>Electrical Storage Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElectricalStorageType()
+	 * @generated
+	 * @ordered
+	 */
+	protected ElectricalStorageTypes electricalStorageType = ELECTRICAL_STORAGE_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBatteryCapacity() <em>Battery Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryCapacity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity BATTERY_CAPACITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "A*h");
+
+	/**
+	 * The cached value of the '{@link #getBatteryCapacity() <em>Battery Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryCapacity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity batteryCapacity = BATTERY_CAPACITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBatteryVoltage() <em>Battery Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryVoltage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity BATTERY_VOLTAGE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "V");
+
+	/**
+	 * The cached value of the '{@link #getBatteryVoltage() <em>Battery Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryVoltage()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity batteryVoltage = BATTERY_VOLTAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBatteryLifeCycle() <em>Battery Life Cycle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryLifeCycle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double BATTERY_LIFE_CYCLE_EDEFAULT = 7000.0;
+
+	/**
+	 * The cached value of the '{@link #getBatteryLifeCycle() <em>Battery Life Cycle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryLifeCycle()
+	 * @generated
+	 * @ordered
+	 */
+	protected double batteryLifeCycle = BATTERY_LIFE_CYCLE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSelfDischarge() <em>Self Discharge</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSelfDischarge()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double SELF_DISCHARGE_EDEFAULT = 0.2;
+
+	/**
+	 * The cached value of the '{@link #getSelfDischarge() <em>Self Discharge</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSelfDischarge()
+	 * @generated
+	 * @ordered
+	 */
+	protected double selfDischarge = SELF_DISCHARGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getInverterIncluded() <em>Inverter Included</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInverterIncluded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Boolean INVERTER_INCLUDED_EDEFAULT = Boolean.FALSE;
+
+	/**
+	 * The cached value of the '{@link #getInverterIncluded() <em>Inverter Included</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInverterIncluded()
+	 * @generated
+	 * @ordered
+	 */
+	protected Boolean inverterIncluded = INVERTER_INCLUDED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBatteryEffiency() <em>Battery Effiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryEffiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double BATTERY_EFFIENCY_EDEFAULT = 0.8;
+
+	/**
+	 * The cached value of the '{@link #getBatteryEffiency() <em>Battery Effiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryEffiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double batteryEffiency = BATTERY_EFFIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEnergyContent() <em>Energy Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEnergyContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity ENERGY_CONTENT_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "5 kW*h");
+
+	/**
+	 * The cached value of the '{@link #getEnergyContent() <em>Energy Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEnergyContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity energyContent = ENERGY_CONTENT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ElectricalStorageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.ELECTRICAL_STORAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ElectricalStorageTypes getElectricalStorageType() {
+		return electricalStorageType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setElectricalStorageType(ElectricalStorageTypes newElectricalStorageType) {
+		ElectricalStorageTypes oldElectricalStorageType = electricalStorageType;
+		electricalStorageType = newElectricalStorageType == null ? ELECTRICAL_STORAGE_TYPE_EDEFAULT
+				: newElectricalStorageType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE, oldElectricalStorageType,
+					electricalStorageType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getBatteryCapacity() {
+		return batteryCapacity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBatteryCapacity(NullableQuantity newBatteryCapacity) {
+		NullableQuantity oldBatteryCapacity = batteryCapacity;
+		batteryCapacity = newBatteryCapacity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICAL_STORAGE__BATTERY_CAPACITY,
+					oldBatteryCapacity, batteryCapacity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getBatteryVoltage() {
+		return batteryVoltage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBatteryVoltage(NullableQuantity newBatteryVoltage) {
+		NullableQuantity oldBatteryVoltage = batteryVoltage;
+		batteryVoltage = newBatteryVoltage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICAL_STORAGE__BATTERY_VOLTAGE,
+					oldBatteryVoltage, batteryVoltage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getBatteryLifeCycle() {
+		return batteryLifeCycle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBatteryLifeCycle(double newBatteryLifeCycle) {
+		double oldBatteryLifeCycle = batteryLifeCycle;
+		batteryLifeCycle = newBatteryLifeCycle;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE,
+					oldBatteryLifeCycle, batteryLifeCycle));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getSelfDischarge() {
+		return selfDischarge;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSelfDischarge(double newSelfDischarge) {
+		double oldSelfDischarge = selfDischarge;
+		selfDischarge = newSelfDischarge;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICAL_STORAGE__SELF_DISCHARGE,
+					oldSelfDischarge, selfDischarge));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Boolean getInverterIncluded() {
+		return inverterIncluded;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInverterIncluded(Boolean newInverterIncluded) {
+		Boolean oldInverterIncluded = inverterIncluded;
+		inverterIncluded = newInverterIncluded;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICAL_STORAGE__INVERTER_INCLUDED,
+					oldInverterIncluded, inverterIncluded));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getBatteryEffiency() {
+		return batteryEffiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBatteryEffiency(double newBatteryEffiency) {
+		double oldBatteryEffiency = batteryEffiency;
+		batteryEffiency = newBatteryEffiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICAL_STORAGE__BATTERY_EFFIENCY,
+					oldBatteryEffiency, batteryEffiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getEnergyContent() {
+		return energyContent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEnergyContent(NullableQuantity newEnergyContent) {
+		NullableQuantity oldEnergyContent = energyContent;
+		energyContent = newEnergyContent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICAL_STORAGE__ENERGY_CONTENT,
+					oldEnergyContent, energyContent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE:
+			return getElectricalStorageType();
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_CAPACITY:
+			return getBatteryCapacity();
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_VOLTAGE:
+			return getBatteryVoltage();
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE:
+			return getBatteryLifeCycle();
+		case EnCompPackage.ELECTRICAL_STORAGE__SELF_DISCHARGE:
+			return getSelfDischarge();
+		case EnCompPackage.ELECTRICAL_STORAGE__INVERTER_INCLUDED:
+			return getInverterIncluded();
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_EFFIENCY:
+			return getBatteryEffiency();
+		case EnCompPackage.ELECTRICAL_STORAGE__ENERGY_CONTENT:
+			return getEnergyContent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE:
+			setElectricalStorageType((ElectricalStorageTypes) newValue);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_CAPACITY:
+			setBatteryCapacity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_VOLTAGE:
+			setBatteryVoltage((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE:
+			setBatteryLifeCycle((Double) newValue);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__SELF_DISCHARGE:
+			setSelfDischarge((Double) newValue);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__INVERTER_INCLUDED:
+			setInverterIncluded((Boolean) newValue);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_EFFIENCY:
+			setBatteryEffiency((Double) newValue);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__ENERGY_CONTENT:
+			setEnergyContent((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE:
+			setElectricalStorageType(ELECTRICAL_STORAGE_TYPE_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_CAPACITY:
+			setBatteryCapacity(BATTERY_CAPACITY_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_VOLTAGE:
+			setBatteryVoltage(BATTERY_VOLTAGE_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE:
+			setBatteryLifeCycle(BATTERY_LIFE_CYCLE_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__SELF_DISCHARGE:
+			setSelfDischarge(SELF_DISCHARGE_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__INVERTER_INCLUDED:
+			setInverterIncluded(INVERTER_INCLUDED_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_EFFIENCY:
+			setBatteryEffiency(BATTERY_EFFIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTRICAL_STORAGE__ENERGY_CONTENT:
+			setEnergyContent(ENERGY_CONTENT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE:
+			return electricalStorageType != ELECTRICAL_STORAGE_TYPE_EDEFAULT;
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_CAPACITY:
+			return BATTERY_CAPACITY_EDEFAULT == null ? batteryCapacity != null
+					: !BATTERY_CAPACITY_EDEFAULT.equals(batteryCapacity);
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_VOLTAGE:
+			return BATTERY_VOLTAGE_EDEFAULT == null ? batteryVoltage != null
+					: !BATTERY_VOLTAGE_EDEFAULT.equals(batteryVoltage);
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE:
+			return batteryLifeCycle != BATTERY_LIFE_CYCLE_EDEFAULT;
+		case EnCompPackage.ELECTRICAL_STORAGE__SELF_DISCHARGE:
+			return selfDischarge != SELF_DISCHARGE_EDEFAULT;
+		case EnCompPackage.ELECTRICAL_STORAGE__INVERTER_INCLUDED:
+			return INVERTER_INCLUDED_EDEFAULT == null ? inverterIncluded != null
+					: !INVERTER_INCLUDED_EDEFAULT.equals(inverterIncluded);
+		case EnCompPackage.ELECTRICAL_STORAGE__BATTERY_EFFIENCY:
+			return batteryEffiency != BATTERY_EFFIENCY_EDEFAULT;
+		case EnCompPackage.ELECTRICAL_STORAGE__ENERGY_CONTENT:
+			return ENERGY_CONTENT_EDEFAULT == null ? energyContent != null
+					: !ENERGY_CONTENT_EDEFAULT.equals(energyContent);
+		}
+		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(" (electricalStorageType: ");
+		result.append(electricalStorageType);
+		result.append(", batteryCapacity: ");
+		result.append(batteryCapacity);
+		result.append(", batteryVoltage: ");
+		result.append(batteryVoltage);
+		result.append(", batteryLifeCycle: ");
+		result.append(batteryLifeCycle);
+		result.append(", selfDischarge: ");
+		result.append(selfDischarge);
+		result.append(", inverterIncluded: ");
+		result.append(inverterIncluded);
+		result.append(", batteryEffiency: ");
+		result.append(batteryEffiency);
+		result.append(", energyContent: ");
+		result.append(energyContent);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ElectricalStorageImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectricityImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectricityImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..9fa21bef05d7fcdce94034259cdc9638bf8a9e40
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectricityImpl.java
@@ -0,0 +1,163 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Electricity;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Electricity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectricityImpl#getRenewableShare <em>Renewable Share</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ElectricityImpl extends EnergyCarrierImpl implements Electricity {
+	/**
+	 * The default value of the '{@link #getRenewableShare() <em>Renewable Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRenewableShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double RENEWABLE_SHARE_EDEFAULT = 0.0;
+	/**
+	 * The cached value of the '{@link #getRenewableShare() <em>Renewable Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRenewableShare()
+	 * @generated
+	 * @ordered
+	 */
+	protected double renewableShare = RENEWABLE_SHARE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ElectricityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.ELECTRICITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getRenewableShare() {
+		return renewableShare;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRenewableShare(double newRenewableShare) {
+		double oldRenewableShare = renewableShare;
+		renewableShare = newRenewableShare;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTRICITY__RENEWABLE_SHARE,
+					oldRenewableShare, renewableShare));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICITY__RENEWABLE_SHARE:
+			return getRenewableShare();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICITY__RENEWABLE_SHARE:
+			setRenewableShare((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICITY__RENEWABLE_SHARE:
+			setRenewableShare(RENEWABLE_SHARE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ELECTRICITY__RENEWABLE_SHARE:
+			return renewableShare != RENEWABLE_SHARE_EDEFAULT;
+		}
+		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(" (renewableShare: ");
+		result.append(renewableShare);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ElectricityImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectrolyzerImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectrolyzerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1e1f7fe328a2148d5596fbbd4067944aab151a0
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ElectrolyzerImpl.java
@@ -0,0 +1,523 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Electrolyzer;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.cellTypesElectrolyzer;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Electrolyzer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl#getCellType <em>Cell Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl#getCellArea <em>Cell Area</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl#getNumberOfCells <em>Number Of Cells</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl#getMaxOperatingCurrentDensity <em>Max Operating Current Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl#getMinOperatingCurrentDensity <em>Min Operating Current Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl#getOverloadCapacity <em>Overload Capacity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ElectrolyzerImpl#getNominalCellVoltage <em>Nominal Cell Voltage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ElectrolyzerImpl extends EnergyComponentImpl implements Electrolyzer {
+	/**
+	 * The default value of the '{@link #getCellType() <em>Cell Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final cellTypesElectrolyzer CELL_TYPE_EDEFAULT = cellTypesElectrolyzer.PEM;
+
+	/**
+	 * The cached value of the '{@link #getCellType() <em>Cell Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellType()
+	 * @generated
+	 * @ordered
+	 */
+	protected cellTypesElectrolyzer cellType = CELL_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCellArea() <em>Cell Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity CELL_AREA_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "50 cm\u00b2");
+
+	/**
+	 * The cached value of the '{@link #getCellArea() <em>Cell Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity cellArea = CELL_AREA_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNumberOfCells() <em>Number Of Cells</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberOfCells()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double NUMBER_OF_CELLS_EDEFAULT = 5.0;
+
+	/**
+	 * The cached value of the '{@link #getNumberOfCells() <em>Number Of Cells</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberOfCells()
+	 * @generated
+	 * @ordered
+	 */
+	protected double numberOfCells = NUMBER_OF_CELLS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxOperatingCurrentDensity() <em>Max Operating Current Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxOperatingCurrentDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MAX_OPERATING_CURRENT_DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "3 A/cm\u00b2");
+
+	/**
+	 * The cached value of the '{@link #getMaxOperatingCurrentDensity() <em>Max Operating Current Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxOperatingCurrentDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity maxOperatingCurrentDensity = MAX_OPERATING_CURRENT_DENSITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMinOperatingCurrentDensity() <em>Min Operating Current Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinOperatingCurrentDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MIN_OPERATING_CURRENT_DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "0.3 A/cm\u00b2");
+
+	/**
+	 * The cached value of the '{@link #getMinOperatingCurrentDensity() <em>Min Operating Current Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinOperatingCurrentDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity minOperatingCurrentDensity = MIN_OPERATING_CURRENT_DENSITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOverloadCapacity() <em>Overload Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOverloadCapacity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity OVERLOAD_CAPACITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "120 %");
+
+	/**
+	 * The cached value of the '{@link #getOverloadCapacity() <em>Overload Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOverloadCapacity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity overloadCapacity = OVERLOAD_CAPACITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNominalCellVoltage() <em>Nominal Cell Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalCellVoltage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity NOMINAL_CELL_VOLTAGE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "1.94 V");
+
+	/**
+	 * The cached value of the '{@link #getNominalCellVoltage() <em>Nominal Cell Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalCellVoltage()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity nominalCellVoltage = NOMINAL_CELL_VOLTAGE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ElectrolyzerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.ELECTROLYZER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public cellTypesElectrolyzer getCellType() {
+		return cellType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCellType(cellTypesElectrolyzer newCellType) {
+		cellTypesElectrolyzer oldCellType = cellType;
+		cellType = newCellType == null ? CELL_TYPE_EDEFAULT : newCellType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTROLYZER__CELL_TYPE, oldCellType,
+					cellType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getCellArea() {
+		return cellArea;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCellArea(NullableQuantity newCellArea) {
+		NullableQuantity oldCellArea = cellArea;
+		cellArea = newCellArea;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTROLYZER__CELL_AREA, oldCellArea,
+					cellArea));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getNumberOfCells() {
+		return numberOfCells;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNumberOfCells(double newNumberOfCells) {
+		double oldNumberOfCells = numberOfCells;
+		numberOfCells = newNumberOfCells;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTROLYZER__NUMBER_OF_CELLS,
+					oldNumberOfCells, numberOfCells));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMaxOperatingCurrentDensity() {
+		return maxOperatingCurrentDensity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaxOperatingCurrentDensity(NullableQuantity newMaxOperatingCurrentDensity) {
+		NullableQuantity oldMaxOperatingCurrentDensity = maxOperatingCurrentDensity;
+		maxOperatingCurrentDensity = newMaxOperatingCurrentDensity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY, oldMaxOperatingCurrentDensity,
+					maxOperatingCurrentDensity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMinOperatingCurrentDensity() {
+		return minOperatingCurrentDensity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMinOperatingCurrentDensity(NullableQuantity newMinOperatingCurrentDensity) {
+		NullableQuantity oldMinOperatingCurrentDensity = minOperatingCurrentDensity;
+		minOperatingCurrentDensity = newMinOperatingCurrentDensity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY, oldMinOperatingCurrentDensity,
+					minOperatingCurrentDensity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getOverloadCapacity() {
+		return overloadCapacity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOverloadCapacity(NullableQuantity newOverloadCapacity) {
+		NullableQuantity oldOverloadCapacity = overloadCapacity;
+		overloadCapacity = newOverloadCapacity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTROLYZER__OVERLOAD_CAPACITY,
+					oldOverloadCapacity, overloadCapacity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getNominalCellVoltage() {
+		return nominalCellVoltage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNominalCellVoltage(NullableQuantity newNominalCellVoltage) {
+		NullableQuantity oldNominalCellVoltage = nominalCellVoltage;
+		nominalCellVoltage = newNominalCellVoltage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ELECTROLYZER__NOMINAL_CELL_VOLTAGE,
+					oldNominalCellVoltage, nominalCellVoltage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.ELECTROLYZER__CELL_TYPE:
+			return getCellType();
+		case EnCompPackage.ELECTROLYZER__CELL_AREA:
+			return getCellArea();
+		case EnCompPackage.ELECTROLYZER__NUMBER_OF_CELLS:
+			return getNumberOfCells();
+		case EnCompPackage.ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY:
+			return getMaxOperatingCurrentDensity();
+		case EnCompPackage.ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY:
+			return getMinOperatingCurrentDensity();
+		case EnCompPackage.ELECTROLYZER__OVERLOAD_CAPACITY:
+			return getOverloadCapacity();
+		case EnCompPackage.ELECTROLYZER__NOMINAL_CELL_VOLTAGE:
+			return getNominalCellVoltage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.ELECTROLYZER__CELL_TYPE:
+			setCellType((cellTypesElectrolyzer) newValue);
+			return;
+		case EnCompPackage.ELECTROLYZER__CELL_AREA:
+			setCellArea((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.ELECTROLYZER__NUMBER_OF_CELLS:
+			setNumberOfCells((Double) newValue);
+			return;
+		case EnCompPackage.ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY:
+			setMaxOperatingCurrentDensity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY:
+			setMinOperatingCurrentDensity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.ELECTROLYZER__OVERLOAD_CAPACITY:
+			setOverloadCapacity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.ELECTROLYZER__NOMINAL_CELL_VOLTAGE:
+			setNominalCellVoltage((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ELECTROLYZER__CELL_TYPE:
+			setCellType(CELL_TYPE_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTROLYZER__CELL_AREA:
+			setCellArea(CELL_AREA_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTROLYZER__NUMBER_OF_CELLS:
+			setNumberOfCells(NUMBER_OF_CELLS_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY:
+			setMaxOperatingCurrentDensity(MAX_OPERATING_CURRENT_DENSITY_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY:
+			setMinOperatingCurrentDensity(MIN_OPERATING_CURRENT_DENSITY_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTROLYZER__OVERLOAD_CAPACITY:
+			setOverloadCapacity(OVERLOAD_CAPACITY_EDEFAULT);
+			return;
+		case EnCompPackage.ELECTROLYZER__NOMINAL_CELL_VOLTAGE:
+			setNominalCellVoltage(NOMINAL_CELL_VOLTAGE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ELECTROLYZER__CELL_TYPE:
+			return cellType != CELL_TYPE_EDEFAULT;
+		case EnCompPackage.ELECTROLYZER__CELL_AREA:
+			return CELL_AREA_EDEFAULT == null ? cellArea != null : !CELL_AREA_EDEFAULT.equals(cellArea);
+		case EnCompPackage.ELECTROLYZER__NUMBER_OF_CELLS:
+			return numberOfCells != NUMBER_OF_CELLS_EDEFAULT;
+		case EnCompPackage.ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY:
+			return MAX_OPERATING_CURRENT_DENSITY_EDEFAULT == null ? maxOperatingCurrentDensity != null
+					: !MAX_OPERATING_CURRENT_DENSITY_EDEFAULT.equals(maxOperatingCurrentDensity);
+		case EnCompPackage.ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY:
+			return MIN_OPERATING_CURRENT_DENSITY_EDEFAULT == null ? minOperatingCurrentDensity != null
+					: !MIN_OPERATING_CURRENT_DENSITY_EDEFAULT.equals(minOperatingCurrentDensity);
+		case EnCompPackage.ELECTROLYZER__OVERLOAD_CAPACITY:
+			return OVERLOAD_CAPACITY_EDEFAULT == null ? overloadCapacity != null
+					: !OVERLOAD_CAPACITY_EDEFAULT.equals(overloadCapacity);
+		case EnCompPackage.ELECTROLYZER__NOMINAL_CELL_VOLTAGE:
+			return NOMINAL_CELL_VOLTAGE_EDEFAULT == null ? nominalCellVoltage != null
+					: !NOMINAL_CELL_VOLTAGE_EDEFAULT.equals(nominalCellVoltage);
+		}
+		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(" (cellType: ");
+		result.append(cellType);
+		result.append(", cellArea: ");
+		result.append(cellArea);
+		result.append(", numberOfCells: ");
+		result.append(numberOfCells);
+		result.append(", maxOperatingCurrentDensity: ");
+		result.append(maxOperatingCurrentDensity);
+		result.append(", minOperatingCurrentDensity: ");
+		result.append(minOperatingCurrentDensity);
+		result.append(", overloadCapacity: ");
+		result.append(overloadCapacity);
+		result.append(", nominalCellVoltage: ");
+		result.append(nominalCellVoltage);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ElectrolyzerImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnCompFactoryImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnCompFactoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..96ea01b704fc84d11e1d023cf10dc33d3d47f1aa
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnCompFactoryImpl.java
@@ -0,0 +1,857 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.*;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnCompFactoryImpl extends EFactoryImpl implements EnCompFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static EnCompFactory init() {
+		try {
+			EnCompFactory theEnCompFactory = (EnCompFactory) EPackage.Registry.INSTANCE
+					.getEFactory(EnCompPackage.eNS_URI);
+			if (theEnCompFactory != null) {
+				return theEnCompFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new EnCompFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnCompFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG:
+			return createEnergyComponentsCatalog();
+		case EnCompPackage.THERMAL_STORAGE:
+			return createThermalStorage();
+		case EnCompPackage.ELECTRICAL_STORAGE:
+			return createElectricalStorage();
+		case EnCompPackage.COMBINED_HEAT_POWER:
+			return createCombinedHeatPower();
+		case EnCompPackage.HEAT_PUMP:
+			return createHeatPump();
+		case EnCompPackage.BOILER:
+			return createBoiler();
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR:
+			return createSolarThermalCollector();
+		case EnCompPackage.ELECTROLYZER:
+			return createElectrolyzer();
+		case EnCompPackage.HYDROGEN_COMPRESSOR:
+			return createHydrogenCompressor();
+		case EnCompPackage.HYDROGEN_STORAGE:
+			return createHydrogenStorage();
+		case EnCompPackage.FUEL_CELL:
+			return createFuelCell();
+		case EnCompPackage.FOSSIL_FUEL:
+			return createFossilFuel();
+		case EnCompPackage.HYDROGEN:
+			return createHydrogen();
+		case EnCompPackage.BIO_FUEL:
+			return createBioFuel();
+		case EnCompPackage.WIND_TURBINE:
+			return createWindTurbine();
+		case EnCompPackage.PHOTOVOLTAIC_MODULE:
+			return createPhotovoltaicModule();
+		case EnCompPackage.INVERTER:
+			return createInverter();
+		case EnCompPackage.HEAT_EXCHANGER:
+			return createHeatExchanger();
+		case EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER:
+			return createGeothermalHeatExchanger();
+		case EnCompPackage.MEDIUM:
+			return createMedium();
+		case EnCompPackage.LINEAR_FUNCTION:
+			return createLinearFunction();
+		case EnCompPackage.DATA_POINT:
+			return createDataPoint();
+		case EnCompPackage.TABLE_FUNCTION:
+			return createTableFunction();
+		case EnCompPackage.EXPONENTIAL_FUNCTION:
+			return createExponentialFunction();
+		case EnCompPackage.TABLE_CHARACTERISTIC:
+			return createTableCharacteristic();
+		case EnCompPackage.LINEAR_CHARACTERISTIC:
+			return createLinearCharacteristic();
+		case EnCompPackage.EXPONENTIONAL_CHARACTERISTIC:
+			return createExponentionalCharacteristic();
+		case EnCompPackage.MANUFACTURER:
+			return createManufacturer();
+		case EnCompPackage.POLYNOMIAL_CHARACTERISTIC:
+			return createPolynomialCharacteristic();
+		case EnCompPackage.POLYNOMIAL_FUNCTION:
+			return createPolynomialFunction();
+		case EnCompPackage.MATERIAL:
+			return createMaterial();
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG:
+			return createEnergyComponentsCostCatalog();
+		case EnCompPackage.COST:
+			return createCost();
+		case EnCompPackage.POWER_CHARACTERISTIC:
+			return createPowerCharacteristic();
+		case EnCompPackage.POWER_FUNCTION:
+			return createPowerFunction();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case EnCompPackage.HEAT_SOURCES:
+			return createHeatSourcesFromString(eDataType, initialValue);
+		case EnCompPackage.COLLECTOR_TYPES:
+			return createCollectorTypesFromString(eDataType, initialValue);
+		case EnCompPackage.ELECTRICAL_STORAGE_TYPES:
+			return createElectricalStorageTypesFromString(eDataType, initialValue);
+		case EnCompPackage.BOILER_TYPES:
+			return createBoilerTypesFromString(eDataType, initialValue);
+		case EnCompPackage.THERMAL_STORAGE_TYPES:
+			return createThermalStorageTypesFromString(eDataType, initialValue);
+		case EnCompPackage.CELL_TYPES_ELECTROLYZER:
+			return createcellTypesElectrolyzerFromString(eDataType, initialValue);
+		case EnCompPackage.FUEL_TYPES:
+			return createFuelTypesFromString(eDataType, initialValue);
+		case EnCompPackage.TYPE_OF_HEAT_SOURCE:
+			return createTypeOfHeatSourceFromString(eDataType, initialValue);
+		case EnCompPackage.QUANTITY_DOUBLE:
+			return createQuantityDoubleFromString(eDataType, initialValue);
+		case EnCompPackage.QUANTITY_LONG:
+			return createQuantityLongFromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case EnCompPackage.HEAT_SOURCES:
+			return convertHeatSourcesToString(eDataType, instanceValue);
+		case EnCompPackage.COLLECTOR_TYPES:
+			return convertCollectorTypesToString(eDataType, instanceValue);
+		case EnCompPackage.ELECTRICAL_STORAGE_TYPES:
+			return convertElectricalStorageTypesToString(eDataType, instanceValue);
+		case EnCompPackage.BOILER_TYPES:
+			return convertBoilerTypesToString(eDataType, instanceValue);
+		case EnCompPackage.THERMAL_STORAGE_TYPES:
+			return convertThermalStorageTypesToString(eDataType, instanceValue);
+		case EnCompPackage.CELL_TYPES_ELECTROLYZER:
+			return convertcellTypesElectrolyzerToString(eDataType, instanceValue);
+		case EnCompPackage.FUEL_TYPES:
+			return convertFuelTypesToString(eDataType, instanceValue);
+		case EnCompPackage.TYPE_OF_HEAT_SOURCE:
+			return convertTypeOfHeatSourceToString(eDataType, instanceValue);
+		case EnCompPackage.QUANTITY_DOUBLE:
+			return convertQuantityDoubleToString(eDataType, instanceValue);
+		case EnCompPackage.QUANTITY_LONG:
+			return convertQuantityLongToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EnergyComponentsCatalog createEnergyComponentsCatalog() {
+		EnergyComponentsCatalogImpl energyComponentsCatalog = new EnergyComponentsCatalogImpl();
+		return energyComponentsCatalog;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ThermalStorage createThermalStorage() {
+		ThermalStorageImpl thermalStorage = new ThermalStorageImpl();
+		return thermalStorage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ElectricalStorage createElectricalStorage() {
+		ElectricalStorageImpl electricalStorage = new ElectricalStorageImpl();
+		return electricalStorage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CombinedHeatPower createCombinedHeatPower() {
+		CombinedHeatPowerImpl combinedHeatPower = new CombinedHeatPowerImpl();
+		return combinedHeatPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public HeatPump createHeatPump() {
+		HeatPumpImpl heatPump = new HeatPumpImpl();
+		return heatPump;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Boiler createBoiler() {
+		BoilerImpl boiler = new BoilerImpl();
+		return boiler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SolarThermalCollector createSolarThermalCollector() {
+		SolarThermalCollectorImpl solarThermalCollector = new SolarThermalCollectorImpl();
+		return solarThermalCollector;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Electrolyzer createElectrolyzer() {
+		ElectrolyzerImpl electrolyzer = new ElectrolyzerImpl();
+		return electrolyzer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public HydrogenCompressor createHydrogenCompressor() {
+		HydrogenCompressorImpl hydrogenCompressor = new HydrogenCompressorImpl();
+		return hydrogenCompressor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public HydrogenStorage createHydrogenStorage() {
+		HydrogenStorageImpl hydrogenStorage = new HydrogenStorageImpl();
+		return hydrogenStorage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FuelCell createFuelCell() {
+		FuelCellImpl fuelCell = new FuelCellImpl();
+		return fuelCell;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FossilFuel createFossilFuel() {
+		FossilFuelImpl fossilFuel = new FossilFuelImpl();
+		return fossilFuel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Hydrogen createHydrogen() {
+		HydrogenImpl hydrogen = new HydrogenImpl();
+		return hydrogen;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BioFuel createBioFuel() {
+		BioFuelImpl bioFuel = new BioFuelImpl();
+		return bioFuel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public WindTurbine createWindTurbine() {
+		WindTurbineImpl windTurbine = new WindTurbineImpl();
+		return windTurbine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PhotovoltaicModule createPhotovoltaicModule() {
+		PhotovoltaicModuleImpl photovoltaicModule = new PhotovoltaicModuleImpl();
+		return photovoltaicModule;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Inverter createInverter() {
+		InverterImpl inverter = new InverterImpl();
+		return inverter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public HeatExchanger createHeatExchanger() {
+		HeatExchangerImpl heatExchanger = new HeatExchangerImpl();
+		return heatExchanger;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public GeothermalHeatExchanger createGeothermalHeatExchanger() {
+		GeothermalHeatExchangerImpl geothermalHeatExchanger = new GeothermalHeatExchangerImpl();
+		return geothermalHeatExchanger;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Medium createMedium() {
+		MediumImpl medium = new MediumImpl();
+		return medium;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LinearFunction createLinearFunction() {
+		LinearFunctionImpl linearFunction = new LinearFunctionImpl();
+		return linearFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DataPoint createDataPoint() {
+		DataPointImpl dataPoint = new DataPointImpl();
+		return dataPoint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TableFunction createTableFunction() {
+		TableFunctionImpl tableFunction = new TableFunctionImpl();
+		return tableFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ExponentialFunction createExponentialFunction() {
+		ExponentialFunctionImpl exponentialFunction = new ExponentialFunctionImpl();
+		return exponentialFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TableCharacteristic createTableCharacteristic() {
+		TableCharacteristicImpl tableCharacteristic = new TableCharacteristicImpl();
+		return tableCharacteristic;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LinearCharacteristic createLinearCharacteristic() {
+		LinearCharacteristicImpl linearCharacteristic = new LinearCharacteristicImpl();
+		return linearCharacteristic;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ExponentionalCharacteristic createExponentionalCharacteristic() {
+		ExponentionalCharacteristicImpl exponentionalCharacteristic = new ExponentionalCharacteristicImpl();
+		return exponentionalCharacteristic;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Manufacturer createManufacturer() {
+		ManufacturerImpl manufacturer = new ManufacturerImpl();
+		return manufacturer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PolynomialCharacteristic createPolynomialCharacteristic() {
+		PolynomialCharacteristicImpl polynomialCharacteristic = new PolynomialCharacteristicImpl();
+		return polynomialCharacteristic;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PolynomialFunction createPolynomialFunction() {
+		PolynomialFunctionImpl polynomialFunction = new PolynomialFunctionImpl();
+		return polynomialFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Material createMaterial() {
+		MaterialImpl material = new MaterialImpl();
+		return material;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EnergyComponentsCostCatalog createEnergyComponentsCostCatalog() {
+		EnergyComponentsCostCatalogImpl energyComponentsCostCatalog = new EnergyComponentsCostCatalogImpl();
+		return energyComponentsCostCatalog;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Cost createCost() {
+		CostImpl cost = new CostImpl();
+		return cost;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PowerCharacteristic createPowerCharacteristic() {
+		PowerCharacteristicImpl powerCharacteristic = new PowerCharacteristicImpl();
+		return powerCharacteristic;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PowerFunction createPowerFunction() {
+		PowerFunctionImpl powerFunction = new PowerFunctionImpl();
+		return powerFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HeatSources createHeatSourcesFromString(EDataType eDataType, String initialValue) {
+		HeatSources result = HeatSources.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertHeatSourcesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CollectorTypes createCollectorTypesFromString(EDataType eDataType, String initialValue) {
+		CollectorTypes result = CollectorTypes.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertCollectorTypesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElectricalStorageTypes createElectricalStorageTypesFromString(EDataType eDataType, String initialValue) {
+		ElectricalStorageTypes result = ElectricalStorageTypes.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertElectricalStorageTypesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoilerTypes createBoilerTypesFromString(EDataType eDataType, String initialValue) {
+		BoilerTypes result = BoilerTypes.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertBoilerTypesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ThermalStorageTypes createThermalStorageTypesFromString(EDataType eDataType, String initialValue) {
+		ThermalStorageTypes result = ThermalStorageTypes.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertThermalStorageTypesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FuelTypes createFuelTypesFromString(EDataType eDataType, String initialValue) {
+		FuelTypes result = FuelTypes.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertFuelTypesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypeOfHeatSource createTypeOfHeatSourceFromString(EDataType eDataType, String initialValue) {
+		TypeOfHeatSource result = TypeOfHeatSource.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertTypeOfHeatSourceToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public cellTypesElectrolyzer createcellTypesElectrolyzerFromString(EDataType eDataType, String initialValue) {
+		cellTypesElectrolyzer result = cellTypesElectrolyzer.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertcellTypesElectrolyzerToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NullableQuantity createQuantityDouble(final String it) {
+		return de.hftstuttgart.units.NullableQuantity.create(it);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NullableQuantity createQuantityDoubleFromString(EDataType eDataType, String initialValue) {
+		return createQuantityDouble(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertQuantityDouble(final NullableQuantity it) {
+		return it == null ? null : it.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertQuantityDoubleToString(EDataType eDataType, Object instanceValue) {
+		return convertQuantityDouble((NullableQuantity) instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NullableQuantity createQuantityLong(final String it) {
+		return de.hftstuttgart.units.NullableQuantity.create(it);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NullableQuantity createQuantityLongFromString(EDataType eDataType, String initialValue) {
+		return createQuantityLong(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertQuantityLong(final NullableQuantity it) {
+		return it == null ? null : it.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertQuantityLongToString(EDataType eDataType, Object instanceValue) {
+		return convertQuantityLong((NullableQuantity) instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EnCompPackage getEnCompPackage() {
+		return (EnCompPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static EnCompPackage getPackage() {
+		return EnCompPackage.eINSTANCE;
+	}
+
+} //EnCompFactoryImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnCompPackageImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnCompPackageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..305af90b829c990c442a82d6c7ee299f1aa45c96
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnCompPackageImpl.java
@@ -0,0 +1,3478 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.BioFuel;
+import de.hftstuttgart.energycomponents.Boiler;
+import de.hftstuttgart.energycomponents.BoilerTypes;
+import de.hftstuttgart.energycomponents.Characteristic;
+import de.hftstuttgart.energycomponents.CollectorTypes;
+import de.hftstuttgart.energycomponents.CombinedHeatPower;
+import de.hftstuttgart.energycomponents.Cost;
+import de.hftstuttgart.energycomponents.DataPoint;
+import de.hftstuttgart.energycomponents.ElectricalStorage;
+import de.hftstuttgart.energycomponents.ElectricalStorageTypes;
+import de.hftstuttgart.energycomponents.Electricity;
+import de.hftstuttgart.energycomponents.Electrolyzer;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyCarrier;
+import de.hftstuttgart.energycomponents.EnergyComponent;
+import de.hftstuttgart.energycomponents.EnergyComponentsCatalog;
+import de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog;
+import de.hftstuttgart.energycomponents.ExponentialFunction;
+import de.hftstuttgart.energycomponents.ExponentionalCharacteristic;
+import de.hftstuttgart.energycomponents.FossilFuel;
+import de.hftstuttgart.energycomponents.Fuel;
+import de.hftstuttgart.energycomponents.FuelCell;
+import de.hftstuttgart.energycomponents.FuelTypes;
+import de.hftstuttgart.energycomponents.GeothermalHeatExchanger;
+import de.hftstuttgart.energycomponents.HeatExchanger;
+import de.hftstuttgart.energycomponents.HeatPump;
+import de.hftstuttgart.energycomponents.HeatSources;
+import de.hftstuttgart.energycomponents.Hydrogen;
+import de.hftstuttgart.energycomponents.HydrogenCompressor;
+import de.hftstuttgart.energycomponents.HydrogenStorage;
+import de.hftstuttgart.energycomponents.Inverter;
+import de.hftstuttgart.energycomponents.LinearCharacteristic;
+import de.hftstuttgart.energycomponents.LinearFunction;
+import de.hftstuttgart.energycomponents.Manufacturer;
+import de.hftstuttgart.energycomponents.Material;
+import de.hftstuttgart.energycomponents.Medium;
+import de.hftstuttgart.energycomponents.PhotovoltaicModule;
+import de.hftstuttgart.energycomponents.PolynomialCharacteristic;
+import de.hftstuttgart.energycomponents.PolynomialFunction;
+import de.hftstuttgart.energycomponents.PowerCharacteristic;
+import de.hftstuttgart.energycomponents.PowerFunction;
+import de.hftstuttgart.energycomponents.SolarThermalCollector;
+import de.hftstuttgart.energycomponents.TableCharacteristic;
+import de.hftstuttgart.energycomponents.TableFunction;
+import de.hftstuttgart.energycomponents.ThermalEnergyDevice;
+import de.hftstuttgart.energycomponents.ThermalStorage;
+import de.hftstuttgart.energycomponents.ThermalStorageTypes;
+import de.hftstuttgart.energycomponents.TypeOfHeatSource;
+import de.hftstuttgart.energycomponents.WindTurbine;
+import de.hftstuttgart.energycomponents.cellTypesElectrolyzer;
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnCompPackageImpl extends EPackageImpl implements EnCompPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass energyComponentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass energyComponentsCatalogEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass thermalStorageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass electricalStorageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass combinedHeatPowerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass heatPumpEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass boilerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass solarThermalCollectorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass electrolyzerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass thermalEnergyDeviceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass hydrogenCompressorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass hydrogenStorageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass fuelCellEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass energyCarrierEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass fossilFuelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass hydrogenEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass electricityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass bioFuelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass fuelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass windTurbineEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass photovoltaicModuleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass inverterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass heatExchangerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass geothermalHeatExchangerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass mediumEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass linearFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dataPointEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass tableFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass exponentialFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass characteristicEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass tableCharacteristicEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass linearCharacteristicEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass exponentionalCharacteristicEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass manufacturerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass polynomialCharacteristicEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass polynomialFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass materialEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass energyComponentsCostCatalogEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass costEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass powerCharacteristicEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass powerFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum heatSourcesEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum collectorTypesEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum electricalStorageTypesEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum boilerTypesEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum thermalStorageTypesEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum fuelTypesEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum typeOfHeatSourceEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum cellTypesElectrolyzerEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType quantityDoubleEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType quantityLongEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private EnCompPackageImpl() {
+		super(eNS_URI, EnCompFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link EnCompPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static EnCompPackage init() {
+		if (isInited)
+			return (EnCompPackage) EPackage.Registry.INSTANCE.getEPackage(EnCompPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredEnCompPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		EnCompPackageImpl theEnCompPackage = registeredEnCompPackage instanceof EnCompPackageImpl
+				? (EnCompPackageImpl) registeredEnCompPackage
+				: new EnCompPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		XMLTypePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theEnCompPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theEnCompPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theEnCompPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(EnCompPackage.eNS_URI, theEnCompPackage);
+		return theEnCompPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getEnergyComponent() {
+		return energyComponentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponent_Description() {
+		return (EAttribute) energyComponentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponent_ModelName() {
+		return (EAttribute) energyComponentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponent_RevisionYear() {
+		return (EAttribute) energyComponentEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponent_TechnicalLifetime() {
+		return (EAttribute) energyComponentEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponent_Manufacturer() {
+		return (EReference) energyComponentEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getEnergyComponentsCatalog() {
+		return energyComponentsCatalogEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponentsCatalog_Author() {
+		return (EAttribute) energyComponentsCatalogEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_BioFuels() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Media() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_CombinedHeatPowerUtilities() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Boilers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_PhotovoltaicModules() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_SolarThermalCollectors() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_WindTurbines() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_GeothermalHeatExchangers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_HeatPumps() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Inverters() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_HeatExchangers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Electrolyzers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(12);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_HydrogenCompressors() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(13);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_FuelCells() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(14);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_ThermalStorages() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(15);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_PowerStorages() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(16);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_HydrogenStorages() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(17);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_FossilFuels() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(18);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Manufacturers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(19);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Materials() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(20);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Energycomponentscostcatalog() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(21);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCatalog_Energycarriers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(22);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getThermalStorage() {
+		return thermalStorageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalStorage_Volume() {
+		return (EAttribute) thermalStorageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalStorage_ThermalStorageType() {
+		return (EAttribute) thermalStorageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalStorage_MaxTemp() {
+		return (EAttribute) thermalStorageEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalStorage_TankThickness() {
+		return (EAttribute) thermalStorageEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalStorage_InsulationThickness() {
+		return (EAttribute) thermalStorageEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getThermalStorage_UsesMedium() {
+		return (EReference) thermalStorageEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getThermalStorage_InsulationMaterial() {
+		return (EReference) thermalStorageEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalStorage_Height() {
+		return (EAttribute) thermalStorageEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getThermalStorage_TankMaterial() {
+		return (EReference) thermalStorageEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getElectricalStorage() {
+		return electricalStorageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_ElectricalStorageType() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_BatteryCapacity() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_BatteryVoltage() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_BatteryLifeCycle() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_SelfDischarge() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_InverterIncluded() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_BatteryEffiency() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricalStorage_EnergyContent() {
+		return (EAttribute) electricalStorageEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCombinedHeatPower() {
+		return combinedHeatPowerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCombinedHeatPower_ThermalEfficiency() {
+		return (EAttribute) combinedHeatPowerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCombinedHeatPower_ElectricalEfficiency() {
+		return (EAttribute) combinedHeatPowerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCombinedHeatPower_InstalledElectricalPower() {
+		return (EAttribute) combinedHeatPowerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getCombinedHeatPower_ElectricalEfficiencyPartLoad() {
+		return (EReference) combinedHeatPowerEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getCombinedHeatPower_ThermalEfficiencyPartLoad() {
+		return (EReference) combinedHeatPowerEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHeatPump() {
+		return heatPumpEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHeatPump_HeatSource() {
+		return (EAttribute) heatPumpEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getHeatPump_PowerInput() {
+		return (EReference) heatPumpEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getHeatPump_HeatOutput() {
+		return (EReference) heatPumpEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getHeatPump_CoefficientOfPerformance() {
+		return (EReference) heatPumpEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBoiler() {
+		return boilerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBoiler_NominalEfficiency() {
+		return (EAttribute) boilerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBoiler_BoilerType() {
+		return (EAttribute) boilerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSolarThermalCollector() {
+		return solarThermalCollectorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSolarThermalCollector_CollectorType() {
+		return (EAttribute) solarThermalCollectorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSolarThermalCollector_ApertureArea() {
+		return (EAttribute) solarThermalCollectorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSolarThermalCollector_OpticalEfficiency() {
+		return (EAttribute) solarThermalCollectorEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSolarThermalCollector_LinearHeatLossCoefficient() {
+		return (EAttribute) solarThermalCollectorEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSolarThermalCollector_QuadraticalHeatLossCoefficient() {
+		return (EAttribute) solarThermalCollectorEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getElectrolyzer() {
+		return electrolyzerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectrolyzer_CellType() {
+		return (EAttribute) electrolyzerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectrolyzer_CellArea() {
+		return (EAttribute) electrolyzerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectrolyzer_NumberOfCells() {
+		return (EAttribute) electrolyzerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectrolyzer_MaxOperatingCurrentDensity() {
+		return (EAttribute) electrolyzerEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectrolyzer_MinOperatingCurrentDensity() {
+		return (EAttribute) electrolyzerEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectrolyzer_OverloadCapacity() {
+		return (EAttribute) electrolyzerEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectrolyzer_NominalCellVoltage() {
+		return (EAttribute) electrolyzerEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getThermalEnergyDevice() {
+		return thermalEnergyDeviceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalEnergyDevice_InstalledThermalPower() {
+		return (EAttribute) thermalEnergyDeviceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalEnergyDevice_ModulationRange() {
+		return (EAttribute) thermalEnergyDeviceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThermalEnergyDevice_Fuel() {
+		return (EAttribute) thermalEnergyDeviceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHydrogenCompressor() {
+		return hydrogenCompressorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogenCompressor_Efficiency() {
+		return (EAttribute) hydrogenCompressorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogenCompressor_ThermodynamicMode() {
+		return (EAttribute) hydrogenCompressorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogenCompressor_MaxPressure() {
+		return (EAttribute) hydrogenCompressorEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogenCompressor_MaxDeliveryRate() {
+		return (EAttribute) hydrogenCompressorEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHydrogenStorage() {
+		return hydrogenStorageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogenStorage_NumberOfCylinders() {
+		return (EAttribute) hydrogenStorageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogenStorage_CylinderVolume() {
+		return (EAttribute) hydrogenStorageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogenStorage_NominalPressure() {
+		return (EAttribute) hydrogenStorageEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getFuelCell() {
+		return fuelCellEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getEnergyCarrier() {
+		return energyCarrierEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyCarrier_Co2EmissionsFactor() {
+		return (EAttribute) energyCarrierEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyCarrier_PrimaryEnergyFactor() {
+		return (EAttribute) energyCarrierEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyCarrier_Name() {
+		return (EAttribute) energyCarrierEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyCarrier_Cost() {
+		return (EAttribute) energyCarrierEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getFossilFuel() {
+		return fossilFuelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFossilFuel_MethaneContent() {
+		return (EAttribute) fossilFuelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHydrogen() {
+		return hydrogenEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHydrogen_ChemicalPurity() {
+		return (EAttribute) hydrogenEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getHydrogen_HydrogenForHydrogenStorage() {
+		return (EReference) hydrogenEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getElectricity() {
+		return electricityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getElectricity_RenewableShare() {
+		return (EAttribute) electricityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBioFuel() {
+		return bioFuelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBioFuel_WaterContent() {
+		return (EAttribute) bioFuelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBioFuel_AshContent() {
+		return (EAttribute) bioFuelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getFuel() {
+		return fuelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFuel_NetCalorificValue() {
+		return (EAttribute) fuelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFuel_GrossCalorificValue() {
+		return (EAttribute) fuelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFuel_Density() {
+		return (EAttribute) fuelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFuel_FuelType() {
+		return (EAttribute) fuelEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getWindTurbine() {
+		return windTurbineEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPhotovoltaicModule() {
+		return photovoltaicModuleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPhotovoltaicModule_CellType() {
+		return (EAttribute) photovoltaicModuleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPhotovoltaicModule_NominalPower() {
+		return (EAttribute) photovoltaicModuleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPhotovoltaicModule_MppVoltage() {
+		return (EAttribute) photovoltaicModuleEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPhotovoltaicModule_MppCurrent() {
+		return (EAttribute) photovoltaicModuleEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPhotovoltaicModule_NominalEfficiency() {
+		return (EAttribute) photovoltaicModuleEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPhotovoltaicModule_ModuleArea() {
+		return (EAttribute) photovoltaicModuleEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getInverter() {
+		return inverterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHeatExchanger() {
+		return heatExchangerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHeatExchanger_HeatRecoveryEfficiency() {
+		return (EAttribute) heatExchangerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHeatExchanger_NominalElectricityConsumption() {
+		return (EAttribute) heatExchangerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getGeothermalHeatExchanger() {
+		return geothermalHeatExchangerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getGeothermalHeatExchanger_PipeDiameter() {
+		return (EAttribute) geothermalHeatExchangerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMedium() {
+		return mediumEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMedium_Density() {
+		return (EAttribute) mediumEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMedium_HeatCapacity() {
+		return (EAttribute) mediumEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMedium_EvaporationTemperature() {
+		return (EAttribute) mediumEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMedium_MeltingTemperature() {
+		return (EAttribute) mediumEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMedium_Name() {
+		return (EAttribute) mediumEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLinearFunction() {
+		return linearFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinearFunction_Key() {
+		return (EAttribute) linearFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinearFunction_ParameterM() {
+		return (EAttribute) linearFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinearFunction_ParameterC() {
+		return (EAttribute) linearFunctionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getLinearFunction__Linearfunction__double() {
+		return linearFunctionEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDataPoint() {
+		return dataPointEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataPoint_X() {
+		return (EAttribute) dataPointEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataPoint_Y() {
+		return (EAttribute) dataPointEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTableFunction() {
+		return tableFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTableFunction_Key() {
+		return (EAttribute) tableFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTableFunction_Datapoints() {
+		return (EReference) tableFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getExponentialFunction() {
+		return exponentialFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getExponentialFunction_Key() {
+		return (EAttribute) exponentialFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getExponentialFunction_ParameterA() {
+		return (EAttribute) exponentialFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getExponentialFunction_ParameterB() {
+		return (EAttribute) exponentialFunctionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getExponentialFunction__Exponentialfunction__double() {
+		return exponentialFunctionEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCharacteristic() {
+		return characteristicEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTableCharacteristic() {
+		return tableCharacteristicEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTableCharacteristic_Functions() {
+		return (EReference) tableCharacteristicEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLinearCharacteristic() {
+		return linearCharacteristicEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getLinearCharacteristic_Functions() {
+		return (EReference) linearCharacteristicEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getExponentionalCharacteristic() {
+		return exponentionalCharacteristicEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getExponentionalCharacteristic_Functions() {
+		return (EReference) exponentionalCharacteristicEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getManufacturer() {
+		return manufacturerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getManufacturer_ManufacturerName() {
+		return (EAttribute) manufacturerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getManufacturer_Country() {
+		return (EAttribute) manufacturerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getManufacturer_OutOfBusinessSince() {
+		return (EAttribute) manufacturerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPolynomialCharacteristic() {
+		return polynomialCharacteristicEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getPolynomialCharacteristic_Functions() {
+		return (EReference) polynomialCharacteristicEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPolynomialFunction() {
+		return polynomialFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPolynomialFunction_Key() {
+		return (EAttribute) polynomialFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPolynomialFunction_ParameterA() {
+		return (EAttribute) polynomialFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPolynomialFunction_ParameterB() {
+		return (EAttribute) polynomialFunctionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPolynomialFunction_ParameterC() {
+		return (EAttribute) polynomialFunctionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getPolynomialFunction__Polynomialfunction__double() {
+		return polynomialFunctionEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaterial() {
+		return materialEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMaterial_ThermalConductivity() {
+		return (EAttribute) materialEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMaterial_Name() {
+		return (EAttribute) materialEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getEnergyComponentsCostCatalog() {
+		return energyComponentsCostCatalogEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponentsCostCatalog_Author() {
+		return (EAttribute) energyComponentsCostCatalogEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponentsCostCatalog_RevisionYear() {
+		return (EAttribute) energyComponentsCostCatalogEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEnergyComponentsCostCatalog_CostCategories() {
+		return (EReference) energyComponentsCostCatalogEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEnergyComponentsCostCatalog_PersonnelCost() {
+		return (EAttribute) energyComponentsCostCatalogEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCost() {
+		return costEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_Datasource() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getCost_InvestmentCost() {
+		return (EReference) costEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_OtherInvestmentCost() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_PersonnelHours() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_PersonnelCostShare() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_AdministrationAndOtherCostShare() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_MaintenanceCostShare() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPowerCharacteristic() {
+		return powerCharacteristicEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getPowerCharacteristic_Functions() {
+		return (EReference) powerCharacteristicEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPowerFunction() {
+		return powerFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPowerFunction_Key() {
+		return (EAttribute) powerFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPowerFunction_ParameterA() {
+		return (EAttribute) powerFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPowerFunction_ParameterB() {
+		return (EAttribute) powerFunctionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getPowerFunction__Powerfunction__double() {
+		return powerFunctionEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_ComponentName() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_Description() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCost_HeatSource() {
+		return (EAttribute) costEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getHeatSources() {
+		return heatSourcesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getCollectorTypes() {
+		return collectorTypesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getElectricalStorageTypes() {
+		return electricalStorageTypesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getBoilerTypes() {
+		return boilerTypesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getThermalStorageTypes() {
+		return thermalStorageTypesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getFuelTypes() {
+		return fuelTypesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getTypeOfHeatSource() {
+		return typeOfHeatSourceEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getcellTypesElectrolyzer() {
+		return cellTypesElectrolyzerEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EDataType getQuantityDouble() {
+		return quantityDoubleEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EDataType getQuantityLong() {
+		return quantityLongEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EnCompFactory getEnCompFactory() {
+		return (EnCompFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		energyComponentEClass = createEClass(ENERGY_COMPONENT);
+		createEAttribute(energyComponentEClass, ENERGY_COMPONENT__DESCRIPTION);
+		createEAttribute(energyComponentEClass, ENERGY_COMPONENT__MODEL_NAME);
+		createEAttribute(energyComponentEClass, ENERGY_COMPONENT__REVISION_YEAR);
+		createEAttribute(energyComponentEClass, ENERGY_COMPONENT__TECHNICAL_LIFETIME);
+		createEReference(energyComponentEClass, ENERGY_COMPONENT__MANUFACTURER);
+
+		energyComponentsCatalogEClass = createEClass(ENERGY_COMPONENTS_CATALOG);
+		createEAttribute(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__AUTHOR);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__BIO_FUELS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__MEDIA);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__BOILERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__WIND_TURBINES);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__INVERTERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__FUEL_CELLS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__POWER_STORAGES);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__MANUFACTURERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__MATERIALS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS);
+
+		thermalStorageEClass = createEClass(THERMAL_STORAGE);
+		createEAttribute(thermalStorageEClass, THERMAL_STORAGE__VOLUME);
+		createEAttribute(thermalStorageEClass, THERMAL_STORAGE__THERMAL_STORAGE_TYPE);
+		createEAttribute(thermalStorageEClass, THERMAL_STORAGE__MAX_TEMP);
+		createEAttribute(thermalStorageEClass, THERMAL_STORAGE__TANK_THICKNESS);
+		createEAttribute(thermalStorageEClass, THERMAL_STORAGE__INSULATION_THICKNESS);
+		createEReference(thermalStorageEClass, THERMAL_STORAGE__USES_MEDIUM);
+		createEReference(thermalStorageEClass, THERMAL_STORAGE__INSULATION_MATERIAL);
+		createEAttribute(thermalStorageEClass, THERMAL_STORAGE__HEIGHT);
+		createEReference(thermalStorageEClass, THERMAL_STORAGE__TANK_MATERIAL);
+
+		electricalStorageEClass = createEClass(ELECTRICAL_STORAGE);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__ELECTRICAL_STORAGE_TYPE);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__BATTERY_CAPACITY);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__BATTERY_VOLTAGE);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__BATTERY_LIFE_CYCLE);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__SELF_DISCHARGE);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__INVERTER_INCLUDED);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__BATTERY_EFFIENCY);
+		createEAttribute(electricalStorageEClass, ELECTRICAL_STORAGE__ENERGY_CONTENT);
+
+		combinedHeatPowerEClass = createEClass(COMBINED_HEAT_POWER);
+		createEAttribute(combinedHeatPowerEClass, COMBINED_HEAT_POWER__THERMAL_EFFICIENCY);
+		createEAttribute(combinedHeatPowerEClass, COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY);
+		createEAttribute(combinedHeatPowerEClass, COMBINED_HEAT_POWER__INSTALLED_ELECTRICAL_POWER);
+		createEReference(combinedHeatPowerEClass, COMBINED_HEAT_POWER__ELECTRICAL_EFFICIENCY_PART_LOAD);
+		createEReference(combinedHeatPowerEClass, COMBINED_HEAT_POWER__THERMAL_EFFICIENCY_PART_LOAD);
+
+		heatPumpEClass = createEClass(HEAT_PUMP);
+		createEAttribute(heatPumpEClass, HEAT_PUMP__HEAT_SOURCE);
+		createEReference(heatPumpEClass, HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE);
+		createEReference(heatPumpEClass, HEAT_PUMP__POWER_INPUT);
+		createEReference(heatPumpEClass, HEAT_PUMP__HEAT_OUTPUT);
+
+		boilerEClass = createEClass(BOILER);
+		createEAttribute(boilerEClass, BOILER__NOMINAL_EFFICIENCY);
+		createEAttribute(boilerEClass, BOILER__BOILER_TYPE);
+
+		solarThermalCollectorEClass = createEClass(SOLAR_THERMAL_COLLECTOR);
+		createEAttribute(solarThermalCollectorEClass, SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE);
+		createEAttribute(solarThermalCollectorEClass, SOLAR_THERMAL_COLLECTOR__APERTURE_AREA);
+		createEAttribute(solarThermalCollectorEClass, SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY);
+		createEAttribute(solarThermalCollectorEClass, SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT);
+		createEAttribute(solarThermalCollectorEClass, SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT);
+
+		electrolyzerEClass = createEClass(ELECTROLYZER);
+		createEAttribute(electrolyzerEClass, ELECTROLYZER__CELL_TYPE);
+		createEAttribute(electrolyzerEClass, ELECTROLYZER__CELL_AREA);
+		createEAttribute(electrolyzerEClass, ELECTROLYZER__NUMBER_OF_CELLS);
+		createEAttribute(electrolyzerEClass, ELECTROLYZER__MAX_OPERATING_CURRENT_DENSITY);
+		createEAttribute(electrolyzerEClass, ELECTROLYZER__MIN_OPERATING_CURRENT_DENSITY);
+		createEAttribute(electrolyzerEClass, ELECTROLYZER__OVERLOAD_CAPACITY);
+		createEAttribute(electrolyzerEClass, ELECTROLYZER__NOMINAL_CELL_VOLTAGE);
+
+		thermalEnergyDeviceEClass = createEClass(THERMAL_ENERGY_DEVICE);
+		createEAttribute(thermalEnergyDeviceEClass, THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER);
+		createEAttribute(thermalEnergyDeviceEClass, THERMAL_ENERGY_DEVICE__MODULATION_RANGE);
+		createEAttribute(thermalEnergyDeviceEClass, THERMAL_ENERGY_DEVICE__FUEL);
+
+		hydrogenCompressorEClass = createEClass(HYDROGEN_COMPRESSOR);
+		createEAttribute(hydrogenCompressorEClass, HYDROGEN_COMPRESSOR__EFFICIENCY);
+		createEAttribute(hydrogenCompressorEClass, HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE);
+		createEAttribute(hydrogenCompressorEClass, HYDROGEN_COMPRESSOR__MAX_PRESSURE);
+		createEAttribute(hydrogenCompressorEClass, HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE);
+
+		hydrogenStorageEClass = createEClass(HYDROGEN_STORAGE);
+		createEAttribute(hydrogenStorageEClass, HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS);
+		createEAttribute(hydrogenStorageEClass, HYDROGEN_STORAGE__CYLINDER_VOLUME);
+		createEAttribute(hydrogenStorageEClass, HYDROGEN_STORAGE__NOMINAL_PRESSURE);
+
+		fuelCellEClass = createEClass(FUEL_CELL);
+
+		energyCarrierEClass = createEClass(ENERGY_CARRIER);
+		createEAttribute(energyCarrierEClass, ENERGY_CARRIER__CO2_EMISSIONS_FACTOR);
+		createEAttribute(energyCarrierEClass, ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR);
+		createEAttribute(energyCarrierEClass, ENERGY_CARRIER__NAME);
+		createEAttribute(energyCarrierEClass, ENERGY_CARRIER__COST);
+
+		fossilFuelEClass = createEClass(FOSSIL_FUEL);
+		createEAttribute(fossilFuelEClass, FOSSIL_FUEL__METHANE_CONTENT);
+
+		hydrogenEClass = createEClass(HYDROGEN);
+		createEAttribute(hydrogenEClass, HYDROGEN__CHEMICAL_PURITY);
+		createEReference(hydrogenEClass, HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE);
+
+		electricityEClass = createEClass(ELECTRICITY);
+		createEAttribute(electricityEClass, ELECTRICITY__RENEWABLE_SHARE);
+
+		bioFuelEClass = createEClass(BIO_FUEL);
+		createEAttribute(bioFuelEClass, BIO_FUEL__WATER_CONTENT);
+		createEAttribute(bioFuelEClass, BIO_FUEL__ASH_CONTENT);
+
+		fuelEClass = createEClass(FUEL);
+		createEAttribute(fuelEClass, FUEL__NET_CALORIFIC_VALUE);
+		createEAttribute(fuelEClass, FUEL__GROSS_CALORIFIC_VALUE);
+		createEAttribute(fuelEClass, FUEL__DENSITY);
+		createEAttribute(fuelEClass, FUEL__FUEL_TYPE);
+
+		windTurbineEClass = createEClass(WIND_TURBINE);
+
+		photovoltaicModuleEClass = createEClass(PHOTOVOLTAIC_MODULE);
+		createEAttribute(photovoltaicModuleEClass, PHOTOVOLTAIC_MODULE__CELL_TYPE);
+		createEAttribute(photovoltaicModuleEClass, PHOTOVOLTAIC_MODULE__NOMINAL_POWER);
+		createEAttribute(photovoltaicModuleEClass, PHOTOVOLTAIC_MODULE__MPP_VOLTAGE);
+		createEAttribute(photovoltaicModuleEClass, PHOTOVOLTAIC_MODULE__MPP_CURRENT);
+		createEAttribute(photovoltaicModuleEClass, PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY);
+		createEAttribute(photovoltaicModuleEClass, PHOTOVOLTAIC_MODULE__MODULE_AREA);
+
+		inverterEClass = createEClass(INVERTER);
+
+		heatExchangerEClass = createEClass(HEAT_EXCHANGER);
+		createEAttribute(heatExchangerEClass, HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY);
+		createEAttribute(heatExchangerEClass, HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION);
+
+		geothermalHeatExchangerEClass = createEClass(GEOTHERMAL_HEAT_EXCHANGER);
+		createEAttribute(geothermalHeatExchangerEClass, GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER);
+
+		mediumEClass = createEClass(MEDIUM);
+		createEAttribute(mediumEClass, MEDIUM__DENSITY);
+		createEAttribute(mediumEClass, MEDIUM__HEAT_CAPACITY);
+		createEAttribute(mediumEClass, MEDIUM__EVAPORATION_TEMPERATURE);
+		createEAttribute(mediumEClass, MEDIUM__MELTING_TEMPERATURE);
+		createEAttribute(mediumEClass, MEDIUM__NAME);
+
+		linearFunctionEClass = createEClass(LINEAR_FUNCTION);
+		createEAttribute(linearFunctionEClass, LINEAR_FUNCTION__KEY);
+		createEAttribute(linearFunctionEClass, LINEAR_FUNCTION__PARAMETER_M);
+		createEAttribute(linearFunctionEClass, LINEAR_FUNCTION__PARAMETER_C);
+		createEOperation(linearFunctionEClass, LINEAR_FUNCTION___LINEARFUNCTION__DOUBLE);
+
+		dataPointEClass = createEClass(DATA_POINT);
+		createEAttribute(dataPointEClass, DATA_POINT__X);
+		createEAttribute(dataPointEClass, DATA_POINT__Y);
+
+		tableFunctionEClass = createEClass(TABLE_FUNCTION);
+		createEAttribute(tableFunctionEClass, TABLE_FUNCTION__KEY);
+		createEReference(tableFunctionEClass, TABLE_FUNCTION__DATAPOINTS);
+
+		exponentialFunctionEClass = createEClass(EXPONENTIAL_FUNCTION);
+		createEAttribute(exponentialFunctionEClass, EXPONENTIAL_FUNCTION__KEY);
+		createEAttribute(exponentialFunctionEClass, EXPONENTIAL_FUNCTION__PARAMETER_A);
+		createEAttribute(exponentialFunctionEClass, EXPONENTIAL_FUNCTION__PARAMETER_B);
+		createEOperation(exponentialFunctionEClass, EXPONENTIAL_FUNCTION___EXPONENTIALFUNCTION__DOUBLE);
+
+		characteristicEClass = createEClass(CHARACTERISTIC);
+
+		tableCharacteristicEClass = createEClass(TABLE_CHARACTERISTIC);
+		createEReference(tableCharacteristicEClass, TABLE_CHARACTERISTIC__FUNCTIONS);
+
+		linearCharacteristicEClass = createEClass(LINEAR_CHARACTERISTIC);
+		createEReference(linearCharacteristicEClass, LINEAR_CHARACTERISTIC__FUNCTIONS);
+
+		exponentionalCharacteristicEClass = createEClass(EXPONENTIONAL_CHARACTERISTIC);
+		createEReference(exponentionalCharacteristicEClass, EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS);
+
+		manufacturerEClass = createEClass(MANUFACTURER);
+		createEAttribute(manufacturerEClass, MANUFACTURER__MANUFACTURER_NAME);
+		createEAttribute(manufacturerEClass, MANUFACTURER__COUNTRY);
+		createEAttribute(manufacturerEClass, MANUFACTURER__OUT_OF_BUSINESS_SINCE);
+
+		polynomialCharacteristicEClass = createEClass(POLYNOMIAL_CHARACTERISTIC);
+		createEReference(polynomialCharacteristicEClass, POLYNOMIAL_CHARACTERISTIC__FUNCTIONS);
+
+		polynomialFunctionEClass = createEClass(POLYNOMIAL_FUNCTION);
+		createEAttribute(polynomialFunctionEClass, POLYNOMIAL_FUNCTION__KEY);
+		createEAttribute(polynomialFunctionEClass, POLYNOMIAL_FUNCTION__PARAMETER_A);
+		createEAttribute(polynomialFunctionEClass, POLYNOMIAL_FUNCTION__PARAMETER_B);
+		createEAttribute(polynomialFunctionEClass, POLYNOMIAL_FUNCTION__PARAMETER_C);
+		createEOperation(polynomialFunctionEClass, POLYNOMIAL_FUNCTION___POLYNOMIALFUNCTION__DOUBLE);
+
+		materialEClass = createEClass(MATERIAL);
+		createEAttribute(materialEClass, MATERIAL__THERMAL_CONDUCTIVITY);
+		createEAttribute(materialEClass, MATERIAL__NAME);
+
+		energyComponentsCostCatalogEClass = createEClass(ENERGY_COMPONENTS_COST_CATALOG);
+		createEAttribute(energyComponentsCostCatalogEClass, ENERGY_COMPONENTS_COST_CATALOG__AUTHOR);
+		createEAttribute(energyComponentsCostCatalogEClass, ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR);
+		createEReference(energyComponentsCostCatalogEClass, ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES);
+		createEAttribute(energyComponentsCostCatalogEClass, ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST);
+
+		costEClass = createEClass(COST);
+		createEAttribute(costEClass, COST__COMPONENT_NAME);
+		createEAttribute(costEClass, COST__DESCRIPTION);
+		createEAttribute(costEClass, COST__HEAT_SOURCE);
+		createEAttribute(costEClass, COST__DATASOURCE);
+		createEReference(costEClass, COST__INVESTMENT_COST);
+		createEAttribute(costEClass, COST__OTHER_INVESTMENT_COST);
+		createEAttribute(costEClass, COST__PERSONNEL_HOURS);
+		createEAttribute(costEClass, COST__PERSONNEL_COST_SHARE);
+		createEAttribute(costEClass, COST__ADMINISTRATION_AND_OTHER_COST_SHARE);
+		createEAttribute(costEClass, COST__MAINTENANCE_COST_SHARE);
+
+		powerCharacteristicEClass = createEClass(POWER_CHARACTERISTIC);
+		createEReference(powerCharacteristicEClass, POWER_CHARACTERISTIC__FUNCTIONS);
+
+		powerFunctionEClass = createEClass(POWER_FUNCTION);
+		createEAttribute(powerFunctionEClass, POWER_FUNCTION__KEY);
+		createEAttribute(powerFunctionEClass, POWER_FUNCTION__PARAMETER_A);
+		createEAttribute(powerFunctionEClass, POWER_FUNCTION__PARAMETER_B);
+		createEOperation(powerFunctionEClass, POWER_FUNCTION___POWERFUNCTION__DOUBLE);
+
+		// Create enums
+		heatSourcesEEnum = createEEnum(HEAT_SOURCES);
+		collectorTypesEEnum = createEEnum(COLLECTOR_TYPES);
+		electricalStorageTypesEEnum = createEEnum(ELECTRICAL_STORAGE_TYPES);
+		boilerTypesEEnum = createEEnum(BOILER_TYPES);
+		thermalStorageTypesEEnum = createEEnum(THERMAL_STORAGE_TYPES);
+		cellTypesElectrolyzerEEnum = createEEnum(CELL_TYPES_ELECTROLYZER);
+		fuelTypesEEnum = createEEnum(FUEL_TYPES);
+		typeOfHeatSourceEEnum = createEEnum(TYPE_OF_HEAT_SOURCE);
+
+		// Create data types
+		quantityDoubleEDataType = createEDataType(QUANTITY_DOUBLE);
+		quantityLongEDataType = createEDataType(QUANTITY_LONG);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		XMLTypePackage theXMLTypePackage = (XMLTypePackage) EPackage.Registry.INSTANCE
+				.getEPackage(XMLTypePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		thermalStorageEClass.getESuperTypes().add(this.getEnergyComponent());
+		electricalStorageEClass.getESuperTypes().add(this.getEnergyComponent());
+		combinedHeatPowerEClass.getESuperTypes().add(this.getThermalEnergyDevice());
+		heatPumpEClass.getESuperTypes().add(this.getThermalEnergyDevice());
+		boilerEClass.getESuperTypes().add(this.getThermalEnergyDevice());
+		solarThermalCollectorEClass.getESuperTypes().add(this.getEnergyComponent());
+		electrolyzerEClass.getESuperTypes().add(this.getEnergyComponent());
+		thermalEnergyDeviceEClass.getESuperTypes().add(this.getEnergyComponent());
+		hydrogenCompressorEClass.getESuperTypes().add(this.getEnergyComponent());
+		hydrogenStorageEClass.getESuperTypes().add(this.getEnergyComponent());
+		fuelCellEClass.getESuperTypes().add(this.getEnergyComponent());
+		fossilFuelEClass.getESuperTypes().add(this.getFuel());
+		hydrogenEClass.getESuperTypes().add(this.getFuel());
+		electricityEClass.getESuperTypes().add(this.getEnergyCarrier());
+		bioFuelEClass.getESuperTypes().add(this.getFuel());
+		fuelEClass.getESuperTypes().add(this.getEnergyCarrier());
+		windTurbineEClass.getESuperTypes().add(this.getEnergyComponent());
+		photovoltaicModuleEClass.getESuperTypes().add(this.getEnergyComponent());
+		inverterEClass.getESuperTypes().add(this.getEnergyComponent());
+		heatExchangerEClass.getESuperTypes().add(this.getEnergyComponent());
+		geothermalHeatExchangerEClass.getESuperTypes().add(this.getEnergyComponent());
+		tableCharacteristicEClass.getESuperTypes().add(this.getCharacteristic());
+		linearCharacteristicEClass.getESuperTypes().add(this.getCharacteristic());
+		exponentionalCharacteristicEClass.getESuperTypes().add(this.getCharacteristic());
+		polynomialCharacteristicEClass.getESuperTypes().add(this.getCharacteristic());
+		powerCharacteristicEClass.getESuperTypes().add(this.getCharacteristic());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(energyComponentEClass, EnergyComponent.class, "EnergyComponent", IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEnergyComponent_Description(), ecorePackage.getEString(), "description", null, 0, 1,
+				EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyComponent_ModelName(), ecorePackage.getEString(), "modelName", "model xyz", 1, 1,
+				EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyComponent_RevisionYear(), ecorePackage.getEInt(), "revisionYear", null, 0, 1,
+				EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyComponent_TechnicalLifetime(), ecorePackage.getEDouble(), "technicalLifetime", "30", 0,
+				1, EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponent_Manufacturer(), this.getManufacturer(), null, "manufacturer", null, 1, 1,
+				EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(energyComponentsCatalogEClass, EnergyComponentsCatalog.class, "EnergyComponentsCatalog",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEnergyComponentsCatalog_Author(), ecorePackage.getEString(), "author", "HFT_Stuttgart", 0, 1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_BioFuels(), this.getBioFuel(), null, "bioFuels", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Media(), this.getMedium(), null, "media", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_CombinedHeatPowerUtilities(), this.getCombinedHeatPower(), null,
+				"combinedHeatPowerUtilities", null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Boilers(), this.getBoiler(), null, "boilers", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_PhotovoltaicModules(), this.getPhotovoltaicModule(), null,
+				"photovoltaicModules", null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_SolarThermalCollectors(), this.getSolarThermalCollector(), null,
+				"solarThermalCollectors", null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_WindTurbines(), this.getWindTurbine(), null, "windTurbines", null, 0,
+				-1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_GeothermalHeatExchangers(), this.getGeothermalHeatExchanger(), null,
+				"geothermalHeatExchangers", null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_HeatPumps(), this.getHeatPump(), null, "heatPumps", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Inverters(), this.getInverter(), null, "inverters", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_HeatExchangers(), this.getHeatExchanger(), null, "heatExchangers",
+				null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Electrolyzers(), this.getElectrolyzer(), null, "electrolyzers", null,
+				0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_HydrogenCompressors(), this.getHydrogenCompressor(), null,
+				"hydrogenCompressors", null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_FuelCells(), this.getFuelCell(), null, "fuelCells", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_ThermalStorages(), this.getThermalStorage(), null, "thermalStorages",
+				null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_PowerStorages(), this.getElectricalStorage(), null, "powerStorages",
+				null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_HydrogenStorages(), this.getHydrogenStorage(), null,
+				"hydrogenStorages", null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_FossilFuels(), this.getFossilFuel(), null, "fossilFuels", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Manufacturers(), this.getManufacturer(), null, "manufacturers", null,
+				0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Materials(), this.getMaterial(), null, "materials", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Energycomponentscostcatalog(), this.getEnergyComponentsCostCatalog(),
+				null, "energycomponentscostcatalog", null, 0, 1, EnergyComponentsCatalog.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Energycarriers(), this.getEnergyCarrier(), null, "energycarriers",
+				null, 0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(thermalStorageEClass, ThermalStorage.class, "ThermalStorage", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getThermalStorage_Volume(), this.getQuantityDouble(), "volume", "5 m\u00b3", 0, 1,
+				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalStorage_ThermalStorageType(), this.getThermalStorageTypes(), "thermalStorageType",
+				null, 0, 1, ThermalStorage.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				!IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalStorage_MaxTemp(), this.getQuantityDouble(), "maxTemp", "80 \u00b0C", 0, 1,
+				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalStorage_TankThickness(), this.getQuantityDouble(), "tankThickness", "10 mm ", 0, 1,
+				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalStorage_InsulationThickness(), this.getQuantityDouble(), "insulationThickness",
+				"100 mm", 0, 1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getThermalStorage_UsesMedium(), this.getMedium(), null, "usesMedium", null, 1, 1,
+				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getThermalStorage_InsulationMaterial(), this.getMaterial(), null, "insulationMaterial", null, 0,
+				1, ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalStorage_Height(), this.getQuantityDouble(), "height", "2 m", 0, 1,
+				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getThermalStorage_TankMaterial(), this.getMaterial(), null, "tankMaterial", null, 0, 1,
+				ThermalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(electricalStorageEClass, ElectricalStorage.class, "ElectricalStorage", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getElectricalStorage_ElectricalStorageType(), this.getElectricalStorageTypes(),
+				"electricalStorageType", null, 1, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_BatteryCapacity(), this.getQuantityDouble(), "batteryCapacity", "A*h", 1, 1,
+				ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_BatteryVoltage(), this.getQuantityDouble(), "batteryVoltage", "V", 0, 1,
+				ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_BatteryLifeCycle(), ecorePackage.getEDouble(), "batteryLifeCycle", "7000",
+				0, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_SelfDischarge(), ecorePackage.getEDouble(), "selfDischarge", "0.2", 0, 1,
+				ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_InverterIncluded(), ecorePackage.getEBooleanObject(), "inverterIncluded",
+				"false", 0, 1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_BatteryEffiency(), ecorePackage.getEDouble(), "batteryEffiency", "0.8", 0,
+				1, ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectricalStorage_EnergyContent(), this.getQuantityDouble(), "energyContent", "5 kW*h", 1, 1,
+				ElectricalStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(combinedHeatPowerEClass, CombinedHeatPower.class, "CombinedHeatPower", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCombinedHeatPower_ThermalEfficiency(), ecorePackage.getEDouble(), "thermalEfficiency", "0.4",
+				1, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCombinedHeatPower_ElectricalEfficiency(), ecorePackage.getEDouble(), "electricalEfficiency",
+				"0.4", 1, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCombinedHeatPower_InstalledElectricalPower(), this.getQuantityDouble(),
+				"installedElectricalPower", "kW", 1, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCombinedHeatPower_ElectricalEfficiencyPartLoad(), this.getCharacteristic(), null,
+				"electricalEfficiencyPartLoad", null, 0, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCombinedHeatPower_ThermalEfficiencyPartLoad(), this.getCharacteristic(), null,
+				"thermalEfficiencyPartLoad", null, 0, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(heatPumpEClass, HeatPump.class, "HeatPump", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getHeatPump_HeatSource(), this.getHeatSources(), "heatSource", null, 1, 1, HeatPump.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getHeatPump_CoefficientOfPerformance(), this.getCharacteristic(), null,
+				"coefficientOfPerformance", null, 1, 1, HeatPump.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getHeatPump_PowerInput(), this.getCharacteristic(), null, "powerInput", null, 0, 1,
+				HeatPump.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getHeatPump_HeatOutput(), this.getCharacteristic(), null, "heatOutput", null, 0, 1,
+				HeatPump.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(boilerEClass, Boiler.class, "Boiler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getBoiler_NominalEfficiency(), ecorePackage.getEDouble(), "nominalEfficiency", "0.98", 0, 1,
+				Boiler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getBoiler_BoilerType(), this.getBoilerTypes(), "boilerType", null, 0, 1, Boiler.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(solarThermalCollectorEClass, SolarThermalCollector.class, "SolarThermalCollector", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getSolarThermalCollector_CollectorType(), this.getCollectorTypes(), "collectorType", null, 1, 1,
+				SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSolarThermalCollector_ApertureArea(), this.getQuantityDouble(), "apertureArea", "m\u00b2", 1,
+				1, SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSolarThermalCollector_OpticalEfficiency(), ecorePackage.getEDouble(), "opticalEfficiency",
+				"0.77", 0, 1, SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSolarThermalCollector_LinearHeatLossCoefficient(), ecorePackage.getEDouble(),
+				"linearHeatLossCoefficient", "3.2", 0, 1, SolarThermalCollector.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSolarThermalCollector_QuadraticalHeatLossCoefficient(), ecorePackage.getEDouble(),
+				"quadraticalHeatLossCoefficient", "0.01", 0, 1, SolarThermalCollector.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(electrolyzerEClass, Electrolyzer.class, "Electrolyzer", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getElectrolyzer_CellType(), this.getcellTypesElectrolyzer(), "cellType", null, 0, 1,
+				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_CellArea(), this.getQuantityDouble(), "cellArea", "50 cm\u00b2", 1, 1,
+				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_NumberOfCells(), ecorePackage.getEDouble(), "numberOfCells", "5", 1, 1,
+				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_MaxOperatingCurrentDensity(), this.getQuantityDouble(),
+				"maxOperatingCurrentDensity", "3 A/cm\u00b2", 0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_MinOperatingCurrentDensity(), this.getQuantityDouble(),
+				"minOperatingCurrentDensity", "0.3 A/cm\u00b2", 0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_OverloadCapacity(), this.getQuantityDouble(), "overloadCapacity", "120 %", 0, 1,
+				Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getElectrolyzer_NominalCellVoltage(), this.getQuantityDouble(), "nominalCellVoltage", "1.94 V",
+				0, 1, Electrolyzer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(thermalEnergyDeviceEClass, ThermalEnergyDevice.class, "ThermalEnergyDevice", IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getThermalEnergyDevice_InstalledThermalPower(), this.getQuantityDouble(),
+				"installedThermalPower", "kW", 1, 1, ThermalEnergyDevice.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalEnergyDevice_ModulationRange(), ecorePackage.getEDouble(), "modulationRange", "0.5", 0,
+				1, ThermalEnergyDevice.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getThermalEnergyDevice_Fuel(), this.getFuelTypes(), "fuel", null, 1, 1,
+				ThermalEnergyDevice.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(hydrogenCompressorEClass, HydrogenCompressor.class, "HydrogenCompressor", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getHydrogenCompressor_Efficiency(), ecorePackage.getEDouble(), "efficiency", "0.68", 0, 1,
+				HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenCompressor_ThermodynamicMode(), ecorePackage.getEInt(), "thermodynamicMode", "0", 0,
+				1, HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenCompressor_MaxPressure(), this.getQuantityDouble(), "maxPressure", "50 MPa", 0, 1,
+				HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenCompressor_MaxDeliveryRate(), this.getQuantityDouble(), "maxDeliveryRate", "9 kg/h",
+				0, 1, HydrogenCompressor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(hydrogenStorageEClass, HydrogenStorage.class, "HydrogenStorage", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getHydrogenStorage_NumberOfCylinders(), ecorePackage.getEInt(), "numberOfCylinders", "1", 1, 1,
+				HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenStorage_CylinderVolume(), this.getQuantityDouble(), "cylinderVolume", "1.5 m\u00b3",
+				1, 1, HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHydrogenStorage_NominalPressure(), this.getQuantityDouble(), "nominalPressure", "25 MPa", 0,
+				1, HydrogenStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(fuelCellEClass, FuelCell.class, "FuelCell", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(energyCarrierEClass, EnergyCarrier.class, "EnergyCarrier", IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEnergyCarrier_Co2EmissionsFactor(), this.getQuantityDouble(), "co2EmissionsFactor", "t/MW*h",
+				1, 1, EnergyCarrier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyCarrier_PrimaryEnergyFactor(), ecorePackage.getEDouble(), "primaryEnergyFactor", null,
+				1, 1, EnergyCarrier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyCarrier_Name(), ecorePackage.getEString(), "name", null, 1, 1, EnergyCarrier.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyCarrier_Cost(), ecorePackage.getEDouble(), "cost", null, 0, 1, EnergyCarrier.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(fossilFuelEClass, FossilFuel.class, "FossilFuel", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFossilFuel_MethaneContent(), ecorePackage.getEDouble(), "methaneContent", null, 0, 1,
+				FossilFuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(hydrogenEClass, Hydrogen.class, "Hydrogen", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getHydrogen_ChemicalPurity(), ecorePackage.getEDouble(), "chemicalPurity", "0.99", 1, 1,
+				Hydrogen.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getHydrogen_HydrogenForHydrogenStorage(), this.getHydrogenStorage(), null,
+				"hydrogenForHydrogenStorage", null, 0, 1, Hydrogen.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(electricityEClass, Electricity.class, "Electricity", IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getElectricity_RenewableShare(), ecorePackage.getEDouble(), "renewableShare", null, 0, 1,
+				Electricity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(bioFuelEClass, BioFuel.class, "BioFuel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getBioFuel_WaterContent(), ecorePackage.getEDouble(), "waterContent", "0", 0, 1, BioFuel.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getBioFuel_AshContent(), ecorePackage.getEDouble(), "ashContent", "0", 0, 1, BioFuel.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(fuelEClass, Fuel.class, "Fuel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFuel_NetCalorificValue(), this.getQuantityDouble(), "netCalorificValue", "(kW*h)/m\u00b3", 1,
+				1, Fuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFuel_GrossCalorificValue(), this.getQuantityDouble(), "grossCalorificValue", "(kW*h)/m\u00b3",
+				1, 1, Fuel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFuel_Density(), this.getQuantityDouble(), "density", "kg/m\u00b3", 1, 1, Fuel.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFuel_FuelType(), this.getFuelTypes(), "fuelType", null, 1, 1, Fuel.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(windTurbineEClass, WindTurbine.class, "WindTurbine", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(photovoltaicModuleEClass, PhotovoltaicModule.class, "PhotovoltaicModule", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPhotovoltaicModule_CellType(), ecorePackage.getEEnumerator(), "cellType", null, 1, 1,
+				PhotovoltaicModule.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_NominalPower(), this.getQuantityDouble(), "nominalPower", "W", 1, 1,
+				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_MppVoltage(), this.getQuantityDouble(), "mppVoltage", "V", 1, 1,
+				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_MppCurrent(), this.getQuantityDouble(), "mppCurrent", "A", 1, 1,
+				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_NominalEfficiency(), ecorePackage.getEDouble(), "nominalEfficiency",
+				"0.18", 1, 1, PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPhotovoltaicModule_ModuleArea(), this.getQuantityDouble(), "moduleArea", "m\u00b2", 1, 1,
+				PhotovoltaicModule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(inverterEClass, Inverter.class, "Inverter", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(heatExchangerEClass, HeatExchanger.class, "HeatExchanger", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getHeatExchanger_HeatRecoveryEfficiency(), ecorePackage.getEDouble(), "heatRecoveryEfficiency",
+				"0.8", 0, 1, HeatExchanger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getHeatExchanger_NominalElectricityConsumption(), this.getQuantityDouble(),
+				"nominalElectricityConsumption", "W", 1, 1, HeatExchanger.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(geothermalHeatExchangerEClass, GeothermalHeatExchanger.class, "GeothermalHeatExchanger",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getGeothermalHeatExchanger_PipeDiameter(), this.getQuantityDouble(), "pipeDiameter", "1 cm", 0,
+				1, GeothermalHeatExchanger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(mediumEClass, Medium.class, "Medium", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMedium_Density(), this.getQuantityDouble(), "density", "g/cm\u00b3", 1, 1, Medium.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMedium_HeatCapacity(), this.getQuantityDouble(), "heatCapacity", "kJ/(kg*K)", 0, 1,
+				Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMedium_EvaporationTemperature(), this.getQuantityDouble(), "evaporationTemperature",
+				"\u00b0C", 0, 1, Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMedium_MeltingTemperature(), this.getQuantityDouble(), "meltingTemperature", "\u00b0C", 0, 1,
+				Medium.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMedium_Name(), ecorePackage.getEString(), "name", null, 1, 1, Medium.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(linearFunctionEClass, LinearFunction.class, "LinearFunction", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLinearFunction_Key(), ecorePackage.getEString(), "key", null, 1, 1, LinearFunction.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLinearFunction_ParameterM(), ecorePackage.getEDouble(), "parameterM", null, 1, 1,
+				LinearFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLinearFunction_ParameterC(), ecorePackage.getEDouble(), "parameterC", null, 1, 1,
+				LinearFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		EOperation op = initEOperation(getLinearFunction__Linearfunction__double(), ecorePackage.getEDouble(),
+				"linearfunction", 1, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEDouble(), "x", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(dataPointEClass, DataPoint.class, "DataPoint", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDataPoint_X(), theXMLTypePackage.getDouble(), "x", null, 0, 1, DataPoint.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDataPoint_Y(), theXMLTypePackage.getDouble(), "y", null, 0, 1, DataPoint.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(tableFunctionEClass, TableFunction.class, "TableFunction", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTableFunction_Key(), ecorePackage.getEString(), "key", null, 1, 1, TableFunction.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTableFunction_Datapoints(), this.getDataPoint(), null, "datapoints", null, 2, -1,
+				TableFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(exponentialFunctionEClass, ExponentialFunction.class, "ExponentialFunction", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getExponentialFunction_Key(), ecorePackage.getEString(), "key", null, 1, 1,
+				ExponentialFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExponentialFunction_ParameterA(), ecorePackage.getEDouble(), "parameterA", null, 1, 1,
+				ExponentialFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExponentialFunction_ParameterB(), ecorePackage.getEDouble(), "parameterB", null, 1, 1,
+				ExponentialFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		op = initEOperation(getExponentialFunction__Exponentialfunction__double(), ecorePackage.getEDouble(),
+				"exponentialfunction", 1, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEDouble(), "x", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(characteristicEClass, Characteristic.class, "Characteristic", IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(tableCharacteristicEClass, TableCharacteristic.class, "TableCharacteristic", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTableCharacteristic_Functions(), this.getTableFunction(), null, "functions", null, 1, -1,
+				TableCharacteristic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(linearCharacteristicEClass, LinearCharacteristic.class, "LinearCharacteristic", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLinearCharacteristic_Functions(), this.getLinearFunction(), null, "functions", null, 1, -1,
+				LinearCharacteristic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(exponentionalCharacteristicEClass, ExponentionalCharacteristic.class, "ExponentionalCharacteristic",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getExponentionalCharacteristic_Functions(), this.getExponentialFunction(), null, "functions",
+				null, 1, -1, ExponentionalCharacteristic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(manufacturerEClass, Manufacturer.class, "Manufacturer", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getManufacturer_ManufacturerName(), ecorePackage.getEString(), "manufacturerName", null, 1, 1,
+				Manufacturer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getManufacturer_Country(), ecorePackage.getEString(), "country", null, 0, 1, Manufacturer.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getManufacturer_OutOfBusinessSince(), ecorePackage.getEInt(), "outOfBusinessSince", null, 0, 1,
+				Manufacturer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(polynomialCharacteristicEClass, PolynomialCharacteristic.class, "PolynomialCharacteristic",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPolynomialCharacteristic_Functions(), this.getPolynomialFunction(), null, "functions", null,
+				1, -1, PolynomialCharacteristic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(polynomialFunctionEClass, PolynomialFunction.class, "PolynomialFunction", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPolynomialFunction_Key(), ecorePackage.getEString(), "key", null, 1, 1,
+				PolynomialFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPolynomialFunction_ParameterA(), ecorePackage.getEDouble(), "parameterA", null, 1, 1,
+				PolynomialFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPolynomialFunction_ParameterB(), ecorePackage.getEDouble(), "parameterB", null, 1, 1,
+				PolynomialFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPolynomialFunction_ParameterC(), ecorePackage.getEDouble(), "parameterC", null, 1, 1,
+				PolynomialFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		op = initEOperation(getPolynomialFunction__Polynomialfunction__double(), ecorePackage.getEDouble(),
+				"polynomialfunction", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEDouble(), "x", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(materialEClass, Material.class, "Material", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMaterial_ThermalConductivity(), this.getQuantityDouble(), "thermalConductivity", " W/(m*K)",
+				0, 1, Material.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMaterial_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);
+
+		initEClass(energyComponentsCostCatalogEClass, EnergyComponentsCostCatalog.class, "EnergyComponentsCostCatalog",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEnergyComponentsCostCatalog_Author(), ecorePackage.getEString(), "author", null, 0, 1,
+				EnergyComponentsCostCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyComponentsCostCatalog_RevisionYear(), ecorePackage.getEInt(), "revisionYear", null, 1,
+				1, EnergyComponentsCostCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCostCatalog_CostCategories(), this.getCost(), null, "costCategories", null, 0,
+				-1, EnergyComponentsCostCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyComponentsCostCatalog_PersonnelCost(), ecorePackage.getEDouble(), "personnelCost",
+				"150 ", 0, 1, EnergyComponentsCostCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(costEClass, Cost.class, "Cost", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCost_ComponentName(), theXMLTypePackage.getString(), "componentName", null, 1, 1, Cost.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCost_Description(), ecorePackage.getEString(), "description", null, 0, 1, Cost.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCost_HeatSource(), this.getTypeOfHeatSource(), "heatSource", null, 0, 1, Cost.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCost_Datasource(), ecorePackage.getEString(), "datasource", null, 0, 1, Cost.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCost_InvestmentCost(), this.getCharacteristic(), null, "investmentCost", null, 1, 1,
+				Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCost_OtherInvestmentCost(), ecorePackage.getEDouble(), "otherInvestmentCost", "0", 0, 1,
+				Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getCost_PersonnelHours(), this.getQuantityDouble(), "personnelHours", "10 h", 0, 1, Cost.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCost_PersonnelCostShare(), ecorePackage.getEDouble(), "personnelCostShare", null, 0, 1,
+				Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getCost_AdministrationAndOtherCostShare(), ecorePackage.getEDouble(),
+				"administrationAndOtherCostShare", "0.015", 0, 1, Cost.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCost_MaintenanceCostShare(), ecorePackage.getEDouble(), "maintenanceCostShare", "0.015", 0, 1,
+				Cost.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(powerCharacteristicEClass, PowerCharacteristic.class, "PowerCharacteristic", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPowerCharacteristic_Functions(), this.getPowerFunction(), null, "functions", null, 1, -1,
+				PowerCharacteristic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(powerFunctionEClass, PowerFunction.class, "PowerFunction", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPowerFunction_Key(), ecorePackage.getEString(), "key", null, 1, 1, PowerFunction.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPowerFunction_ParameterA(), ecorePackage.getEDouble(), "parameterA", null, 1, 1,
+				PowerFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPowerFunction_ParameterB(), ecorePackage.getEDouble(), "parameterB", null, 1, 1,
+				PowerFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		op = initEOperation(getPowerFunction__Powerfunction__double(), ecorePackage.getEDouble(), "powerfunction", 0, 1,
+				IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEDouble(), "x", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(heatSourcesEEnum, HeatSources.class, "HeatSources");
+		addEEnumLiteral(heatSourcesEEnum, HeatSources.AIR);
+		addEEnumLiteral(heatSourcesEEnum, HeatSources.GROUND);
+		addEEnumLiteral(heatSourcesEEnum, HeatSources.WATER);
+
+		initEEnum(collectorTypesEEnum, CollectorTypes.class, "CollectorTypes");
+		addEEnumLiteral(collectorTypesEEnum, CollectorTypes.FLAT_PLANE_COLLECTOR);
+		addEEnumLiteral(collectorTypesEEnum, CollectorTypes.EVACUATED_TUBE_COLLECTOR);
+
+		initEEnum(electricalStorageTypesEEnum, ElectricalStorageTypes.class, "ElectricalStorageTypes");
+		addEEnumLiteral(electricalStorageTypesEEnum, ElectricalStorageTypes.LITHIUM_ION);
+		addEEnumLiteral(electricalStorageTypesEEnum, ElectricalStorageTypes.LEAD_ACID);
+		addEEnumLiteral(electricalStorageTypesEEnum, ElectricalStorageTypes.NI_MH);
+		addEEnumLiteral(electricalStorageTypesEEnum, ElectricalStorageTypes.LITHIUM_POLYMER);
+
+		initEEnum(boilerTypesEEnum, BoilerTypes.class, "BoilerTypes");
+		addEEnumLiteral(boilerTypesEEnum, BoilerTypes.CONDENSING_BOILER);
+		addEEnumLiteral(boilerTypesEEnum, BoilerTypes.LOWTEMPERATURE_BOILER);
+
+		initEEnum(thermalStorageTypesEEnum, ThermalStorageTypes.class, "ThermalStorageTypes");
+		addEEnumLiteral(thermalStorageTypesEEnum, ThermalStorageTypes.SENSIBLE);
+		addEEnumLiteral(thermalStorageTypesEEnum, ThermalStorageTypes.LATENT);
+
+		initEEnum(cellTypesElectrolyzerEEnum, cellTypesElectrolyzer.class, "cellTypesElectrolyzer");
+		addEEnumLiteral(cellTypesElectrolyzerEEnum, cellTypesElectrolyzer.PEM);
+
+		initEEnum(fuelTypesEEnum, FuelTypes.class, "FuelTypes");
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.NATURAL_GAS);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.OIL);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.DIESEL);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.BIO_GAS);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.SYNTHETIC_GAS);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.WOOD_PELLETS);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.WOOD_CHIPS);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.SEWAGE_GAS);
+		addEEnumLiteral(fuelTypesEEnum, FuelTypes.ELECTRICITY);
+
+		initEEnum(typeOfHeatSourceEEnum, TypeOfHeatSource.class, "TypeOfHeatSource");
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.NATURAL_GAS);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.BIOGAS);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.OIL);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.DIESEL);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.SYNTHETIC_GAS);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.WOOD_PELLETS);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.WOOD_CHIPS);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.SEWAGE_GAS);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.LNG);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.CNG);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.WATER);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.AIR);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.SOIL);
+		addEEnumLiteral(typeOfHeatSourceEEnum, TypeOfHeatSource.NONE);
+
+		// Initialize data types
+		initEDataType(quantityDoubleEDataType, NullableQuantity.class, "QuantityDouble", IS_SERIALIZABLE,
+				!IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(quantityLongEDataType, NullableQuantity.class, "QuantityLong", IS_SERIALIZABLE,
+				!IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //EnCompPackageImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyCarrierImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyCarrierImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a96d30e70a0a5bab2aec8ecebec8d478e6512c1
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyCarrierImpl.java
@@ -0,0 +1,341 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyCarrier;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+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>Energy Carrier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl#getCo2EmissionsFactor <em>Co2 Emissions Factor</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl#getPrimaryEnergyFactor <em>Primary Energy Factor</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl#getName <em>Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyCarrierImpl#getCost <em>Cost</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class EnergyCarrierImpl extends MinimalEObjectImpl.Container implements EnergyCarrier {
+	/**
+	 * The default value of the '{@link #getCo2EmissionsFactor() <em>Co2 Emissions Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCo2EmissionsFactor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity CO2_EMISSIONS_FACTOR_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "t/MW*h");
+
+	/**
+	 * The cached value of the '{@link #getCo2EmissionsFactor() <em>Co2 Emissions Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCo2EmissionsFactor()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity co2EmissionsFactor = CO2_EMISSIONS_FACTOR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPrimaryEnergyFactor() <em>Primary Energy Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPrimaryEnergyFactor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PRIMARY_ENERGY_FACTOR_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getPrimaryEnergyFactor() <em>Primary Energy Factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPrimaryEnergyFactor()
+	 * @generated
+	 * @ordered
+	 */
+	protected double primaryEnergyFactor = PRIMARY_ENERGY_FACTOR_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 default value of the '{@link #getCost() <em>Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double COST_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getCost() <em>Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected double cost = COST_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyCarrierImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.ENERGY_CARRIER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getCo2EmissionsFactor() {
+		return co2EmissionsFactor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCo2EmissionsFactor(NullableQuantity newCo2EmissionsFactor) {
+		NullableQuantity oldCo2EmissionsFactor = co2EmissionsFactor;
+		co2EmissionsFactor = newCo2EmissionsFactor;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_CARRIER__CO2_EMISSIONS_FACTOR,
+					oldCo2EmissionsFactor, co2EmissionsFactor));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getPrimaryEnergyFactor() {
+		return primaryEnergyFactor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPrimaryEnergyFactor(double newPrimaryEnergyFactor) {
+		double oldPrimaryEnergyFactor = primaryEnergyFactor;
+		primaryEnergyFactor = newPrimaryEnergyFactor;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR,
+					oldPrimaryEnergyFactor, primaryEnergyFactor));
+	}
+
+	/**
+	 * <!-- 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, EnCompPackage.ENERGY_CARRIER__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getCost() {
+		return cost;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCost(double newCost) {
+		double oldCost = cost;
+		cost = newCost;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_CARRIER__COST, oldCost, cost));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_CARRIER__CO2_EMISSIONS_FACTOR:
+			return getCo2EmissionsFactor();
+		case EnCompPackage.ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR:
+			return getPrimaryEnergyFactor();
+		case EnCompPackage.ENERGY_CARRIER__NAME:
+			return getName();
+		case EnCompPackage.ENERGY_CARRIER__COST:
+			return getCost();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_CARRIER__CO2_EMISSIONS_FACTOR:
+			setCo2EmissionsFactor((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR:
+			setPrimaryEnergyFactor((Double) newValue);
+			return;
+		case EnCompPackage.ENERGY_CARRIER__NAME:
+			setName((String) newValue);
+			return;
+		case EnCompPackage.ENERGY_CARRIER__COST:
+			setCost((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_CARRIER__CO2_EMISSIONS_FACTOR:
+			setCo2EmissionsFactor(CO2_EMISSIONS_FACTOR_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR:
+			setPrimaryEnergyFactor(PRIMARY_ENERGY_FACTOR_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_CARRIER__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_CARRIER__COST:
+			setCost(COST_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_CARRIER__CO2_EMISSIONS_FACTOR:
+			return CO2_EMISSIONS_FACTOR_EDEFAULT == null ? co2EmissionsFactor != null
+					: !CO2_EMISSIONS_FACTOR_EDEFAULT.equals(co2EmissionsFactor);
+		case EnCompPackage.ENERGY_CARRIER__PRIMARY_ENERGY_FACTOR:
+			return primaryEnergyFactor != PRIMARY_ENERGY_FACTOR_EDEFAULT;
+		case EnCompPackage.ENERGY_CARRIER__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case EnCompPackage.ENERGY_CARRIER__COST:
+			return cost != COST_EDEFAULT;
+		}
+		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(" (co2EmissionsFactor: ");
+		result.append(co2EmissionsFactor);
+		result.append(", primaryEnergyFactor: ");
+		result.append(primaryEnergyFactor);
+		result.append(", name: ");
+		result.append(name);
+		result.append(", cost: ");
+		result.append(cost);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EnergyCarrierImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..776c1d18b8c1619c5752ae72d3330697d85c7428
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentImpl.java
@@ -0,0 +1,405 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyComponent;
+
+import de.hftstuttgart.energycomponents.Manufacturer;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Energy Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentImpl#getModelName <em>Model Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentImpl#getRevisionYear <em>Revision Year</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentImpl#getTechnicalLifetime <em>Technical Lifetime</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentImpl#getManufacturer <em>Manufacturer</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class EnergyComponentImpl extends MinimalEObjectImpl.Container implements EnergyComponent {
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getModelName() <em>Model Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModelName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MODEL_NAME_EDEFAULT = "model xyz";
+
+	/**
+	 * The cached value of the '{@link #getModelName() <em>Model Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModelName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String modelName = MODEL_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getRevisionYear() <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRevisionYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int REVISION_YEAR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getRevisionYear() <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRevisionYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected int revisionYear = REVISION_YEAR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTechnicalLifetime() <em>Technical Lifetime</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTechnicalLifetime()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double TECHNICAL_LIFETIME_EDEFAULT = 30.0;
+
+	/**
+	 * The cached value of the '{@link #getTechnicalLifetime() <em>Technical Lifetime</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTechnicalLifetime()
+	 * @generated
+	 * @ordered
+	 */
+	protected double technicalLifetime = TECHNICAL_LIFETIME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getManufacturer() <em>Manufacturer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getManufacturer()
+	 * @generated
+	 * @ordered
+	 */
+	protected Manufacturer manufacturer;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.ENERGY_COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_COMPONENT__DESCRIPTION,
+					oldDescription, description));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getModelName() {
+		return modelName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setModelName(String newModelName) {
+		String oldModelName = modelName;
+		modelName = newModelName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_COMPONENT__MODEL_NAME,
+					oldModelName, modelName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getRevisionYear() {
+		return revisionYear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRevisionYear(int newRevisionYear) {
+		int oldRevisionYear = revisionYear;
+		revisionYear = newRevisionYear;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_COMPONENT__REVISION_YEAR,
+					oldRevisionYear, revisionYear));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getTechnicalLifetime() {
+		return technicalLifetime;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setTechnicalLifetime(double newTechnicalLifetime) {
+		double oldTechnicalLifetime = technicalLifetime;
+		technicalLifetime = newTechnicalLifetime;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_COMPONENT__TECHNICAL_LIFETIME,
+					oldTechnicalLifetime, technicalLifetime));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Manufacturer getManufacturer() {
+		if (manufacturer != null && manufacturer.eIsProxy()) {
+			InternalEObject oldManufacturer = (InternalEObject) manufacturer;
+			manufacturer = (Manufacturer) eResolveProxy(oldManufacturer);
+			if (manufacturer != oldManufacturer) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							EnCompPackage.ENERGY_COMPONENT__MANUFACTURER, oldManufacturer, manufacturer));
+			}
+		}
+		return manufacturer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Manufacturer basicGetManufacturer() {
+		return manufacturer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setManufacturer(Manufacturer newManufacturer) {
+		Manufacturer oldManufacturer = manufacturer;
+		manufacturer = newManufacturer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_COMPONENT__MANUFACTURER,
+					oldManufacturer, manufacturer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENT__DESCRIPTION:
+			return getDescription();
+		case EnCompPackage.ENERGY_COMPONENT__MODEL_NAME:
+			return getModelName();
+		case EnCompPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			return getRevisionYear();
+		case EnCompPackage.ENERGY_COMPONENT__TECHNICAL_LIFETIME:
+			return getTechnicalLifetime();
+		case EnCompPackage.ENERGY_COMPONENT__MANUFACTURER:
+			if (resolve)
+				return getManufacturer();
+			return basicGetManufacturer();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENT__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__MODEL_NAME:
+			setModelName((String) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			setRevisionYear((Integer) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__TECHNICAL_LIFETIME:
+			setTechnicalLifetime((Double) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__MANUFACTURER:
+			setManufacturer((Manufacturer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENT__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__MODEL_NAME:
+			setModelName(MODEL_NAME_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			setRevisionYear(REVISION_YEAR_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__TECHNICAL_LIFETIME:
+			setTechnicalLifetime(TECHNICAL_LIFETIME_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_COMPONENT__MANUFACTURER:
+			setManufacturer((Manufacturer) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENT__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		case EnCompPackage.ENERGY_COMPONENT__MODEL_NAME:
+			return MODEL_NAME_EDEFAULT == null ? modelName != null : !MODEL_NAME_EDEFAULT.equals(modelName);
+		case EnCompPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			return revisionYear != REVISION_YEAR_EDEFAULT;
+		case EnCompPackage.ENERGY_COMPONENT__TECHNICAL_LIFETIME:
+			return technicalLifetime != TECHNICAL_LIFETIME_EDEFAULT;
+		case EnCompPackage.ENERGY_COMPONENT__MANUFACTURER:
+			return manufacturer != null;
+		}
+		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(" (description: ");
+		result.append(description);
+		result.append(", modelName: ");
+		result.append(modelName);
+		result.append(", revisionYear: ");
+		result.append(revisionYear);
+		result.append(", technicalLifetime: ");
+		result.append(technicalLifetime);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EnergyComponentImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCatalogImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCatalogImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..beaa3035112913a53e455b1326336f683f963319
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCatalogImpl.java
@@ -0,0 +1,1090 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.BioFuel;
+import de.hftstuttgart.energycomponents.Boiler;
+import de.hftstuttgart.energycomponents.CombinedHeatPower;
+import de.hftstuttgart.energycomponents.ElectricalStorage;
+import de.hftstuttgart.energycomponents.Electrolyzer;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyCarrier;
+import de.hftstuttgart.energycomponents.EnergyComponentsCatalog;
+import de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog;
+import de.hftstuttgart.energycomponents.FossilFuel;
+import de.hftstuttgart.energycomponents.FuelCell;
+import de.hftstuttgart.energycomponents.GeothermalHeatExchanger;
+import de.hftstuttgart.energycomponents.HeatExchanger;
+import de.hftstuttgart.energycomponents.HeatPump;
+import de.hftstuttgart.energycomponents.HydrogenCompressor;
+import de.hftstuttgart.energycomponents.HydrogenStorage;
+import de.hftstuttgart.energycomponents.Inverter;
+import de.hftstuttgart.energycomponents.Manufacturer;
+import de.hftstuttgart.energycomponents.Material;
+import de.hftstuttgart.energycomponents.Medium;
+import de.hftstuttgart.energycomponents.PhotovoltaicModule;
+import de.hftstuttgart.energycomponents.SolarThermalCollector;
+import de.hftstuttgart.energycomponents.ThermalStorage;
+import de.hftstuttgart.energycomponents.WindTurbine;
+
+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>Energy Components Catalog</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getAuthor <em>Author</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getBioFuels <em>Bio Fuels</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getMedia <em>Media</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getCombinedHeatPowerUtilities <em>Combined Heat Power Utilities</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getBoilers <em>Boilers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getPhotovoltaicModules <em>Photovoltaic Modules</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getSolarThermalCollectors <em>Solar Thermal Collectors</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getWindTurbines <em>Wind Turbines</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getGeothermalHeatExchangers <em>Geothermal Heat Exchangers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getHeatPumps <em>Heat Pumps</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getInverters <em>Inverters</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getHeatExchangers <em>Heat Exchangers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getElectrolyzers <em>Electrolyzers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getHydrogenCompressors <em>Hydrogen Compressors</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getFuelCells <em>Fuel Cells</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getThermalStorages <em>Thermal Storages</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getPowerStorages <em>Power Storages</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getHydrogenStorages <em>Hydrogen Storages</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getFossilFuels <em>Fossil Fuels</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getManufacturers <em>Manufacturers</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getMaterials <em>Materials</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getEnergycomponentscostcatalog <em>Energycomponentscostcatalog</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCatalogImpl#getEnergycarriers <em>Energycarriers</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EnergyComponentsCatalogImpl extends MinimalEObjectImpl.Container implements EnergyComponentsCatalog {
+	/**
+	 * The default value of the '{@link #getAuthor() <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAuthor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String AUTHOR_EDEFAULT = "HFT_Stuttgart";
+
+	/**
+	 * The cached value of the '{@link #getAuthor() <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAuthor()
+	 * @generated
+	 * @ordered
+	 */
+	protected String author = AUTHOR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBioFuels() <em>Bio Fuels</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBioFuels()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<BioFuel> bioFuels;
+
+	/**
+	 * The cached value of the '{@link #getMedia() <em>Media</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMedia()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Medium> media;
+
+	/**
+	 * The cached value of the '{@link #getCombinedHeatPowerUtilities() <em>Combined Heat Power Utilities</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCombinedHeatPowerUtilities()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CombinedHeatPower> combinedHeatPowerUtilities;
+
+	/**
+	 * The cached value of the '{@link #getBoilers() <em>Boilers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBoilers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Boiler> boilers;
+
+	/**
+	 * The cached value of the '{@link #getPhotovoltaicModules() <em>Photovoltaic Modules</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPhotovoltaicModules()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PhotovoltaicModule> photovoltaicModules;
+
+	/**
+	 * The cached value of the '{@link #getSolarThermalCollectors() <em>Solar Thermal Collectors</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSolarThermalCollectors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SolarThermalCollector> solarThermalCollectors;
+
+	/**
+	 * The cached value of the '{@link #getWindTurbines() <em>Wind Turbines</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWindTurbines()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<WindTurbine> windTurbines;
+
+	/**
+	 * The cached value of the '{@link #getGeothermalHeatExchangers() <em>Geothermal Heat Exchangers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGeothermalHeatExchangers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<GeothermalHeatExchanger> geothermalHeatExchangers;
+
+	/**
+	 * The cached value of the '{@link #getHeatPumps() <em>Heat Pumps</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatPumps()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<HeatPump> heatPumps;
+
+	/**
+	 * The cached value of the '{@link #getInverters() <em>Inverters</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInverters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Inverter> inverters;
+
+	/**
+	 * The cached value of the '{@link #getHeatExchangers() <em>Heat Exchangers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatExchangers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<HeatExchanger> heatExchangers;
+
+	/**
+	 * The cached value of the '{@link #getElectrolyzers() <em>Electrolyzers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElectrolyzers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Electrolyzer> electrolyzers;
+
+	/**
+	 * The cached value of the '{@link #getHydrogenCompressors() <em>Hydrogen Compressors</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHydrogenCompressors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<HydrogenCompressor> hydrogenCompressors;
+
+	/**
+	 * The cached value of the '{@link #getFuelCells() <em>Fuel Cells</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFuelCells()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FuelCell> fuelCells;
+
+	/**
+	 * The cached value of the '{@link #getThermalStorages() <em>Thermal Storages</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalStorages()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ThermalStorage> thermalStorages;
+
+	/**
+	 * The cached value of the '{@link #getPowerStorages() <em>Power Storages</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPowerStorages()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ElectricalStorage> powerStorages;
+
+	/**
+	 * The cached value of the '{@link #getHydrogenStorages() <em>Hydrogen Storages</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHydrogenStorages()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<HydrogenStorage> hydrogenStorages;
+
+	/**
+	 * The cached value of the '{@link #getFossilFuels() <em>Fossil Fuels</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFossilFuels()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FossilFuel> fossilFuels;
+
+	/**
+	 * The cached value of the '{@link #getManufacturers() <em>Manufacturers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getManufacturers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Manufacturer> manufacturers;
+
+	/**
+	 * The cached value of the '{@link #getMaterials() <em>Materials</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaterials()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Material> materials;
+
+	/**
+	 * The cached value of the '{@link #getEnergycomponentscostcatalog() <em>Energycomponentscostcatalog</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEnergycomponentscostcatalog()
+	 * @generated
+	 * @ordered
+	 */
+	protected EnergyComponentsCostCatalog energycomponentscostcatalog;
+
+	/**
+	 * The cached value of the '{@link #getEnergycarriers() <em>Energycarriers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEnergycarriers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<EnergyCarrier> energycarriers;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentsCatalogImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.ENERGY_COMPONENTS_CATALOG;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getAuthor() {
+		return author;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAuthor(String newAuthor) {
+		String oldAuthor = author;
+		author = newAuthor;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR,
+					oldAuthor, author));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<BioFuel> getBioFuels() {
+		if (bioFuels == null) {
+			bioFuels = new EObjectContainmentEList<BioFuel>(BioFuel.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__BIO_FUELS);
+		}
+		return bioFuels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Medium> getMedia() {
+		if (media == null) {
+			media = new EObjectContainmentEList<Medium>(Medium.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__MEDIA);
+		}
+		return media;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<CombinedHeatPower> getCombinedHeatPowerUtilities() {
+		if (combinedHeatPowerUtilities == null) {
+			combinedHeatPowerUtilities = new EObjectContainmentEList<CombinedHeatPower>(CombinedHeatPower.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES);
+		}
+		return combinedHeatPowerUtilities;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Boiler> getBoilers() {
+		if (boilers == null) {
+			boilers = new EObjectContainmentEList<Boiler>(Boiler.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__BOILERS);
+		}
+		return boilers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<PhotovoltaicModule> getPhotovoltaicModules() {
+		if (photovoltaicModules == null) {
+			photovoltaicModules = new EObjectContainmentEList<PhotovoltaicModule>(PhotovoltaicModule.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES);
+		}
+		return photovoltaicModules;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<SolarThermalCollector> getSolarThermalCollectors() {
+		if (solarThermalCollectors == null) {
+			solarThermalCollectors = new EObjectContainmentEList<SolarThermalCollector>(SolarThermalCollector.class,
+					this, EnCompPackage.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS);
+		}
+		return solarThermalCollectors;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<WindTurbine> getWindTurbines() {
+		if (windTurbines == null) {
+			windTurbines = new EObjectContainmentEList<WindTurbine>(WindTurbine.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES);
+		}
+		return windTurbines;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<GeothermalHeatExchanger> getGeothermalHeatExchangers() {
+		if (geothermalHeatExchangers == null) {
+			geothermalHeatExchangers = new EObjectContainmentEList<GeothermalHeatExchanger>(
+					GeothermalHeatExchanger.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS);
+		}
+		return geothermalHeatExchangers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<HeatPump> getHeatPumps() {
+		if (heatPumps == null) {
+			heatPumps = new EObjectContainmentEList<HeatPump>(HeatPump.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS);
+		}
+		return heatPumps;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Inverter> getInverters() {
+		if (inverters == null) {
+			inverters = new EObjectContainmentEList<Inverter>(Inverter.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS);
+		}
+		return inverters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<HeatExchanger> getHeatExchangers() {
+		if (heatExchangers == null) {
+			heatExchangers = new EObjectContainmentEList<HeatExchanger>(HeatExchanger.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS);
+		}
+		return heatExchangers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Electrolyzer> getElectrolyzers() {
+		if (electrolyzers == null) {
+			electrolyzers = new EObjectContainmentEList<Electrolyzer>(Electrolyzer.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS);
+		}
+		return electrolyzers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<HydrogenCompressor> getHydrogenCompressors() {
+		if (hydrogenCompressors == null) {
+			hydrogenCompressors = new EObjectContainmentEList<HydrogenCompressor>(HydrogenCompressor.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS);
+		}
+		return hydrogenCompressors;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<FuelCell> getFuelCells() {
+		if (fuelCells == null) {
+			fuelCells = new EObjectContainmentEList<FuelCell>(FuelCell.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS);
+		}
+		return fuelCells;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<ThermalStorage> getThermalStorages() {
+		if (thermalStorages == null) {
+			thermalStorages = new EObjectContainmentEList<ThermalStorage>(ThermalStorage.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES);
+		}
+		return thermalStorages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<ElectricalStorage> getPowerStorages() {
+		if (powerStorages == null) {
+			powerStorages = new EObjectContainmentEList<ElectricalStorage>(ElectricalStorage.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES);
+		}
+		return powerStorages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<HydrogenStorage> getHydrogenStorages() {
+		if (hydrogenStorages == null) {
+			hydrogenStorages = new EObjectContainmentEList<HydrogenStorage>(HydrogenStorage.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES);
+		}
+		return hydrogenStorages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<FossilFuel> getFossilFuels() {
+		if (fossilFuels == null) {
+			fossilFuels = new EObjectContainmentEList<FossilFuel>(FossilFuel.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS);
+		}
+		return fossilFuels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Manufacturer> getManufacturers() {
+		if (manufacturers == null) {
+			manufacturers = new EObjectContainmentEList<Manufacturer>(Manufacturer.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS);
+		}
+		return manufacturers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Material> getMaterials() {
+		if (materials == null) {
+			materials = new EObjectContainmentEList<Material>(Material.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__MATERIALS);
+		}
+		return materials;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EnergyComponentsCostCatalog getEnergycomponentscostcatalog() {
+		return energycomponentscostcatalog;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetEnergycomponentscostcatalog(
+			EnergyComponentsCostCatalog newEnergycomponentscostcatalog, NotificationChain msgs) {
+		EnergyComponentsCostCatalog oldEnergycomponentscostcatalog = energycomponentscostcatalog;
+		energycomponentscostcatalog = newEnergycomponentscostcatalog;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG,
+					oldEnergycomponentscostcatalog, newEnergycomponentscostcatalog);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEnergycomponentscostcatalog(EnergyComponentsCostCatalog newEnergycomponentscostcatalog) {
+		if (newEnergycomponentscostcatalog != energycomponentscostcatalog) {
+			NotificationChain msgs = null;
+			if (energycomponentscostcatalog != null)
+				msgs = ((InternalEObject) energycomponentscostcatalog).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG,
+						null, msgs);
+			if (newEnergycomponentscostcatalog != null)
+				msgs = ((InternalEObject) newEnergycomponentscostcatalog).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG,
+						null, msgs);
+			msgs = basicSetEnergycomponentscostcatalog(newEnergycomponentscostcatalog, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG,
+					newEnergycomponentscostcatalog, newEnergycomponentscostcatalog));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<EnergyCarrier> getEnergycarriers() {
+		if (energycarriers == null) {
+			energycarriers = new EObjectContainmentEList<EnergyCarrier>(EnergyCarrier.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS);
+		}
+		return energycarriers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BIO_FUELS:
+			return ((InternalEList<?>) getBioFuels()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MEDIA:
+			return ((InternalEList<?>) getMedia()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES:
+			return ((InternalEList<?>) getCombinedHeatPowerUtilities()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			return ((InternalEList<?>) getBoilers()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES:
+			return ((InternalEList<?>) getPhotovoltaicModules()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS:
+			return ((InternalEList<?>) getSolarThermalCollectors()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES:
+			return ((InternalEList<?>) getWindTurbines()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS:
+			return ((InternalEList<?>) getGeothermalHeatExchangers()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS:
+			return ((InternalEList<?>) getHeatPumps()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			return ((InternalEList<?>) getInverters()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS:
+			return ((InternalEList<?>) getHeatExchangers()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS:
+			return ((InternalEList<?>) getElectrolyzers()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS:
+			return ((InternalEList<?>) getHydrogenCompressors()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS:
+			return ((InternalEList<?>) getFuelCells()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES:
+			return ((InternalEList<?>) getThermalStorages()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES:
+			return ((InternalEList<?>) getPowerStorages()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES:
+			return ((InternalEList<?>) getHydrogenStorages()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS:
+			return ((InternalEList<?>) getFossilFuels()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			return ((InternalEList<?>) getManufacturers()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MATERIALS:
+			return ((InternalEList<?>) getMaterials()).basicRemove(otherEnd, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG:
+			return basicSetEnergycomponentscostcatalog(null, msgs);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS:
+			return ((InternalEList<?>) getEnergycarriers()).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 EnCompPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			return getAuthor();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BIO_FUELS:
+			return getBioFuels();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MEDIA:
+			return getMedia();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES:
+			return getCombinedHeatPowerUtilities();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			return getBoilers();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES:
+			return getPhotovoltaicModules();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS:
+			return getSolarThermalCollectors();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES:
+			return getWindTurbines();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS:
+			return getGeothermalHeatExchangers();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS:
+			return getHeatPumps();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			return getInverters();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS:
+			return getHeatExchangers();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS:
+			return getElectrolyzers();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS:
+			return getHydrogenCompressors();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS:
+			return getFuelCells();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES:
+			return getThermalStorages();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES:
+			return getPowerStorages();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES:
+			return getHydrogenStorages();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS:
+			return getFossilFuels();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			return getManufacturers();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MATERIALS:
+			return getMaterials();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG:
+			return getEnergycomponentscostcatalog();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS:
+			return getEnergycarriers();
+		}
+		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 EnCompPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			setAuthor((String) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BIO_FUELS:
+			getBioFuels().clear();
+			getBioFuels().addAll((Collection<? extends BioFuel>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MEDIA:
+			getMedia().clear();
+			getMedia().addAll((Collection<? extends Medium>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES:
+			getCombinedHeatPowerUtilities().clear();
+			getCombinedHeatPowerUtilities().addAll((Collection<? extends CombinedHeatPower>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			getBoilers().clear();
+			getBoilers().addAll((Collection<? extends Boiler>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES:
+			getPhotovoltaicModules().clear();
+			getPhotovoltaicModules().addAll((Collection<? extends PhotovoltaicModule>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS:
+			getSolarThermalCollectors().clear();
+			getSolarThermalCollectors().addAll((Collection<? extends SolarThermalCollector>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES:
+			getWindTurbines().clear();
+			getWindTurbines().addAll((Collection<? extends WindTurbine>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS:
+			getGeothermalHeatExchangers().clear();
+			getGeothermalHeatExchangers().addAll((Collection<? extends GeothermalHeatExchanger>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS:
+			getHeatPumps().clear();
+			getHeatPumps().addAll((Collection<? extends HeatPump>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			getInverters().clear();
+			getInverters().addAll((Collection<? extends Inverter>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS:
+			getHeatExchangers().clear();
+			getHeatExchangers().addAll((Collection<? extends HeatExchanger>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS:
+			getElectrolyzers().clear();
+			getElectrolyzers().addAll((Collection<? extends Electrolyzer>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS:
+			getHydrogenCompressors().clear();
+			getHydrogenCompressors().addAll((Collection<? extends HydrogenCompressor>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS:
+			getFuelCells().clear();
+			getFuelCells().addAll((Collection<? extends FuelCell>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES:
+			getThermalStorages().clear();
+			getThermalStorages().addAll((Collection<? extends ThermalStorage>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES:
+			getPowerStorages().clear();
+			getPowerStorages().addAll((Collection<? extends ElectricalStorage>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES:
+			getHydrogenStorages().clear();
+			getHydrogenStorages().addAll((Collection<? extends HydrogenStorage>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS:
+			getFossilFuels().clear();
+			getFossilFuels().addAll((Collection<? extends FossilFuel>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			getManufacturers().clear();
+			getManufacturers().addAll((Collection<? extends Manufacturer>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MATERIALS:
+			getMaterials().clear();
+			getMaterials().addAll((Collection<? extends Material>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG:
+			setEnergycomponentscostcatalog((EnergyComponentsCostCatalog) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS:
+			getEnergycarriers().clear();
+			getEnergycarriers().addAll((Collection<? extends EnergyCarrier>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			setAuthor(AUTHOR_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BIO_FUELS:
+			getBioFuels().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MEDIA:
+			getMedia().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES:
+			getCombinedHeatPowerUtilities().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			getBoilers().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES:
+			getPhotovoltaicModules().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS:
+			getSolarThermalCollectors().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES:
+			getWindTurbines().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS:
+			getGeothermalHeatExchangers().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS:
+			getHeatPumps().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			getInverters().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS:
+			getHeatExchangers().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS:
+			getElectrolyzers().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS:
+			getHydrogenCompressors().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS:
+			getFuelCells().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES:
+			getThermalStorages().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES:
+			getPowerStorages().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES:
+			getHydrogenStorages().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS:
+			getFossilFuels().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			getManufacturers().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MATERIALS:
+			getMaterials().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG:
+			setEnergycomponentscostcatalog((EnergyComponentsCostCatalog) null);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS:
+			getEnergycarriers().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			return AUTHOR_EDEFAULT == null ? author != null : !AUTHOR_EDEFAULT.equals(author);
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BIO_FUELS:
+			return bioFuels != null && !bioFuels.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MEDIA:
+			return media != null && !media.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__COMBINED_HEAT_POWER_UTILITIES:
+			return combinedHeatPowerUtilities != null && !combinedHeatPowerUtilities.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			return boilers != null && !boilers.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__PHOTOVOLTAIC_MODULES:
+			return photovoltaicModules != null && !photovoltaicModules.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__SOLAR_THERMAL_COLLECTORS:
+			return solarThermalCollectors != null && !solarThermalCollectors.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__WIND_TURBINES:
+			return windTurbines != null && !windTurbines.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__GEOTHERMAL_HEAT_EXCHANGERS:
+			return geothermalHeatExchangers != null && !geothermalHeatExchangers.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_PUMPS:
+			return heatPumps != null && !heatPumps.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			return inverters != null && !inverters.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HEAT_EXCHANGERS:
+			return heatExchangers != null && !heatExchangers.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ELECTROLYZERS:
+			return electrolyzers != null && !electrolyzers.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_COMPRESSORS:
+			return hydrogenCompressors != null && !hydrogenCompressors.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FUEL_CELLS:
+			return fuelCells != null && !fuelCells.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__THERMAL_STORAGES:
+			return thermalStorages != null && !thermalStorages.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__POWER_STORAGES:
+			return powerStorages != null && !powerStorages.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__HYDROGEN_STORAGES:
+			return hydrogenStorages != null && !hydrogenStorages.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__FOSSIL_FUELS:
+			return fossilFuels != null && !fossilFuels.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			return manufacturers != null && !manufacturers.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__MATERIALS:
+			return materials != null && !materials.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCOMPONENTSCOSTCATALOG:
+			return energycomponentscostcatalog != null;
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG__ENERGYCARRIERS:
+			return energycarriers != null && !energycarriers.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(" (author: ");
+		result.append(author);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EnergyComponentsCatalogImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCostCatalogImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCostCatalogImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d6625b63e11e2d405442bf3177c4ab9ba2f8abd
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/EnergyComponentsCostCatalogImpl.java
@@ -0,0 +1,341 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Cost;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+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>Energy Components Cost Catalog</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl#getAuthor <em>Author</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl#getRevisionYear <em>Revision Year</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl#getCostCategories <em>Cost Categories</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.EnergyComponentsCostCatalogImpl#getPersonnelCost <em>Personnel Cost</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EnergyComponentsCostCatalogImpl extends MinimalEObjectImpl.Container
+		implements EnergyComponentsCostCatalog {
+	/**
+	 * The default value of the '{@link #getAuthor() <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAuthor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String AUTHOR_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAuthor() <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAuthor()
+	 * @generated
+	 * @ordered
+	 */
+	protected String author = AUTHOR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getRevisionYear() <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRevisionYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int REVISION_YEAR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getRevisionYear() <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRevisionYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected int revisionYear = REVISION_YEAR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCostCategories() <em>Cost Categories</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCostCategories()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Cost> costCategories;
+
+	/**
+	 * The default value of the '{@link #getPersonnelCost() <em>Personnel Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersonnelCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PERSONNEL_COST_EDEFAULT = 150.0;
+
+	/**
+	 * The cached value of the '{@link #getPersonnelCost() <em>Personnel Cost</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersonnelCost()
+	 * @generated
+	 * @ordered
+	 */
+	protected double personnelCost = PERSONNEL_COST_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentsCostCatalogImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.ENERGY_COMPONENTS_COST_CATALOG;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getAuthor() {
+		return author;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAuthor(String newAuthor) {
+		String oldAuthor = author;
+		author = newAuthor;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__AUTHOR,
+					oldAuthor, author));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getRevisionYear() {
+		return revisionYear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRevisionYear(int newRevisionYear) {
+		int oldRevisionYear = revisionYear;
+		revisionYear = newRevisionYear;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR, oldRevisionYear, revisionYear));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Cost> getCostCategories() {
+		if (costCategories == null) {
+			costCategories = new EObjectContainmentEList<Cost>(Cost.class, this,
+					EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES);
+		}
+		return costCategories;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getPersonnelCost() {
+		return personnelCost;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPersonnelCost(double newPersonnelCost) {
+		double oldPersonnelCost = personnelCost;
+		personnelCost = newPersonnelCost;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST, oldPersonnelCost, personnelCost));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES:
+			return ((InternalEList<?>) getCostCategories()).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 EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__AUTHOR:
+			return getAuthor();
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR:
+			return getRevisionYear();
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES:
+			return getCostCategories();
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST:
+			return getPersonnelCost();
+		}
+		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 EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__AUTHOR:
+			setAuthor((String) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR:
+			setRevisionYear((Integer) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES:
+			getCostCategories().clear();
+			getCostCategories().addAll((Collection<? extends Cost>) newValue);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST:
+			setPersonnelCost((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__AUTHOR:
+			setAuthor(AUTHOR_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR:
+			setRevisionYear(REVISION_YEAR_EDEFAULT);
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES:
+			getCostCategories().clear();
+			return;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST:
+			setPersonnelCost(PERSONNEL_COST_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__AUTHOR:
+			return AUTHOR_EDEFAULT == null ? author != null : !AUTHOR_EDEFAULT.equals(author);
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__REVISION_YEAR:
+			return revisionYear != REVISION_YEAR_EDEFAULT;
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__COST_CATEGORIES:
+			return costCategories != null && !costCategories.isEmpty();
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG__PERSONNEL_COST:
+			return personnelCost != PERSONNEL_COST_EDEFAULT;
+		}
+		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(" (author: ");
+		result.append(author);
+		result.append(", revisionYear: ");
+		result.append(revisionYear);
+		result.append(", personnelCost: ");
+		result.append(personnelCost);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EnergyComponentsCostCatalogImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ExponentialFunctionImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ExponentialFunctionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..cbe795c6758cad39cc3fe776bfd61bb6f3217c8f
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ExponentialFunctionImpl.java
@@ -0,0 +1,309 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.ExponentialFunction;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+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>Exponential Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ExponentialFunctionImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ExponentialFunctionImpl#getParameterA <em>Parameter A</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ExponentialFunctionImpl#getParameterB <em>Parameter B</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ExponentialFunctionImpl extends MinimalEObjectImpl.Container implements ExponentialFunction {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterA() <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterA()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_A_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterA() <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterA()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterA = PARAMETER_A_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterB() <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterB()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_B_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterB() <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterB()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterB = PARAMETER_B_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExponentialFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.EXPONENTIAL_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.EXPONENTIAL_FUNCTION__KEY, oldKey,
+					key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterA() {
+		return parameterA;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterA(double newParameterA) {
+		double oldParameterA = parameterA;
+		parameterA = newParameterA;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_A,
+					oldParameterA, parameterA));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterB() {
+		return parameterB;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterB(double newParameterB) {
+		double oldParameterB = parameterB;
+		parameterB = newParameterB;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_B,
+					oldParameterB, parameterB));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double exponentialfunction(final double x) {
+		return getParameterA() * Math.pow(getParameterB(), x);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.EXPONENTIAL_FUNCTION__KEY:
+			return getKey();
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_A:
+			return getParameterA();
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_B:
+			return getParameterB();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.EXPONENTIAL_FUNCTION__KEY:
+			setKey((String) newValue);
+			return;
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_A:
+			setParameterA((Double) newValue);
+			return;
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_B:
+			setParameterB((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.EXPONENTIAL_FUNCTION__KEY:
+			setKey(KEY_EDEFAULT);
+			return;
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_A:
+			setParameterA(PARAMETER_A_EDEFAULT);
+			return;
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_B:
+			setParameterB(PARAMETER_B_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.EXPONENTIAL_FUNCTION__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_A:
+			return parameterA != PARAMETER_A_EDEFAULT;
+		case EnCompPackage.EXPONENTIAL_FUNCTION__PARAMETER_B:
+			return parameterB != PARAMETER_B_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case EnCompPackage.EXPONENTIAL_FUNCTION___EXPONENTIALFUNCTION__DOUBLE:
+			return exponentialfunction((Double) arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(", parameterA: ");
+		result.append(parameterA);
+		result.append(", parameterB: ");
+		result.append(parameterB);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ExponentialFunctionImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ExponentionalCharacteristicImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ExponentionalCharacteristicImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..720ed782fa8a3451054ba4db89cd398d90f0ac5b
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ExponentionalCharacteristicImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.ExponentialFunction;
+import de.hftstuttgart.energycomponents.ExponentionalCharacteristic;
+
+import java.util.Collection;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Exponentional Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ExponentionalCharacteristicImpl#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ExponentionalCharacteristicImpl extends CharacteristicImpl implements ExponentionalCharacteristic {
+	/**
+	 * The cached value of the '{@link #getFunctions() <em>Functions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunctions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ExponentialFunction> functions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExponentionalCharacteristicImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.EXPONENTIONAL_CHARACTERISTIC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<ExponentialFunction> getFunctions() {
+		if (functions == null) {
+			functions = new EObjectContainmentEList<ExponentialFunction>(ExponentialFunction.class, this,
+					EnCompPackage.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS);
+		}
+		return functions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS:
+			return ((InternalEList<?>) getFunctions()).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 EnCompPackage.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS:
+			return getFunctions();
+		}
+		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 EnCompPackage.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			getFunctions().addAll((Collection<? extends ExponentialFunction>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.EXPONENTIONAL_CHARACTERISTIC__FUNCTIONS:
+			return functions != null && !functions.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ExponentionalCharacteristicImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FossilFuelImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FossilFuelImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..c188b365d15449e22a4d440c22e8a280b6692b66
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FossilFuelImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.FossilFuel;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fossil Fuel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.FossilFuelImpl#getMethaneContent <em>Methane Content</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FossilFuelImpl extends FuelImpl implements FossilFuel {
+	/**
+	 * The default value of the '{@link #getMethaneContent() <em>Methane Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMethaneContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double METHANE_CONTENT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMethaneContent() <em>Methane Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMethaneContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected double methaneContent = METHANE_CONTENT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FossilFuelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.FOSSIL_FUEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMethaneContent() {
+		return methaneContent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMethaneContent(double newMethaneContent) {
+		double oldMethaneContent = methaneContent;
+		methaneContent = newMethaneContent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.FOSSIL_FUEL__METHANE_CONTENT,
+					oldMethaneContent, methaneContent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.FOSSIL_FUEL__METHANE_CONTENT:
+			return getMethaneContent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.FOSSIL_FUEL__METHANE_CONTENT:
+			setMethaneContent((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.FOSSIL_FUEL__METHANE_CONTENT:
+			setMethaneContent(METHANE_CONTENT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.FOSSIL_FUEL__METHANE_CONTENT:
+			return methaneContent != METHANE_CONTENT_EDEFAULT;
+		}
+		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(" (methaneContent: ");
+		result.append(methaneContent);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FossilFuelImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FuelCellImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FuelCellImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..37c3e78d90aa2e3773e7a014155507a17dd76bbd
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FuelCellImpl.java
@@ -0,0 +1,37 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.FuelCell;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fuel Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FuelCellImpl extends EnergyComponentImpl implements FuelCell {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FuelCellImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.FUEL_CELL;
+	}
+
+} //FuelCellImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FuelImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FuelImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..04ca01879a01be9fdcba88962c93ce4d5363a209
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/FuelImpl.java
@@ -0,0 +1,345 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Fuel;
+
+import de.hftstuttgart.energycomponents.FuelTypes;
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fuel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.FuelImpl#getNetCalorificValue <em>Net Calorific Value</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.FuelImpl#getGrossCalorificValue <em>Gross Calorific Value</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.FuelImpl#getDensity <em>Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.FuelImpl#getFuelType <em>Fuel Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class FuelImpl extends EnergyCarrierImpl implements Fuel {
+	/**
+	 * The default value of the '{@link #getNetCalorificValue() <em>Net Calorific Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNetCalorificValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity NET_CALORIFIC_VALUE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "(kW*h)/m\u00b3");
+
+	/**
+	 * The cached value of the '{@link #getNetCalorificValue() <em>Net Calorific Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNetCalorificValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity netCalorificValue = NET_CALORIFIC_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getGrossCalorificValue() <em>Gross Calorific Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGrossCalorificValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity GROSS_CALORIFIC_VALUE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "(kW*h)/m\u00b3");
+
+	/**
+	 * The cached value of the '{@link #getGrossCalorificValue() <em>Gross Calorific Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGrossCalorificValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity grossCalorificValue = GROSS_CALORIFIC_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDensity() <em>Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kg/m\u00b3");
+
+	/**
+	 * The cached value of the '{@link #getDensity() <em>Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity density = DENSITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFuelType() <em>Fuel Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFuelType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final FuelTypes FUEL_TYPE_EDEFAULT = FuelTypes.NATURAL_GAS;
+
+	/**
+	 * The cached value of the '{@link #getFuelType() <em>Fuel Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFuelType()
+	 * @generated
+	 * @ordered
+	 */
+	protected FuelTypes fuelType = FUEL_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FuelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.FUEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getNetCalorificValue() {
+		return netCalorificValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNetCalorificValue(NullableQuantity newNetCalorificValue) {
+		NullableQuantity oldNetCalorificValue = netCalorificValue;
+		netCalorificValue = newNetCalorificValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.FUEL__NET_CALORIFIC_VALUE,
+					oldNetCalorificValue, netCalorificValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getGrossCalorificValue() {
+		return grossCalorificValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setGrossCalorificValue(NullableQuantity newGrossCalorificValue) {
+		NullableQuantity oldGrossCalorificValue = grossCalorificValue;
+		grossCalorificValue = newGrossCalorificValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.FUEL__GROSS_CALORIFIC_VALUE,
+					oldGrossCalorificValue, grossCalorificValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getDensity() {
+		return density;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDensity(NullableQuantity newDensity) {
+		NullableQuantity oldDensity = density;
+		density = newDensity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.FUEL__DENSITY, oldDensity, density));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FuelTypes getFuelType() {
+		return fuelType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFuelType(FuelTypes newFuelType) {
+		FuelTypes oldFuelType = fuelType;
+		fuelType = newFuelType == null ? FUEL_TYPE_EDEFAULT : newFuelType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.FUEL__FUEL_TYPE, oldFuelType,
+					fuelType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.FUEL__NET_CALORIFIC_VALUE:
+			return getNetCalorificValue();
+		case EnCompPackage.FUEL__GROSS_CALORIFIC_VALUE:
+			return getGrossCalorificValue();
+		case EnCompPackage.FUEL__DENSITY:
+			return getDensity();
+		case EnCompPackage.FUEL__FUEL_TYPE:
+			return getFuelType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.FUEL__NET_CALORIFIC_VALUE:
+			setNetCalorificValue((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.FUEL__GROSS_CALORIFIC_VALUE:
+			setGrossCalorificValue((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.FUEL__DENSITY:
+			setDensity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.FUEL__FUEL_TYPE:
+			setFuelType((FuelTypes) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.FUEL__NET_CALORIFIC_VALUE:
+			setNetCalorificValue(NET_CALORIFIC_VALUE_EDEFAULT);
+			return;
+		case EnCompPackage.FUEL__GROSS_CALORIFIC_VALUE:
+			setGrossCalorificValue(GROSS_CALORIFIC_VALUE_EDEFAULT);
+			return;
+		case EnCompPackage.FUEL__DENSITY:
+			setDensity(DENSITY_EDEFAULT);
+			return;
+		case EnCompPackage.FUEL__FUEL_TYPE:
+			setFuelType(FUEL_TYPE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.FUEL__NET_CALORIFIC_VALUE:
+			return NET_CALORIFIC_VALUE_EDEFAULT == null ? netCalorificValue != null
+					: !NET_CALORIFIC_VALUE_EDEFAULT.equals(netCalorificValue);
+		case EnCompPackage.FUEL__GROSS_CALORIFIC_VALUE:
+			return GROSS_CALORIFIC_VALUE_EDEFAULT == null ? grossCalorificValue != null
+					: !GROSS_CALORIFIC_VALUE_EDEFAULT.equals(grossCalorificValue);
+		case EnCompPackage.FUEL__DENSITY:
+			return DENSITY_EDEFAULT == null ? density != null : !DENSITY_EDEFAULT.equals(density);
+		case EnCompPackage.FUEL__FUEL_TYPE:
+			return fuelType != FUEL_TYPE_EDEFAULT;
+		}
+		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(" (netCalorificValue: ");
+		result.append(netCalorificValue);
+		result.append(", grossCalorificValue: ");
+		result.append(grossCalorificValue);
+		result.append(", density: ");
+		result.append(density);
+		result.append(", fuelType: ");
+		result.append(fuelType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FuelImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/GeothermalHeatExchangerImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/GeothermalHeatExchangerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..768dc452dfeb8c0bbc69ca4550c41a0a7fd6342f
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/GeothermalHeatExchangerImpl.java
@@ -0,0 +1,170 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.GeothermalHeatExchanger;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Geothermal Heat Exchanger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.GeothermalHeatExchangerImpl#getPipeDiameter <em>Pipe Diameter</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GeothermalHeatExchangerImpl extends EnergyComponentImpl implements GeothermalHeatExchanger {
+	/**
+	 * The default value of the '{@link #getPipeDiameter() <em>Pipe Diameter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPipeDiameter()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity PIPE_DIAMETER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "1 cm");
+
+	/**
+	 * The cached value of the '{@link #getPipeDiameter() <em>Pipe Diameter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPipeDiameter()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity pipeDiameter = PIPE_DIAMETER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GeothermalHeatExchangerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.GEOTHERMAL_HEAT_EXCHANGER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getPipeDiameter() {
+		return pipeDiameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPipeDiameter(NullableQuantity newPipeDiameter) {
+		NullableQuantity oldPipeDiameter = pipeDiameter;
+		pipeDiameter = newPipeDiameter;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER, oldPipeDiameter, pipeDiameter));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER:
+			return getPipeDiameter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER:
+			setPipeDiameter((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER:
+			setPipeDiameter(PIPE_DIAMETER_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER__PIPE_DIAMETER:
+			return PIPE_DIAMETER_EDEFAULT == null ? pipeDiameter != null : !PIPE_DIAMETER_EDEFAULT.equals(pipeDiameter);
+		}
+		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(" (pipeDiameter: ");
+		result.append(pipeDiameter);
+		result.append(')');
+		return result.toString();
+	}
+
+} //GeothermalHeatExchangerImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HeatExchangerImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HeatExchangerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..185f47e0ef0b44326b58d6da5f5e07d491949c17
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HeatExchangerImpl.java
@@ -0,0 +1,230 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HeatExchanger;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Heat Exchanger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HeatExchangerImpl#getHeatRecoveryEfficiency <em>Heat Recovery Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HeatExchangerImpl#getNominalElectricityConsumption <em>Nominal Electricity Consumption</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class HeatExchangerImpl extends EnergyComponentImpl implements HeatExchanger {
+	/**
+	 * The default value of the '{@link #getHeatRecoveryEfficiency() <em>Heat Recovery Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatRecoveryEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double HEAT_RECOVERY_EFFICIENCY_EDEFAULT = 0.8;
+
+	/**
+	 * The cached value of the '{@link #getHeatRecoveryEfficiency() <em>Heat Recovery Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatRecoveryEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double heatRecoveryEfficiency = HEAT_RECOVERY_EFFICIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNominalElectricityConsumption() <em>Nominal Electricity Consumption</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalElectricityConsumption()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity NOMINAL_ELECTRICITY_CONSUMPTION_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "W");
+
+	/**
+	 * The cached value of the '{@link #getNominalElectricityConsumption() <em>Nominal Electricity Consumption</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalElectricityConsumption()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity nominalElectricityConsumption = NOMINAL_ELECTRICITY_CONSUMPTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HeatExchangerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.HEAT_EXCHANGER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getHeatRecoveryEfficiency() {
+		return heatRecoveryEfficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHeatRecoveryEfficiency(double newHeatRecoveryEfficiency) {
+		double oldHeatRecoveryEfficiency = heatRecoveryEfficiency;
+		heatRecoveryEfficiency = newHeatRecoveryEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY, oldHeatRecoveryEfficiency,
+					heatRecoveryEfficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getNominalElectricityConsumption() {
+		return nominalElectricityConsumption;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNominalElectricityConsumption(NullableQuantity newNominalElectricityConsumption) {
+		NullableQuantity oldNominalElectricityConsumption = nominalElectricityConsumption;
+		nominalElectricityConsumption = newNominalElectricityConsumption;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION, oldNominalElectricityConsumption,
+					nominalElectricityConsumption));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY:
+			return getHeatRecoveryEfficiency();
+		case EnCompPackage.HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION:
+			return getNominalElectricityConsumption();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY:
+			setHeatRecoveryEfficiency((Double) newValue);
+			return;
+		case EnCompPackage.HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION:
+			setNominalElectricityConsumption((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY:
+			setHeatRecoveryEfficiency(HEAT_RECOVERY_EFFICIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION:
+			setNominalElectricityConsumption(NOMINAL_ELECTRICITY_CONSUMPTION_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_EXCHANGER__HEAT_RECOVERY_EFFICIENCY:
+			return heatRecoveryEfficiency != HEAT_RECOVERY_EFFICIENCY_EDEFAULT;
+		case EnCompPackage.HEAT_EXCHANGER__NOMINAL_ELECTRICITY_CONSUMPTION:
+			return NOMINAL_ELECTRICITY_CONSUMPTION_EDEFAULT == null ? nominalElectricityConsumption != null
+					: !NOMINAL_ELECTRICITY_CONSUMPTION_EDEFAULT.equals(nominalElectricityConsumption);
+		}
+		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(" (heatRecoveryEfficiency: ");
+		result.append(heatRecoveryEfficiency);
+		result.append(", nominalElectricityConsumption: ");
+		result.append(nominalElectricityConsumption);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HeatExchangerImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HeatPumpImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HeatPumpImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..12e3edfb01de8ef80a49f92718480f6f80b3a31a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HeatPumpImpl.java
@@ -0,0 +1,408 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.Characteristic;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HeatPump;
+import de.hftstuttgart.energycomponents.HeatSources;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Heat Pump</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HeatPumpImpl#getHeatSource <em>Heat Source</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HeatPumpImpl#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HeatPumpImpl#getPowerInput <em>Power Input</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HeatPumpImpl#getHeatOutput <em>Heat Output</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class HeatPumpImpl extends ThermalEnergyDeviceImpl implements HeatPump {
+	/**
+	 * The default value of the '{@link #getHeatSource() <em>Heat Source</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final HeatSources HEAT_SOURCE_EDEFAULT = HeatSources.AIR;
+
+	/**
+	 * The cached value of the '{@link #getHeatSource() <em>Heat Source</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected HeatSources heatSource = HEAT_SOURCE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCoefficientOfPerformance() <em>Coefficient Of Performance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCoefficientOfPerformance()
+	 * @generated
+	 * @ordered
+	 */
+	protected Characteristic coefficientOfPerformance;
+
+	/**
+	 * The cached value of the '{@link #getPowerInput() <em>Power Input</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPowerInput()
+	 * @generated
+	 * @ordered
+	 */
+	protected Characteristic powerInput;
+
+	/**
+	 * The cached value of the '{@link #getHeatOutput() <em>Heat Output</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatOutput()
+	 * @generated
+	 * @ordered
+	 */
+	protected Characteristic heatOutput;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HeatPumpImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.HEAT_PUMP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public HeatSources getHeatSource() {
+		return heatSource;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHeatSource(HeatSources newHeatSource) {
+		HeatSources oldHeatSource = heatSource;
+		heatSource = newHeatSource == null ? HEAT_SOURCE_EDEFAULT : newHeatSource;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__HEAT_SOURCE, oldHeatSource,
+					heatSource));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Characteristic getPowerInput() {
+		return powerInput;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPowerInput(Characteristic newPowerInput, NotificationChain msgs) {
+		Characteristic oldPowerInput = powerInput;
+		powerInput = newPowerInput;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.HEAT_PUMP__POWER_INPUT, oldPowerInput, newPowerInput);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPowerInput(Characteristic newPowerInput) {
+		if (newPowerInput != powerInput) {
+			NotificationChain msgs = null;
+			if (powerInput != null)
+				msgs = ((InternalEObject) powerInput).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__POWER_INPUT, null, msgs);
+			if (newPowerInput != null)
+				msgs = ((InternalEObject) newPowerInput).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__POWER_INPUT, null, msgs);
+			msgs = basicSetPowerInput(newPowerInput, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__POWER_INPUT, newPowerInput,
+					newPowerInput));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Characteristic getHeatOutput() {
+		return heatOutput;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetHeatOutput(Characteristic newHeatOutput, NotificationChain msgs) {
+		Characteristic oldHeatOutput = heatOutput;
+		heatOutput = newHeatOutput;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, oldHeatOutput, newHeatOutput);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHeatOutput(Characteristic newHeatOutput) {
+		if (newHeatOutput != heatOutput) {
+			NotificationChain msgs = null;
+			if (heatOutput != null)
+				msgs = ((InternalEObject) heatOutput).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, null, msgs);
+			if (newHeatOutput != null)
+				msgs = ((InternalEObject) newHeatOutput).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, null, msgs);
+			msgs = basicSetHeatOutput(newHeatOutput, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__HEAT_OUTPUT, newHeatOutput,
+					newHeatOutput));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Characteristic getCoefficientOfPerformance() {
+		return coefficientOfPerformance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCoefficientOfPerformance(Characteristic newCoefficientOfPerformance,
+			NotificationChain msgs) {
+		Characteristic oldCoefficientOfPerformance = coefficientOfPerformance;
+		coefficientOfPerformance = newCoefficientOfPerformance;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, oldCoefficientOfPerformance,
+					newCoefficientOfPerformance);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCoefficientOfPerformance(Characteristic newCoefficientOfPerformance) {
+		if (newCoefficientOfPerformance != coefficientOfPerformance) {
+			NotificationChain msgs = null;
+			if (coefficientOfPerformance != null)
+				msgs = ((InternalEObject) coefficientOfPerformance).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, null, msgs);
+			if (newCoefficientOfPerformance != null)
+				msgs = ((InternalEObject) newCoefficientOfPerformance).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE, null, msgs);
+			msgs = basicSetCoefficientOfPerformance(newCoefficientOfPerformance, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE,
+					newCoefficientOfPerformance, newCoefficientOfPerformance));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE:
+			return basicSetCoefficientOfPerformance(null, msgs);
+		case EnCompPackage.HEAT_PUMP__POWER_INPUT:
+			return basicSetPowerInput(null, msgs);
+		case EnCompPackage.HEAT_PUMP__HEAT_OUTPUT:
+			return basicSetHeatOutput(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_PUMP__HEAT_SOURCE:
+			return getHeatSource();
+		case EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE:
+			return getCoefficientOfPerformance();
+		case EnCompPackage.HEAT_PUMP__POWER_INPUT:
+			return getPowerInput();
+		case EnCompPackage.HEAT_PUMP__HEAT_OUTPUT:
+			return getHeatOutput();
+		}
+		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 EnCompPackage.HEAT_PUMP__HEAT_SOURCE:
+			setHeatSource((HeatSources) newValue);
+			return;
+		case EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE:
+			setCoefficientOfPerformance((Characteristic) newValue);
+			return;
+		case EnCompPackage.HEAT_PUMP__POWER_INPUT:
+			setPowerInput((Characteristic) newValue);
+			return;
+		case EnCompPackage.HEAT_PUMP__HEAT_OUTPUT:
+			setHeatOutput((Characteristic) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_PUMP__HEAT_SOURCE:
+			setHeatSource(HEAT_SOURCE_EDEFAULT);
+			return;
+		case EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE:
+			setCoefficientOfPerformance((Characteristic) null);
+			return;
+		case EnCompPackage.HEAT_PUMP__POWER_INPUT:
+			setPowerInput((Characteristic) null);
+			return;
+		case EnCompPackage.HEAT_PUMP__HEAT_OUTPUT:
+			setHeatOutput((Characteristic) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HEAT_PUMP__HEAT_SOURCE:
+			return heatSource != HEAT_SOURCE_EDEFAULT;
+		case EnCompPackage.HEAT_PUMP__COEFFICIENT_OF_PERFORMANCE:
+			return coefficientOfPerformance != null;
+		case EnCompPackage.HEAT_PUMP__POWER_INPUT:
+			return powerInput != null;
+		case EnCompPackage.HEAT_PUMP__HEAT_OUTPUT:
+			return heatOutput != null;
+		}
+		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(" (heatSource: ");
+		result.append(heatSource);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HeatPumpImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenCompressorImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenCompressorImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..04c819920f6d29bf79844e4835b665bb798b1a94
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenCompressorImpl.java
@@ -0,0 +1,343 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HydrogenCompressor;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hydrogen Compressor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl#getEfficiency <em>Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl#getThermodynamicMode <em>Thermodynamic Mode</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl#getMaxPressure <em>Max Pressure</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenCompressorImpl#getMaxDeliveryRate <em>Max Delivery Rate</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class HydrogenCompressorImpl extends EnergyComponentImpl implements HydrogenCompressor {
+	/**
+	 * The default value of the '{@link #getEfficiency() <em>Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double EFFICIENCY_EDEFAULT = 0.68;
+
+	/**
+	 * The cached value of the '{@link #getEfficiency() <em>Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double efficiency = EFFICIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getThermodynamicMode() <em>Thermodynamic Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermodynamicMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int THERMODYNAMIC_MODE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getThermodynamicMode() <em>Thermodynamic Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermodynamicMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected int thermodynamicMode = THERMODYNAMIC_MODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxPressure() <em>Max Pressure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxPressure()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MAX_PRESSURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "50 MPa");
+
+	/**
+	 * The cached value of the '{@link #getMaxPressure() <em>Max Pressure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxPressure()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity maxPressure = MAX_PRESSURE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxDeliveryRate() <em>Max Delivery Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxDeliveryRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MAX_DELIVERY_RATE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "9 kg/h");
+
+	/**
+	 * The cached value of the '{@link #getMaxDeliveryRate() <em>Max Delivery Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxDeliveryRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity maxDeliveryRate = MAX_DELIVERY_RATE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HydrogenCompressorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.HYDROGEN_COMPRESSOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getEfficiency() {
+		return efficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEfficiency(double newEfficiency) {
+		double oldEfficiency = efficiency;
+		efficiency = newEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN_COMPRESSOR__EFFICIENCY,
+					oldEfficiency, efficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getThermodynamicMode() {
+		return thermodynamicMode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThermodynamicMode(int newThermodynamicMode) {
+		int oldThermodynamicMode = thermodynamicMode;
+		thermodynamicMode = newThermodynamicMode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE,
+					oldThermodynamicMode, thermodynamicMode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMaxPressure() {
+		return maxPressure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaxPressure(NullableQuantity newMaxPressure) {
+		NullableQuantity oldMaxPressure = maxPressure;
+		maxPressure = newMaxPressure;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN_COMPRESSOR__MAX_PRESSURE,
+					oldMaxPressure, maxPressure));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMaxDeliveryRate() {
+		return maxDeliveryRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaxDeliveryRate(NullableQuantity newMaxDeliveryRate) {
+		NullableQuantity oldMaxDeliveryRate = maxDeliveryRate;
+		maxDeliveryRate = newMaxDeliveryRate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE,
+					oldMaxDeliveryRate, maxDeliveryRate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_COMPRESSOR__EFFICIENCY:
+			return getEfficiency();
+		case EnCompPackage.HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE:
+			return getThermodynamicMode();
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_PRESSURE:
+			return getMaxPressure();
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE:
+			return getMaxDeliveryRate();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_COMPRESSOR__EFFICIENCY:
+			setEfficiency((Double) newValue);
+			return;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE:
+			setThermodynamicMode((Integer) newValue);
+			return;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_PRESSURE:
+			setMaxPressure((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE:
+			setMaxDeliveryRate((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_COMPRESSOR__EFFICIENCY:
+			setEfficiency(EFFICIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE:
+			setThermodynamicMode(THERMODYNAMIC_MODE_EDEFAULT);
+			return;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_PRESSURE:
+			setMaxPressure(MAX_PRESSURE_EDEFAULT);
+			return;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE:
+			setMaxDeliveryRate(MAX_DELIVERY_RATE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_COMPRESSOR__EFFICIENCY:
+			return efficiency != EFFICIENCY_EDEFAULT;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__THERMODYNAMIC_MODE:
+			return thermodynamicMode != THERMODYNAMIC_MODE_EDEFAULT;
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_PRESSURE:
+			return MAX_PRESSURE_EDEFAULT == null ? maxPressure != null : !MAX_PRESSURE_EDEFAULT.equals(maxPressure);
+		case EnCompPackage.HYDROGEN_COMPRESSOR__MAX_DELIVERY_RATE:
+			return MAX_DELIVERY_RATE_EDEFAULT == null ? maxDeliveryRate != null
+					: !MAX_DELIVERY_RATE_EDEFAULT.equals(maxDeliveryRate);
+		}
+		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(" (efficiency: ");
+		result.append(efficiency);
+		result.append(", thermodynamicMode: ");
+		result.append(thermodynamicMode);
+		result.append(", maxPressure: ");
+		result.append(maxPressure);
+		result.append(", maxDeliveryRate: ");
+		result.append(maxDeliveryRate);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HydrogenCompressorImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a599767b01e64f60c2a7f808f6a5c9e3929b508
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenImpl.java
@@ -0,0 +1,234 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Hydrogen;
+import de.hftstuttgart.energycomponents.HydrogenStorage;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hydrogen</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenImpl#getChemicalPurity <em>Chemical Purity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenImpl#getHydrogenForHydrogenStorage <em>Hydrogen For Hydrogen Storage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class HydrogenImpl extends FuelImpl implements Hydrogen {
+	/**
+	 * The default value of the '{@link #getChemicalPurity() <em>Chemical Purity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getChemicalPurity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double CHEMICAL_PURITY_EDEFAULT = 0.99;
+
+	/**
+	 * The cached value of the '{@link #getChemicalPurity() <em>Chemical Purity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getChemicalPurity()
+	 * @generated
+	 * @ordered
+	 */
+	protected double chemicalPurity = CHEMICAL_PURITY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getHydrogenForHydrogenStorage() <em>Hydrogen For Hydrogen Storage</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHydrogenForHydrogenStorage()
+	 * @generated
+	 * @ordered
+	 */
+	protected HydrogenStorage hydrogenForHydrogenStorage;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HydrogenImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.HYDROGEN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getChemicalPurity() {
+		return chemicalPurity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setChemicalPurity(double newChemicalPurity) {
+		double oldChemicalPurity = chemicalPurity;
+		chemicalPurity = newChemicalPurity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN__CHEMICAL_PURITY,
+					oldChemicalPurity, chemicalPurity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public HydrogenStorage getHydrogenForHydrogenStorage() {
+		if (hydrogenForHydrogenStorage != null && hydrogenForHydrogenStorage.eIsProxy()) {
+			InternalEObject oldHydrogenForHydrogenStorage = (InternalEObject) hydrogenForHydrogenStorage;
+			hydrogenForHydrogenStorage = (HydrogenStorage) eResolveProxy(oldHydrogenForHydrogenStorage);
+			if (hydrogenForHydrogenStorage != oldHydrogenForHydrogenStorage) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							EnCompPackage.HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE, oldHydrogenForHydrogenStorage,
+							hydrogenForHydrogenStorage));
+			}
+		}
+		return hydrogenForHydrogenStorage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HydrogenStorage basicGetHydrogenForHydrogenStorage() {
+		return hydrogenForHydrogenStorage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHydrogenForHydrogenStorage(HydrogenStorage newHydrogenForHydrogenStorage) {
+		HydrogenStorage oldHydrogenForHydrogenStorage = hydrogenForHydrogenStorage;
+		hydrogenForHydrogenStorage = newHydrogenForHydrogenStorage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE,
+					oldHydrogenForHydrogenStorage, hydrogenForHydrogenStorage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN__CHEMICAL_PURITY:
+			return getChemicalPurity();
+		case EnCompPackage.HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE:
+			if (resolve)
+				return getHydrogenForHydrogenStorage();
+			return basicGetHydrogenForHydrogenStorage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN__CHEMICAL_PURITY:
+			setChemicalPurity((Double) newValue);
+			return;
+		case EnCompPackage.HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE:
+			setHydrogenForHydrogenStorage((HydrogenStorage) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN__CHEMICAL_PURITY:
+			setChemicalPurity(CHEMICAL_PURITY_EDEFAULT);
+			return;
+		case EnCompPackage.HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE:
+			setHydrogenForHydrogenStorage((HydrogenStorage) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN__CHEMICAL_PURITY:
+			return chemicalPurity != CHEMICAL_PURITY_EDEFAULT;
+		case EnCompPackage.HYDROGEN__HYDROGEN_FOR_HYDROGEN_STORAGE:
+			return hydrogenForHydrogenStorage != null;
+		}
+		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(" (chemicalPurity: ");
+		result.append(chemicalPurity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HydrogenImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenStorageImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenStorageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b7061b74bf456fc43286f8dccee4d695358c8e4
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/HydrogenStorageImpl.java
@@ -0,0 +1,287 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.HydrogenStorage;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hydrogen Storage</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenStorageImpl#getNumberOfCylinders <em>Number Of Cylinders</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenStorageImpl#getCylinderVolume <em>Cylinder Volume</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.HydrogenStorageImpl#getNominalPressure <em>Nominal Pressure</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class HydrogenStorageImpl extends EnergyComponentImpl implements HydrogenStorage {
+	/**
+	 * The default value of the '{@link #getNumberOfCylinders() <em>Number Of Cylinders</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberOfCylinders()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUMBER_OF_CYLINDERS_EDEFAULT = 1;
+
+	/**
+	 * The cached value of the '{@link #getNumberOfCylinders() <em>Number Of Cylinders</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberOfCylinders()
+	 * @generated
+	 * @ordered
+	 */
+	protected int numberOfCylinders = NUMBER_OF_CYLINDERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCylinderVolume() <em>Cylinder Volume</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCylinderVolume()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity CYLINDER_VOLUME_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "1.5 m\u00b3");
+
+	/**
+	 * The cached value of the '{@link #getCylinderVolume() <em>Cylinder Volume</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCylinderVolume()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity cylinderVolume = CYLINDER_VOLUME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNominalPressure() <em>Nominal Pressure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPressure()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity NOMINAL_PRESSURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "25 MPa");
+
+	/**
+	 * The cached value of the '{@link #getNominalPressure() <em>Nominal Pressure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPressure()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity nominalPressure = NOMINAL_PRESSURE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HydrogenStorageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.HYDROGEN_STORAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNumberOfCylinders() {
+		return numberOfCylinders;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNumberOfCylinders(int newNumberOfCylinders) {
+		int oldNumberOfCylinders = numberOfCylinders;
+		numberOfCylinders = newNumberOfCylinders;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS,
+					oldNumberOfCylinders, numberOfCylinders));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getCylinderVolume() {
+		return cylinderVolume;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCylinderVolume(NullableQuantity newCylinderVolume) {
+		NullableQuantity oldCylinderVolume = cylinderVolume;
+		cylinderVolume = newCylinderVolume;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN_STORAGE__CYLINDER_VOLUME,
+					oldCylinderVolume, cylinderVolume));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getNominalPressure() {
+		return nominalPressure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNominalPressure(NullableQuantity newNominalPressure) {
+		NullableQuantity oldNominalPressure = nominalPressure;
+		nominalPressure = newNominalPressure;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.HYDROGEN_STORAGE__NOMINAL_PRESSURE,
+					oldNominalPressure, nominalPressure));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS:
+			return getNumberOfCylinders();
+		case EnCompPackage.HYDROGEN_STORAGE__CYLINDER_VOLUME:
+			return getCylinderVolume();
+		case EnCompPackage.HYDROGEN_STORAGE__NOMINAL_PRESSURE:
+			return getNominalPressure();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS:
+			setNumberOfCylinders((Integer) newValue);
+			return;
+		case EnCompPackage.HYDROGEN_STORAGE__CYLINDER_VOLUME:
+			setCylinderVolume((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.HYDROGEN_STORAGE__NOMINAL_PRESSURE:
+			setNominalPressure((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS:
+			setNumberOfCylinders(NUMBER_OF_CYLINDERS_EDEFAULT);
+			return;
+		case EnCompPackage.HYDROGEN_STORAGE__CYLINDER_VOLUME:
+			setCylinderVolume(CYLINDER_VOLUME_EDEFAULT);
+			return;
+		case EnCompPackage.HYDROGEN_STORAGE__NOMINAL_PRESSURE:
+			setNominalPressure(NOMINAL_PRESSURE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.HYDROGEN_STORAGE__NUMBER_OF_CYLINDERS:
+			return numberOfCylinders != NUMBER_OF_CYLINDERS_EDEFAULT;
+		case EnCompPackage.HYDROGEN_STORAGE__CYLINDER_VOLUME:
+			return CYLINDER_VOLUME_EDEFAULT == null ? cylinderVolume != null
+					: !CYLINDER_VOLUME_EDEFAULT.equals(cylinderVolume);
+		case EnCompPackage.HYDROGEN_STORAGE__NOMINAL_PRESSURE:
+			return NOMINAL_PRESSURE_EDEFAULT == null ? nominalPressure != null
+					: !NOMINAL_PRESSURE_EDEFAULT.equals(nominalPressure);
+		}
+		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(" (numberOfCylinders: ");
+		result.append(numberOfCylinders);
+		result.append(", cylinderVolume: ");
+		result.append(cylinderVolume);
+		result.append(", nominalPressure: ");
+		result.append(nominalPressure);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HydrogenStorageImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/InverterImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/InverterImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..79bd338e3d6ed27e8e78ffa18ec9f07ef6f7d514
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/InverterImpl.java
@@ -0,0 +1,37 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Inverter;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Inverter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class InverterImpl extends EnergyComponentImpl implements Inverter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InverterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.INVERTER;
+	}
+
+} //InverterImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/LinearCharacteristicImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/LinearCharacteristicImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed61013b654cf448eeb665574aaf11b62551cf2d
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/LinearCharacteristicImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.LinearCharacteristic;
+import de.hftstuttgart.energycomponents.LinearFunction;
+
+import java.util.Collection;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Linear Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.LinearCharacteristicImpl#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LinearCharacteristicImpl extends CharacteristicImpl implements LinearCharacteristic {
+	/**
+	 * The cached value of the '{@link #getFunctions() <em>Functions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunctions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LinearFunction> functions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LinearCharacteristicImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.LINEAR_CHARACTERISTIC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<LinearFunction> getFunctions() {
+		if (functions == null) {
+			functions = new EObjectContainmentEList<LinearFunction>(LinearFunction.class, this,
+					EnCompPackage.LINEAR_CHARACTERISTIC__FUNCTIONS);
+		}
+		return functions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.LINEAR_CHARACTERISTIC__FUNCTIONS:
+			return ((InternalEList<?>) getFunctions()).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 EnCompPackage.LINEAR_CHARACTERISTIC__FUNCTIONS:
+			return getFunctions();
+		}
+		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 EnCompPackage.LINEAR_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			getFunctions().addAll((Collection<? extends LinearFunction>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.LINEAR_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.LINEAR_CHARACTERISTIC__FUNCTIONS:
+			return functions != null && !functions.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LinearCharacteristicImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/LinearFunctionImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/LinearFunctionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..455ab969a0c35f4e649d7f04fc42c3bb68b78e37
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/LinearFunctionImpl.java
@@ -0,0 +1,308 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.LinearFunction;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+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>Linear Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.LinearFunctionImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.LinearFunctionImpl#getParameterM <em>Parameter M</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.LinearFunctionImpl#getParameterC <em>Parameter C</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LinearFunctionImpl extends MinimalEObjectImpl.Container implements LinearFunction {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterM() <em>Parameter M</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterM()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_M_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterM() <em>Parameter M</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterM()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterM = PARAMETER_M_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterC() <em>Parameter C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterC()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_C_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterC() <em>Parameter C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterC()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterC = PARAMETER_C_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LinearFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.LINEAR_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.LINEAR_FUNCTION__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterM() {
+		return parameterM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterM(double newParameterM) {
+		double oldParameterM = parameterM;
+		parameterM = newParameterM;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.LINEAR_FUNCTION__PARAMETER_M,
+					oldParameterM, parameterM));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterC() {
+		return parameterC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterC(double newParameterC) {
+		double oldParameterC = parameterC;
+		parameterC = newParameterC;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.LINEAR_FUNCTION__PARAMETER_C,
+					oldParameterC, parameterC));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double linearfunction(final double x) {
+		return getParameterM() * x + getParameterC();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.LINEAR_FUNCTION__KEY:
+			return getKey();
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_M:
+			return getParameterM();
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_C:
+			return getParameterC();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.LINEAR_FUNCTION__KEY:
+			setKey((String) newValue);
+			return;
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_M:
+			setParameterM((Double) newValue);
+			return;
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_C:
+			setParameterC((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.LINEAR_FUNCTION__KEY:
+			setKey(KEY_EDEFAULT);
+			return;
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_M:
+			setParameterM(PARAMETER_M_EDEFAULT);
+			return;
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_C:
+			setParameterC(PARAMETER_C_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.LINEAR_FUNCTION__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_M:
+			return parameterM != PARAMETER_M_EDEFAULT;
+		case EnCompPackage.LINEAR_FUNCTION__PARAMETER_C:
+			return parameterC != PARAMETER_C_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case EnCompPackage.LINEAR_FUNCTION___LINEARFUNCTION__DOUBLE:
+			return linearfunction((Double) arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(", parameterM: ");
+		result.append(parameterM);
+		result.append(", parameterC: ");
+		result.append(parameterC);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LinearFunctionImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ManufacturerImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ManufacturerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..fecf9484fcbee94477e880991f12b0a37fb42e23
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ManufacturerImpl.java
@@ -0,0 +1,282 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Manufacturer;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Manufacturer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ManufacturerImpl#getManufacturerName <em>Manufacturer Name</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ManufacturerImpl#getCountry <em>Country</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ManufacturerImpl#getOutOfBusinessSince <em>Out Of Business Since</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ManufacturerImpl extends MinimalEObjectImpl.Container implements Manufacturer {
+	/**
+	 * The default value of the '{@link #getManufacturerName() <em>Manufacturer Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getManufacturerName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MANUFACTURER_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getManufacturerName() <em>Manufacturer Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getManufacturerName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String manufacturerName = MANUFACTURER_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCountry() <em>Country</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCountry()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String COUNTRY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getCountry() <em>Country</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCountry()
+	 * @generated
+	 * @ordered
+	 */
+	protected String country = COUNTRY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOutOfBusinessSince() <em>Out Of Business Since</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutOfBusinessSince()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int OUT_OF_BUSINESS_SINCE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getOutOfBusinessSince() <em>Out Of Business Since</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutOfBusinessSince()
+	 * @generated
+	 * @ordered
+	 */
+	protected int outOfBusinessSince = OUT_OF_BUSINESS_SINCE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ManufacturerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.MANUFACTURER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getManufacturerName() {
+		return manufacturerName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setManufacturerName(String newManufacturerName) {
+		String oldManufacturerName = manufacturerName;
+		manufacturerName = newManufacturerName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MANUFACTURER__MANUFACTURER_NAME,
+					oldManufacturerName, manufacturerName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCountry() {
+		return country;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCountry(String newCountry) {
+		String oldCountry = country;
+		country = newCountry;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MANUFACTURER__COUNTRY, oldCountry,
+					country));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getOutOfBusinessSince() {
+		return outOfBusinessSince;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOutOfBusinessSince(int newOutOfBusinessSince) {
+		int oldOutOfBusinessSince = outOfBusinessSince;
+		outOfBusinessSince = newOutOfBusinessSince;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MANUFACTURER__OUT_OF_BUSINESS_SINCE,
+					oldOutOfBusinessSince, outOfBusinessSince));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.MANUFACTURER__MANUFACTURER_NAME:
+			return getManufacturerName();
+		case EnCompPackage.MANUFACTURER__COUNTRY:
+			return getCountry();
+		case EnCompPackage.MANUFACTURER__OUT_OF_BUSINESS_SINCE:
+			return getOutOfBusinessSince();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.MANUFACTURER__MANUFACTURER_NAME:
+			setManufacturerName((String) newValue);
+			return;
+		case EnCompPackage.MANUFACTURER__COUNTRY:
+			setCountry((String) newValue);
+			return;
+		case EnCompPackage.MANUFACTURER__OUT_OF_BUSINESS_SINCE:
+			setOutOfBusinessSince((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.MANUFACTURER__MANUFACTURER_NAME:
+			setManufacturerName(MANUFACTURER_NAME_EDEFAULT);
+			return;
+		case EnCompPackage.MANUFACTURER__COUNTRY:
+			setCountry(COUNTRY_EDEFAULT);
+			return;
+		case EnCompPackage.MANUFACTURER__OUT_OF_BUSINESS_SINCE:
+			setOutOfBusinessSince(OUT_OF_BUSINESS_SINCE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.MANUFACTURER__MANUFACTURER_NAME:
+			return MANUFACTURER_NAME_EDEFAULT == null ? manufacturerName != null
+					: !MANUFACTURER_NAME_EDEFAULT.equals(manufacturerName);
+		case EnCompPackage.MANUFACTURER__COUNTRY:
+			return COUNTRY_EDEFAULT == null ? country != null : !COUNTRY_EDEFAULT.equals(country);
+		case EnCompPackage.MANUFACTURER__OUT_OF_BUSINESS_SINCE:
+			return outOfBusinessSince != OUT_OF_BUSINESS_SINCE_EDEFAULT;
+		}
+		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(" (manufacturerName: ");
+		result.append(manufacturerName);
+		result.append(", country: ");
+		result.append(country);
+		result.append(", outOfBusinessSince: ");
+		result.append(outOfBusinessSince);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ManufacturerImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/MaterialImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/MaterialImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..a90429049a9a05c8bdcf0f1a23b9c27eb6a83ecc
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/MaterialImpl.java
@@ -0,0 +1,226 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Material;
+import de.hftstuttgart.units.NullableQuantity;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Material</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.MaterialImpl#getThermalConductivity <em>Thermal Conductivity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.MaterialImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MaterialImpl extends MinimalEObjectImpl.Container implements Material {
+	/**
+	 * The default value of the '{@link #getThermalConductivity() <em>Thermal Conductivity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalConductivity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity THERMAL_CONDUCTIVITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), " W/(m*K)");
+
+	/**
+	 * The cached value of the '{@link #getThermalConductivity() <em>Thermal Conductivity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalConductivity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity thermalConductivity = THERMAL_CONDUCTIVITY_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;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaterialImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.MATERIAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getThermalConductivity() {
+		return thermalConductivity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThermalConductivity(NullableQuantity newThermalConductivity) {
+		NullableQuantity oldThermalConductivity = thermalConductivity;
+		thermalConductivity = newThermalConductivity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MATERIAL__THERMAL_CONDUCTIVITY,
+					oldThermalConductivity, thermalConductivity));
+	}
+
+	/**
+	 * <!-- 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, EnCompPackage.MATERIAL__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.MATERIAL__THERMAL_CONDUCTIVITY:
+			return getThermalConductivity();
+		case EnCompPackage.MATERIAL__NAME:
+			return getName();
+		}
+		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 EnCompPackage.MATERIAL__THERMAL_CONDUCTIVITY:
+			setThermalConductivity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.MATERIAL__NAME:
+			setName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.MATERIAL__THERMAL_CONDUCTIVITY:
+			setThermalConductivity(THERMAL_CONDUCTIVITY_EDEFAULT);
+			return;
+		case EnCompPackage.MATERIAL__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.MATERIAL__THERMAL_CONDUCTIVITY:
+			return THERMAL_CONDUCTIVITY_EDEFAULT == null ? thermalConductivity != null
+					: !THERMAL_CONDUCTIVITY_EDEFAULT.equals(thermalConductivity);
+		case EnCompPackage.MATERIAL__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		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(" (thermalConductivity: ");
+		result.append(thermalConductivity);
+		result.append(", name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //MaterialImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/MediumImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/MediumImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..128e58c5bac907f0d38727ed32add5b748cd9d1b
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/MediumImpl.java
@@ -0,0 +1,400 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Medium;
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Medium</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.MediumImpl#getDensity <em>Density</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.MediumImpl#getHeatCapacity <em>Heat Capacity</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.MediumImpl#getEvaporationTemperature <em>Evaporation Temperature</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.MediumImpl#getMeltingTemperature <em>Melting Temperature</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.MediumImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MediumImpl extends MinimalEObjectImpl.Container implements Medium {
+	/**
+	 * The default value of the '{@link #getDensity() <em>Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity DENSITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "g/cm\u00b3");
+
+	/**
+	 * The cached value of the '{@link #getDensity() <em>Density</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDensity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity density = DENSITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getHeatCapacity() <em>Heat Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatCapacity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity HEAT_CAPACITY_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kJ/(kg*K)");
+
+	/**
+	 * The cached value of the '{@link #getHeatCapacity() <em>Heat Capacity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeatCapacity()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity heatCapacity = HEAT_CAPACITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEvaporationTemperature() <em>Evaporation Temperature</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvaporationTemperature()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity EVAPORATION_TEMPERATURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "\u00b0C");
+
+	/**
+	 * The cached value of the '{@link #getEvaporationTemperature() <em>Evaporation Temperature</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvaporationTemperature()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity evaporationTemperature = EVAPORATION_TEMPERATURE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMeltingTemperature() <em>Melting Temperature</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMeltingTemperature()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MELTING_TEMPERATURE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "\u00b0C");
+
+	/**
+	 * The cached value of the '{@link #getMeltingTemperature() <em>Melting Temperature</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMeltingTemperature()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity meltingTemperature = MELTING_TEMPERATURE_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;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MediumImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.MEDIUM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getDensity() {
+		return density;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDensity(NullableQuantity newDensity) {
+		NullableQuantity oldDensity = density;
+		density = newDensity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MEDIUM__DENSITY, oldDensity, density));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getHeatCapacity() {
+		return heatCapacity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHeatCapacity(NullableQuantity newHeatCapacity) {
+		NullableQuantity oldHeatCapacity = heatCapacity;
+		heatCapacity = newHeatCapacity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MEDIUM__HEAT_CAPACITY, oldHeatCapacity,
+					heatCapacity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getEvaporationTemperature() {
+		return evaporationTemperature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEvaporationTemperature(NullableQuantity newEvaporationTemperature) {
+		NullableQuantity oldEvaporationTemperature = evaporationTemperature;
+		evaporationTemperature = newEvaporationTemperature;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MEDIUM__EVAPORATION_TEMPERATURE,
+					oldEvaporationTemperature, evaporationTemperature));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMeltingTemperature() {
+		return meltingTemperature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMeltingTemperature(NullableQuantity newMeltingTemperature) {
+		NullableQuantity oldMeltingTemperature = meltingTemperature;
+		meltingTemperature = newMeltingTemperature;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.MEDIUM__MELTING_TEMPERATURE,
+					oldMeltingTemperature, meltingTemperature));
+	}
+
+	/**
+	 * <!-- 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, EnCompPackage.MEDIUM__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.MEDIUM__DENSITY:
+			return getDensity();
+		case EnCompPackage.MEDIUM__HEAT_CAPACITY:
+			return getHeatCapacity();
+		case EnCompPackage.MEDIUM__EVAPORATION_TEMPERATURE:
+			return getEvaporationTemperature();
+		case EnCompPackage.MEDIUM__MELTING_TEMPERATURE:
+			return getMeltingTemperature();
+		case EnCompPackage.MEDIUM__NAME:
+			return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.MEDIUM__DENSITY:
+			setDensity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.MEDIUM__HEAT_CAPACITY:
+			setHeatCapacity((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.MEDIUM__EVAPORATION_TEMPERATURE:
+			setEvaporationTemperature((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.MEDIUM__MELTING_TEMPERATURE:
+			setMeltingTemperature((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.MEDIUM__NAME:
+			setName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.MEDIUM__DENSITY:
+			setDensity(DENSITY_EDEFAULT);
+			return;
+		case EnCompPackage.MEDIUM__HEAT_CAPACITY:
+			setHeatCapacity(HEAT_CAPACITY_EDEFAULT);
+			return;
+		case EnCompPackage.MEDIUM__EVAPORATION_TEMPERATURE:
+			setEvaporationTemperature(EVAPORATION_TEMPERATURE_EDEFAULT);
+			return;
+		case EnCompPackage.MEDIUM__MELTING_TEMPERATURE:
+			setMeltingTemperature(MELTING_TEMPERATURE_EDEFAULT);
+			return;
+		case EnCompPackage.MEDIUM__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.MEDIUM__DENSITY:
+			return DENSITY_EDEFAULT == null ? density != null : !DENSITY_EDEFAULT.equals(density);
+		case EnCompPackage.MEDIUM__HEAT_CAPACITY:
+			return HEAT_CAPACITY_EDEFAULT == null ? heatCapacity != null : !HEAT_CAPACITY_EDEFAULT.equals(heatCapacity);
+		case EnCompPackage.MEDIUM__EVAPORATION_TEMPERATURE:
+			return EVAPORATION_TEMPERATURE_EDEFAULT == null ? evaporationTemperature != null
+					: !EVAPORATION_TEMPERATURE_EDEFAULT.equals(evaporationTemperature);
+		case EnCompPackage.MEDIUM__MELTING_TEMPERATURE:
+			return MELTING_TEMPERATURE_EDEFAULT == null ? meltingTemperature != null
+					: !MELTING_TEMPERATURE_EDEFAULT.equals(meltingTemperature);
+		case EnCompPackage.MEDIUM__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		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(" (density: ");
+		result.append(density);
+		result.append(", heatCapacity: ");
+		result.append(heatCapacity);
+		result.append(", evaporationTemperature: ");
+		result.append(evaporationTemperature);
+		result.append(", meltingTemperature: ");
+		result.append(meltingTemperature);
+		result.append(", name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //MediumImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PhotovoltaicModuleImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PhotovoltaicModuleImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..588c64bc624c63db0229e1cd1da54c3c14f196b5
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PhotovoltaicModuleImpl.java
@@ -0,0 +1,460 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PhotovoltaicModule;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Photovoltaic Module</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl#getCellType <em>Cell Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl#getNominalPower <em>Nominal Power</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl#getMppVoltage <em>Mpp Voltage</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl#getMppCurrent <em>Mpp Current</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl#getNominalEfficiency <em>Nominal Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PhotovoltaicModuleImpl#getModuleArea <em>Module Area</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PhotovoltaicModuleImpl extends EnergyComponentImpl implements PhotovoltaicModule {
+	/**
+	 * The default value of the '{@link #getCellType() <em>Cell Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Enumerator CELL_TYPE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getCellType() <em>Cell Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellType()
+	 * @generated
+	 * @ordered
+	 */
+	protected Enumerator cellType = CELL_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNominalPower() <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity NOMINAL_POWER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "W");
+
+	/**
+	 * The cached value of the '{@link #getNominalPower() <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity nominalPower = NOMINAL_POWER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMppVoltage() <em>Mpp Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMppVoltage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MPP_VOLTAGE_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "V");
+
+	/**
+	 * The cached value of the '{@link #getMppVoltage() <em>Mpp Voltage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMppVoltage()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity mppVoltage = MPP_VOLTAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMppCurrent() <em>Mpp Current</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMppCurrent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MPP_CURRENT_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "A");
+
+	/**
+	 * The cached value of the '{@link #getMppCurrent() <em>Mpp Current</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMppCurrent()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity mppCurrent = MPP_CURRENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNominalEfficiency() <em>Nominal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double NOMINAL_EFFICIENCY_EDEFAULT = 0.18;
+
+	/**
+	 * The cached value of the '{@link #getNominalEfficiency() <em>Nominal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double nominalEfficiency = NOMINAL_EFFICIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getModuleArea() <em>Module Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModuleArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MODULE_AREA_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "m\u00b2");
+
+	/**
+	 * The cached value of the '{@link #getModuleArea() <em>Module Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModuleArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity moduleArea = MODULE_AREA_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PhotovoltaicModuleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.PHOTOVOLTAIC_MODULE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Enumerator getCellType() {
+		return cellType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCellType(Enumerator newCellType) {
+		Enumerator oldCellType = cellType;
+		cellType = newCellType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.PHOTOVOLTAIC_MODULE__CELL_TYPE,
+					oldCellType, cellType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getNominalPower() {
+		return nominalPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNominalPower(NullableQuantity newNominalPower) {
+		NullableQuantity oldNominalPower = nominalPower;
+		nominalPower = newNominalPower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_POWER,
+					oldNominalPower, nominalPower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMppVoltage() {
+		return mppVoltage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMppVoltage(NullableQuantity newMppVoltage) {
+		NullableQuantity oldMppVoltage = mppVoltage;
+		mppVoltage = newMppVoltage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_VOLTAGE,
+					oldMppVoltage, mppVoltage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMppCurrent() {
+		return mppCurrent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMppCurrent(NullableQuantity newMppCurrent) {
+		NullableQuantity oldMppCurrent = mppCurrent;
+		mppCurrent = newMppCurrent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_CURRENT,
+					oldMppCurrent, mppCurrent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getNominalEfficiency() {
+		return nominalEfficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNominalEfficiency(double newNominalEfficiency) {
+		double oldNominalEfficiency = nominalEfficiency;
+		nominalEfficiency = newNominalEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY,
+					oldNominalEfficiency, nominalEfficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getModuleArea() {
+		return moduleArea;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setModuleArea(NullableQuantity newModuleArea) {
+		NullableQuantity oldModuleArea = moduleArea;
+		moduleArea = newModuleArea;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.PHOTOVOLTAIC_MODULE__MODULE_AREA,
+					oldModuleArea, moduleArea));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__CELL_TYPE:
+			return getCellType();
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_POWER:
+			return getNominalPower();
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_VOLTAGE:
+			return getMppVoltage();
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_CURRENT:
+			return getMppCurrent();
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY:
+			return getNominalEfficiency();
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MODULE_AREA:
+			return getModuleArea();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__CELL_TYPE:
+			setCellType((Enumerator) newValue);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_POWER:
+			setNominalPower((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_VOLTAGE:
+			setMppVoltage((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_CURRENT:
+			setMppCurrent((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY:
+			setNominalEfficiency((Double) newValue);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MODULE_AREA:
+			setModuleArea((NullableQuantity) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__CELL_TYPE:
+			setCellType(CELL_TYPE_EDEFAULT);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_POWER:
+			setNominalPower(NOMINAL_POWER_EDEFAULT);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_VOLTAGE:
+			setMppVoltage(MPP_VOLTAGE_EDEFAULT);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_CURRENT:
+			setMppCurrent(MPP_CURRENT_EDEFAULT);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY:
+			setNominalEfficiency(NOMINAL_EFFICIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MODULE_AREA:
+			setModuleArea(MODULE_AREA_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__CELL_TYPE:
+			return CELL_TYPE_EDEFAULT == null ? cellType != null : !CELL_TYPE_EDEFAULT.equals(cellType);
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_POWER:
+			return NOMINAL_POWER_EDEFAULT == null ? nominalPower != null : !NOMINAL_POWER_EDEFAULT.equals(nominalPower);
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_VOLTAGE:
+			return MPP_VOLTAGE_EDEFAULT == null ? mppVoltage != null : !MPP_VOLTAGE_EDEFAULT.equals(mppVoltage);
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MPP_CURRENT:
+			return MPP_CURRENT_EDEFAULT == null ? mppCurrent != null : !MPP_CURRENT_EDEFAULT.equals(mppCurrent);
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__NOMINAL_EFFICIENCY:
+			return nominalEfficiency != NOMINAL_EFFICIENCY_EDEFAULT;
+		case EnCompPackage.PHOTOVOLTAIC_MODULE__MODULE_AREA:
+			return MODULE_AREA_EDEFAULT == null ? moduleArea != null : !MODULE_AREA_EDEFAULT.equals(moduleArea);
+		}
+		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(" (cellType: ");
+		result.append(cellType);
+		result.append(", nominalPower: ");
+		result.append(nominalPower);
+		result.append(", mppVoltage: ");
+		result.append(mppVoltage);
+		result.append(", mppCurrent: ");
+		result.append(mppCurrent);
+		result.append(", nominalEfficiency: ");
+		result.append(nominalEfficiency);
+		result.append(", moduleArea: ");
+		result.append(moduleArea);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PhotovoltaicModuleImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PolynomialCharacteristicImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PolynomialCharacteristicImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6ef40afbacea44d643060cd56145355506c6b57
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PolynomialCharacteristicImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PolynomialCharacteristic;
+import de.hftstuttgart.energycomponents.PolynomialFunction;
+
+import java.util.Collection;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Polynomial Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PolynomialCharacteristicImpl#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PolynomialCharacteristicImpl extends CharacteristicImpl implements PolynomialCharacteristic {
+	/**
+	 * The cached value of the '{@link #getFunctions() <em>Functions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunctions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PolynomialFunction> functions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PolynomialCharacteristicImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.POLYNOMIAL_CHARACTERISTIC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<PolynomialFunction> getFunctions() {
+		if (functions == null) {
+			functions = new EObjectContainmentEList<PolynomialFunction>(PolynomialFunction.class, this,
+					EnCompPackage.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS);
+		}
+		return functions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS:
+			return ((InternalEList<?>) getFunctions()).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 EnCompPackage.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS:
+			return getFunctions();
+		}
+		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 EnCompPackage.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			getFunctions().addAll((Collection<? extends PolynomialFunction>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POLYNOMIAL_CHARACTERISTIC__FUNCTIONS:
+			return functions != null && !functions.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PolynomialCharacteristicImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PolynomialFunctionImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PolynomialFunctionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..588fac23df9d16b9990d5b9adb01743fc9c21b2e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PolynomialFunctionImpl.java
@@ -0,0 +1,365 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PolynomialFunction;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+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>Polynomial Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl#getParameterA <em>Parameter A</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl#getParameterB <em>Parameter B</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PolynomialFunctionImpl#getParameterC <em>Parameter C</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PolynomialFunctionImpl extends MinimalEObjectImpl.Container implements PolynomialFunction {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterA() <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterA()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_A_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterA() <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterA()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterA = PARAMETER_A_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterB() <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterB()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_B_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterB() <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterB()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterB = PARAMETER_B_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterC() <em>Parameter C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterC()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_C_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterC() <em>Parameter C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterC()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterC = PARAMETER_C_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PolynomialFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.POLYNOMIAL_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.POLYNOMIAL_FUNCTION__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterA() {
+		return parameterA;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterA(double newParameterA) {
+		double oldParameterA = parameterA;
+		parameterA = newParameterA;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_A,
+					oldParameterA, parameterA));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterB() {
+		return parameterB;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterB(double newParameterB) {
+		double oldParameterB = parameterB;
+		parameterB = newParameterB;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_B,
+					oldParameterB, parameterB));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterC() {
+		return parameterC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterC(double newParameterC) {
+		double oldParameterC = parameterC;
+		parameterC = newParameterC;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_C,
+					oldParameterC, parameterC));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double polynomialfunction(final double x) {
+		return getParameterA() * Math.pow(x, 2) + getParameterB() * x + getParameterC();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.POLYNOMIAL_FUNCTION__KEY:
+			return getKey();
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_A:
+			return getParameterA();
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_B:
+			return getParameterB();
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_C:
+			return getParameterC();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.POLYNOMIAL_FUNCTION__KEY:
+			setKey((String) newValue);
+			return;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_A:
+			setParameterA((Double) newValue);
+			return;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_B:
+			setParameterB((Double) newValue);
+			return;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_C:
+			setParameterC((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POLYNOMIAL_FUNCTION__KEY:
+			setKey(KEY_EDEFAULT);
+			return;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_A:
+			setParameterA(PARAMETER_A_EDEFAULT);
+			return;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_B:
+			setParameterB(PARAMETER_B_EDEFAULT);
+			return;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_C:
+			setParameterC(PARAMETER_C_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POLYNOMIAL_FUNCTION__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_A:
+			return parameterA != PARAMETER_A_EDEFAULT;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_B:
+			return parameterB != PARAMETER_B_EDEFAULT;
+		case EnCompPackage.POLYNOMIAL_FUNCTION__PARAMETER_C:
+			return parameterC != PARAMETER_C_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case EnCompPackage.POLYNOMIAL_FUNCTION___POLYNOMIALFUNCTION__DOUBLE:
+			return polynomialfunction((Double) arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(", parameterA: ");
+		result.append(parameterA);
+		result.append(", parameterB: ");
+		result.append(parameterB);
+		result.append(", parameterC: ");
+		result.append(parameterC);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PolynomialFunctionImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PowerCharacteristicImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PowerCharacteristicImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..59f479dfba9d8c75f2013b1740daec7db26b24c5
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PowerCharacteristicImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PowerCharacteristic;
+import de.hftstuttgart.energycomponents.PowerFunction;
+
+import java.util.Collection;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Power Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PowerCharacteristicImpl#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PowerCharacteristicImpl extends CharacteristicImpl implements PowerCharacteristic {
+	/**
+	 * The cached value of the '{@link #getFunctions() <em>Functions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunctions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PowerFunction> functions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PowerCharacteristicImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.POWER_CHARACTERISTIC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<PowerFunction> getFunctions() {
+		if (functions == null) {
+			functions = new EObjectContainmentEList<PowerFunction>(PowerFunction.class, this,
+					EnCompPackage.POWER_CHARACTERISTIC__FUNCTIONS);
+		}
+		return functions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.POWER_CHARACTERISTIC__FUNCTIONS:
+			return ((InternalEList<?>) getFunctions()).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 EnCompPackage.POWER_CHARACTERISTIC__FUNCTIONS:
+			return getFunctions();
+		}
+		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 EnCompPackage.POWER_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			getFunctions().addAll((Collection<? extends PowerFunction>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POWER_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POWER_CHARACTERISTIC__FUNCTIONS:
+			return functions != null && !functions.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PowerCharacteristicImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PowerFunctionImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PowerFunctionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ec30fa82b043a708c969fa6b63ddc4d5b3ea55ff
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/PowerFunctionImpl.java
@@ -0,0 +1,308 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.PowerFunction;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+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>Power Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PowerFunctionImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PowerFunctionImpl#getParameterA <em>Parameter A</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.PowerFunctionImpl#getParameterB <em>Parameter B</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PowerFunctionImpl extends MinimalEObjectImpl.Container implements PowerFunction {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterA() <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterA()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_A_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterA() <em>Parameter A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterA()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterA = PARAMETER_A_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getParameterB() <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterB()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double PARAMETER_B_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getParameterB() <em>Parameter B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterB()
+	 * @generated
+	 * @ordered
+	 */
+	protected double parameterB = PARAMETER_B_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PowerFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.POWER_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.POWER_FUNCTION__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterA() {
+		return parameterA;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterA(double newParameterA) {
+		double oldParameterA = parameterA;
+		parameterA = newParameterA;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.POWER_FUNCTION__PARAMETER_A,
+					oldParameterA, parameterA));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getParameterB() {
+		return parameterB;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParameterB(double newParameterB) {
+		double oldParameterB = parameterB;
+		parameterB = newParameterB;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.POWER_FUNCTION__PARAMETER_B,
+					oldParameterB, parameterB));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double powerfunction(final double x) {
+		return getParameterA() * Math.pow(x, getParameterB());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.POWER_FUNCTION__KEY:
+			return getKey();
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_A:
+			return getParameterA();
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_B:
+			return getParameterB();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.POWER_FUNCTION__KEY:
+			setKey((String) newValue);
+			return;
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_A:
+			setParameterA((Double) newValue);
+			return;
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_B:
+			setParameterB((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POWER_FUNCTION__KEY:
+			setKey(KEY_EDEFAULT);
+			return;
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_A:
+			setParameterA(PARAMETER_A_EDEFAULT);
+			return;
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_B:
+			setParameterB(PARAMETER_B_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.POWER_FUNCTION__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_A:
+			return parameterA != PARAMETER_A_EDEFAULT;
+		case EnCompPackage.POWER_FUNCTION__PARAMETER_B:
+			return parameterB != PARAMETER_B_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case EnCompPackage.POWER_FUNCTION___POWERFUNCTION__DOUBLE:
+			return powerfunction((Double) arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(", parameterA: ");
+		result.append(parameterA);
+		result.append(", parameterB: ");
+		result.append(parameterB);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PowerFunctionImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/SolarThermalCollectorImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/SolarThermalCollectorImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..8539aaacb65fbbb3b75f9da5bddd8d4afc1c74b6
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/SolarThermalCollectorImpl.java
@@ -0,0 +1,402 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.CollectorTypes;
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.SolarThermalCollector;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Solar Thermal Collector</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl#getCollectorType <em>Collector Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl#getApertureArea <em>Aperture Area</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl#getOpticalEfficiency <em>Optical Efficiency</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl#getLinearHeatLossCoefficient <em>Linear Heat Loss Coefficient</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.SolarThermalCollectorImpl#getQuadraticalHeatLossCoefficient <em>Quadratical Heat Loss Coefficient</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SolarThermalCollectorImpl extends EnergyComponentImpl implements SolarThermalCollector {
+	/**
+	 * The default value of the '{@link #getCollectorType() <em>Collector Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCollectorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CollectorTypes COLLECTOR_TYPE_EDEFAULT = CollectorTypes.FLAT_PLANE_COLLECTOR;
+
+	/**
+	 * The cached value of the '{@link #getCollectorType() <em>Collector Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCollectorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected CollectorTypes collectorType = COLLECTOR_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getApertureArea() <em>Aperture Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getApertureArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity APERTURE_AREA_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "m\u00b2");
+
+	/**
+	 * The cached value of the '{@link #getApertureArea() <em>Aperture Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getApertureArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity apertureArea = APERTURE_AREA_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOpticalEfficiency() <em>Optical Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOpticalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double OPTICAL_EFFICIENCY_EDEFAULT = 0.77;
+
+	/**
+	 * The cached value of the '{@link #getOpticalEfficiency() <em>Optical Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOpticalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double opticalEfficiency = OPTICAL_EFFICIENCY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLinearHeatLossCoefficient() <em>Linear Heat Loss Coefficient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLinearHeatLossCoefficient()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double LINEAR_HEAT_LOSS_COEFFICIENT_EDEFAULT = 3.2;
+
+	/**
+	 * The cached value of the '{@link #getLinearHeatLossCoefficient() <em>Linear Heat Loss Coefficient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLinearHeatLossCoefficient()
+	 * @generated
+	 * @ordered
+	 */
+	protected double linearHeatLossCoefficient = LINEAR_HEAT_LOSS_COEFFICIENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getQuadraticalHeatLossCoefficient() <em>Quadratical Heat Loss Coefficient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getQuadraticalHeatLossCoefficient()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double QUADRATICAL_HEAT_LOSS_COEFFICIENT_EDEFAULT = 0.01;
+
+	/**
+	 * The cached value of the '{@link #getQuadraticalHeatLossCoefficient() <em>Quadratical Heat Loss Coefficient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getQuadraticalHeatLossCoefficient()
+	 * @generated
+	 * @ordered
+	 */
+	protected double quadraticalHeatLossCoefficient = QUADRATICAL_HEAT_LOSS_COEFFICIENT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SolarThermalCollectorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.SOLAR_THERMAL_COLLECTOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CollectorTypes getCollectorType() {
+		return collectorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCollectorType(CollectorTypes newCollectorType) {
+		CollectorTypes oldCollectorType = collectorType;
+		collectorType = newCollectorType == null ? COLLECTOR_TYPE_EDEFAULT : newCollectorType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE,
+					oldCollectorType, collectorType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getApertureArea() {
+		return apertureArea;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setApertureArea(NullableQuantity newApertureArea) {
+		NullableQuantity oldApertureArea = apertureArea;
+		apertureArea = newApertureArea;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.SOLAR_THERMAL_COLLECTOR__APERTURE_AREA,
+					oldApertureArea, apertureArea));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getOpticalEfficiency() {
+		return opticalEfficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOpticalEfficiency(double newOpticalEfficiency) {
+		double oldOpticalEfficiency = opticalEfficiency;
+		opticalEfficiency = newOpticalEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY, oldOpticalEfficiency,
+					opticalEfficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getLinearHeatLossCoefficient() {
+		return linearHeatLossCoefficient;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLinearHeatLossCoefficient(double newLinearHeatLossCoefficient) {
+		double oldLinearHeatLossCoefficient = linearHeatLossCoefficient;
+		linearHeatLossCoefficient = newLinearHeatLossCoefficient;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT, oldLinearHeatLossCoefficient,
+					linearHeatLossCoefficient));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getQuadraticalHeatLossCoefficient() {
+		return quadraticalHeatLossCoefficient;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setQuadraticalHeatLossCoefficient(double newQuadraticalHeatLossCoefficient) {
+		double oldQuadraticalHeatLossCoefficient = quadraticalHeatLossCoefficient;
+		quadraticalHeatLossCoefficient = newQuadraticalHeatLossCoefficient;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT,
+					oldQuadraticalHeatLossCoefficient, quadraticalHeatLossCoefficient));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE:
+			return getCollectorType();
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__APERTURE_AREA:
+			return getApertureArea();
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY:
+			return getOpticalEfficiency();
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT:
+			return getLinearHeatLossCoefficient();
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT:
+			return getQuadraticalHeatLossCoefficient();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE:
+			setCollectorType((CollectorTypes) newValue);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__APERTURE_AREA:
+			setApertureArea((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY:
+			setOpticalEfficiency((Double) newValue);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT:
+			setLinearHeatLossCoefficient((Double) newValue);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT:
+			setQuadraticalHeatLossCoefficient((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE:
+			setCollectorType(COLLECTOR_TYPE_EDEFAULT);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__APERTURE_AREA:
+			setApertureArea(APERTURE_AREA_EDEFAULT);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY:
+			setOpticalEfficiency(OPTICAL_EFFICIENCY_EDEFAULT);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT:
+			setLinearHeatLossCoefficient(LINEAR_HEAT_LOSS_COEFFICIENT_EDEFAULT);
+			return;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT:
+			setQuadraticalHeatLossCoefficient(QUADRATICAL_HEAT_LOSS_COEFFICIENT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__COLLECTOR_TYPE:
+			return collectorType != COLLECTOR_TYPE_EDEFAULT;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__APERTURE_AREA:
+			return APERTURE_AREA_EDEFAULT == null ? apertureArea != null : !APERTURE_AREA_EDEFAULT.equals(apertureArea);
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__OPTICAL_EFFICIENCY:
+			return opticalEfficiency != OPTICAL_EFFICIENCY_EDEFAULT;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__LINEAR_HEAT_LOSS_COEFFICIENT:
+			return linearHeatLossCoefficient != LINEAR_HEAT_LOSS_COEFFICIENT_EDEFAULT;
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR__QUADRATICAL_HEAT_LOSS_COEFFICIENT:
+			return quadraticalHeatLossCoefficient != QUADRATICAL_HEAT_LOSS_COEFFICIENT_EDEFAULT;
+		}
+		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(" (collectorType: ");
+		result.append(collectorType);
+		result.append(", apertureArea: ");
+		result.append(apertureArea);
+		result.append(", opticalEfficiency: ");
+		result.append(opticalEfficiency);
+		result.append(", linearHeatLossCoefficient: ");
+		result.append(linearHeatLossCoefficient);
+		result.append(", quadraticalHeatLossCoefficient: ");
+		result.append(quadraticalHeatLossCoefficient);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SolarThermalCollectorImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/TableCharacteristicImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/TableCharacteristicImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..67a2ccd9d452b2e8a83c5e5b93f1ca75fae7a45a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/TableCharacteristicImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.TableCharacteristic;
+import de.hftstuttgart.energycomponents.TableFunction;
+
+import java.util.Collection;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table Characteristic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.TableCharacteristicImpl#getFunctions <em>Functions</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TableCharacteristicImpl extends CharacteristicImpl implements TableCharacteristic {
+	/**
+	 * The cached value of the '{@link #getFunctions() <em>Functions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunctions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<TableFunction> functions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableCharacteristicImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.TABLE_CHARACTERISTIC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<TableFunction> getFunctions() {
+		if (functions == null) {
+			functions = new EObjectContainmentEList<TableFunction>(TableFunction.class, this,
+					EnCompPackage.TABLE_CHARACTERISTIC__FUNCTIONS);
+		}
+		return functions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.TABLE_CHARACTERISTIC__FUNCTIONS:
+			return ((InternalEList<?>) getFunctions()).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 EnCompPackage.TABLE_CHARACTERISTIC__FUNCTIONS:
+			return getFunctions();
+		}
+		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 EnCompPackage.TABLE_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			getFunctions().addAll((Collection<? extends TableFunction>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.TABLE_CHARACTERISTIC__FUNCTIONS:
+			getFunctions().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.TABLE_CHARACTERISTIC__FUNCTIONS:
+			return functions != null && !functions.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TableCharacteristicImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/TableFunctionImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/TableFunctionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd2e9f6fb41d06a24ddf79310896656cbfef4509
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/TableFunctionImpl.java
@@ -0,0 +1,227 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.DataPoint;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.TableFunction;
+
+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>Table Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.TableFunctionImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.TableFunctionImpl#getDatapoints <em>Datapoints</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TableFunctionImpl extends MinimalEObjectImpl.Container implements TableFunction {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDatapoints() <em>Datapoints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatapoints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DataPoint> datapoints;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.TABLE_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.TABLE_FUNCTION__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<DataPoint> getDatapoints() {
+		if (datapoints == null) {
+			datapoints = new EObjectContainmentEList<DataPoint>(DataPoint.class, this,
+					EnCompPackage.TABLE_FUNCTION__DATAPOINTS);
+		}
+		return datapoints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case EnCompPackage.TABLE_FUNCTION__DATAPOINTS:
+			return ((InternalEList<?>) getDatapoints()).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 EnCompPackage.TABLE_FUNCTION__KEY:
+			return getKey();
+		case EnCompPackage.TABLE_FUNCTION__DATAPOINTS:
+			return getDatapoints();
+		}
+		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 EnCompPackage.TABLE_FUNCTION__KEY:
+			setKey((String) newValue);
+			return;
+		case EnCompPackage.TABLE_FUNCTION__DATAPOINTS:
+			getDatapoints().clear();
+			getDatapoints().addAll((Collection<? extends DataPoint>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.TABLE_FUNCTION__KEY:
+			setKey(KEY_EDEFAULT);
+			return;
+		case EnCompPackage.TABLE_FUNCTION__DATAPOINTS:
+			getDatapoints().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.TABLE_FUNCTION__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case EnCompPackage.TABLE_FUNCTION__DATAPOINTS:
+			return datapoints != null && !datapoints.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(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TableFunctionImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ThermalEnergyDeviceImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ThermalEnergyDeviceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6292a8c863602c623d4e59a02e18f075fc4eb73a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ThermalEnergyDeviceImpl.java
@@ -0,0 +1,286 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.FuelTypes;
+import de.hftstuttgart.energycomponents.ThermalEnergyDevice;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Thermal Energy Device</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalEnergyDeviceImpl#getInstalledThermalPower <em>Installed Thermal Power</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalEnergyDeviceImpl#getModulationRange <em>Modulation Range</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalEnergyDeviceImpl#getFuel <em>Fuel</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ThermalEnergyDeviceImpl extends EnergyComponentImpl implements ThermalEnergyDevice {
+	/**
+	 * The default value of the '{@link #getInstalledThermalPower() <em>Installed Thermal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInstalledThermalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity INSTALLED_THERMAL_POWER_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "kW");
+
+	/**
+	 * The cached value of the '{@link #getInstalledThermalPower() <em>Installed Thermal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInstalledThermalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity installedThermalPower = INSTALLED_THERMAL_POWER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getModulationRange() <em>Modulation Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModulationRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MODULATION_RANGE_EDEFAULT = 0.5;
+
+	/**
+	 * The cached value of the '{@link #getModulationRange() <em>Modulation Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModulationRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected double modulationRange = MODULATION_RANGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFuel() <em>Fuel</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFuel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final FuelTypes FUEL_EDEFAULT = FuelTypes.NATURAL_GAS;
+
+	/**
+	 * The cached value of the '{@link #getFuel() <em>Fuel</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFuel()
+	 * @generated
+	 * @ordered
+	 */
+	protected FuelTypes fuel = FUEL_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ThermalEnergyDeviceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.THERMAL_ENERGY_DEVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getInstalledThermalPower() {
+		return installedThermalPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInstalledThermalPower(NullableQuantity newInstalledThermalPower) {
+		NullableQuantity oldInstalledThermalPower = installedThermalPower;
+		installedThermalPower = newInstalledThermalPower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					EnCompPackage.THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER, oldInstalledThermalPower,
+					installedThermalPower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getModulationRange() {
+		return modulationRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setModulationRange(double newModulationRange) {
+		double oldModulationRange = modulationRange;
+		modulationRange = newModulationRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_ENERGY_DEVICE__MODULATION_RANGE,
+					oldModulationRange, modulationRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FuelTypes getFuel() {
+		return fuel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFuel(FuelTypes newFuel) {
+		FuelTypes oldFuel = fuel;
+		fuel = newFuel == null ? FUEL_EDEFAULT : newFuel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_ENERGY_DEVICE__FUEL, oldFuel,
+					fuel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			return getInstalledThermalPower();
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__MODULATION_RANGE:
+			return getModulationRange();
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__FUEL:
+			return getFuel();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			setInstalledThermalPower((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__MODULATION_RANGE:
+			setModulationRange((Double) newValue);
+			return;
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__FUEL:
+			setFuel((FuelTypes) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			setInstalledThermalPower(INSTALLED_THERMAL_POWER_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__MODULATION_RANGE:
+			setModulationRange(MODULATION_RANGE_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__FUEL:
+			setFuel(FUEL_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			return INSTALLED_THERMAL_POWER_EDEFAULT == null ? installedThermalPower != null
+					: !INSTALLED_THERMAL_POWER_EDEFAULT.equals(installedThermalPower);
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__MODULATION_RANGE:
+			return modulationRange != MODULATION_RANGE_EDEFAULT;
+		case EnCompPackage.THERMAL_ENERGY_DEVICE__FUEL:
+			return fuel != FUEL_EDEFAULT;
+		}
+		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(" (installedThermalPower: ");
+		result.append(installedThermalPower);
+		result.append(", modulationRange: ");
+		result.append(modulationRange);
+		result.append(", fuel: ");
+		result.append(fuel);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ThermalEnergyDeviceImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ThermalStorageImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ThermalStorageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..69908a6671a490a5139ac77ae29b8503bfe5785e
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/ThermalStorageImpl.java
@@ -0,0 +1,660 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompFactory;
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.Material;
+import de.hftstuttgart.energycomponents.Medium;
+import de.hftstuttgart.energycomponents.ThermalStorage;
+import de.hftstuttgart.energycomponents.ThermalStorageTypes;
+
+import de.hftstuttgart.units.NullableQuantity;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Thermal Storage</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getVolume <em>Volume</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getThermalStorageType <em>Thermal Storage Type</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getMaxTemp <em>Max Temp</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getTankThickness <em>Tank Thickness</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getInsulationThickness <em>Insulation Thickness</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getUsesMedium <em>Uses Medium</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getInsulationMaterial <em>Insulation Material</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getHeight <em>Height</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.impl.ThermalStorageImpl#getTankMaterial <em>Tank Material</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ThermalStorageImpl extends EnergyComponentImpl implements ThermalStorage {
+	/**
+	 * The default value of the '{@link #getVolume() <em>Volume</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVolume()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity VOLUME_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "5 m\u00b3");
+
+	/**
+	 * The cached value of the '{@link #getVolume() <em>Volume</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVolume()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity volume = VOLUME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getThermalStorageType() <em>Thermal Storage Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalStorageType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ThermalStorageTypes THERMAL_STORAGE_TYPE_EDEFAULT = ThermalStorageTypes.SENSIBLE;
+
+	/**
+	 * The cached value of the '{@link #getThermalStorageType() <em>Thermal Storage Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalStorageType()
+	 * @generated
+	 * @ordered
+	 */
+	protected ThermalStorageTypes thermalStorageType = THERMAL_STORAGE_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxTemp() <em>Max Temp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxTemp()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity MAX_TEMP_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "80 \u00b0C");
+
+	/**
+	 * The cached value of the '{@link #getMaxTemp() <em>Max Temp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxTemp()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity maxTemp = MAX_TEMP_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTankThickness() <em>Tank Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTankThickness()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity TANK_THICKNESS_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "10 mm ");
+
+	/**
+	 * The cached value of the '{@link #getTankThickness() <em>Tank Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTankThickness()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity tankThickness = TANK_THICKNESS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getInsulationThickness() <em>Insulation Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInsulationThickness()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity INSULATION_THICKNESS_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "100 mm");
+
+	/**
+	 * The cached value of the '{@link #getInsulationThickness() <em>Insulation Thickness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInsulationThickness()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity insulationThickness = INSULATION_THICKNESS_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getUsesMedium() <em>Uses Medium</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUsesMedium()
+	 * @generated
+	 * @ordered
+	 */
+	protected Medium usesMedium;
+
+	/**
+	 * The cached value of the '{@link #getInsulationMaterial() <em>Insulation Material</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInsulationMaterial()
+	 * @generated
+	 * @ordered
+	 */
+	protected Material insulationMaterial;
+
+	/**
+	 * The default value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final NullableQuantity HEIGHT_EDEFAULT = (NullableQuantity) EnCompFactory.eINSTANCE
+			.createFromString(EnCompPackage.eINSTANCE.getQuantityDouble(), "2 m");
+
+	/**
+	 * The cached value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected NullableQuantity height = HEIGHT_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getTankMaterial() <em>Tank Material</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTankMaterial()
+	 * @generated
+	 * @ordered
+	 */
+	protected Material tankMaterial;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ThermalStorageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.THERMAL_STORAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getVolume() {
+		return volume;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setVolume(NullableQuantity newVolume) {
+		NullableQuantity oldVolume = volume;
+		volume = newVolume;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__VOLUME, oldVolume,
+					volume));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ThermalStorageTypes getThermalStorageType() {
+		return thermalStorageType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThermalStorageType(ThermalStorageTypes newThermalStorageType) {
+		ThermalStorageTypes oldThermalStorageType = thermalStorageType;
+		thermalStorageType = newThermalStorageType == null ? THERMAL_STORAGE_TYPE_EDEFAULT : newThermalStorageType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__THERMAL_STORAGE_TYPE,
+					oldThermalStorageType, thermalStorageType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getMaxTemp() {
+		return maxTemp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaxTemp(NullableQuantity newMaxTemp) {
+		NullableQuantity oldMaxTemp = maxTemp;
+		maxTemp = newMaxTemp;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__MAX_TEMP, oldMaxTemp,
+					maxTemp));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getTankThickness() {
+		return tankThickness;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setTankThickness(NullableQuantity newTankThickness) {
+		NullableQuantity oldTankThickness = tankThickness;
+		tankThickness = newTankThickness;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__TANK_THICKNESS,
+					oldTankThickness, tankThickness));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getInsulationThickness() {
+		return insulationThickness;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInsulationThickness(NullableQuantity newInsulationThickness) {
+		NullableQuantity oldInsulationThickness = insulationThickness;
+		insulationThickness = newInsulationThickness;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__INSULATION_THICKNESS,
+					oldInsulationThickness, insulationThickness));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Medium getUsesMedium() {
+		if (usesMedium != null && usesMedium.eIsProxy()) {
+			InternalEObject oldUsesMedium = (InternalEObject) usesMedium;
+			usesMedium = (Medium) eResolveProxy(oldUsesMedium);
+			if (usesMedium != oldUsesMedium) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							EnCompPackage.THERMAL_STORAGE__USES_MEDIUM, oldUsesMedium, usesMedium));
+			}
+		}
+		return usesMedium;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Medium basicGetUsesMedium() {
+		return usesMedium;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setUsesMedium(Medium newUsesMedium) {
+		Medium oldUsesMedium = usesMedium;
+		usesMedium = newUsesMedium;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__USES_MEDIUM,
+					oldUsesMedium, usesMedium));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Material getInsulationMaterial() {
+		if (insulationMaterial != null && insulationMaterial.eIsProxy()) {
+			InternalEObject oldInsulationMaterial = (InternalEObject) insulationMaterial;
+			insulationMaterial = (Material) eResolveProxy(oldInsulationMaterial);
+			if (insulationMaterial != oldInsulationMaterial) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							EnCompPackage.THERMAL_STORAGE__INSULATION_MATERIAL, oldInsulationMaterial,
+							insulationMaterial));
+			}
+		}
+		return insulationMaterial;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Material basicGetInsulationMaterial() {
+		return insulationMaterial;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInsulationMaterial(Material newInsulationMaterial) {
+		Material oldInsulationMaterial = insulationMaterial;
+		insulationMaterial = newInsulationMaterial;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__INSULATION_MATERIAL,
+					oldInsulationMaterial, insulationMaterial));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NullableQuantity getHeight() {
+		return height;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHeight(NullableQuantity newHeight) {
+		NullableQuantity oldHeight = height;
+		height = newHeight;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__HEIGHT, oldHeight,
+					height));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Material getTankMaterial() {
+		if (tankMaterial != null && tankMaterial.eIsProxy()) {
+			InternalEObject oldTankMaterial = (InternalEObject) tankMaterial;
+			tankMaterial = (Material) eResolveProxy(oldTankMaterial);
+			if (tankMaterial != oldTankMaterial) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							EnCompPackage.THERMAL_STORAGE__TANK_MATERIAL, oldTankMaterial, tankMaterial));
+			}
+		}
+		return tankMaterial;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Material basicGetTankMaterial() {
+		return tankMaterial;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setTankMaterial(Material newTankMaterial) {
+		Material oldTankMaterial = tankMaterial;
+		tankMaterial = newTankMaterial;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, EnCompPackage.THERMAL_STORAGE__TANK_MATERIAL,
+					oldTankMaterial, tankMaterial));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case EnCompPackage.THERMAL_STORAGE__VOLUME:
+			return getVolume();
+		case EnCompPackage.THERMAL_STORAGE__THERMAL_STORAGE_TYPE:
+			return getThermalStorageType();
+		case EnCompPackage.THERMAL_STORAGE__MAX_TEMP:
+			return getMaxTemp();
+		case EnCompPackage.THERMAL_STORAGE__TANK_THICKNESS:
+			return getTankThickness();
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_THICKNESS:
+			return getInsulationThickness();
+		case EnCompPackage.THERMAL_STORAGE__USES_MEDIUM:
+			if (resolve)
+				return getUsesMedium();
+			return basicGetUsesMedium();
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_MATERIAL:
+			if (resolve)
+				return getInsulationMaterial();
+			return basicGetInsulationMaterial();
+		case EnCompPackage.THERMAL_STORAGE__HEIGHT:
+			return getHeight();
+		case EnCompPackage.THERMAL_STORAGE__TANK_MATERIAL:
+			if (resolve)
+				return getTankMaterial();
+			return basicGetTankMaterial();
+		}
+		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 EnCompPackage.THERMAL_STORAGE__VOLUME:
+			setVolume((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__THERMAL_STORAGE_TYPE:
+			setThermalStorageType((ThermalStorageTypes) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__MAX_TEMP:
+			setMaxTemp((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__TANK_THICKNESS:
+			setTankThickness((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_THICKNESS:
+			setInsulationThickness((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__USES_MEDIUM:
+			setUsesMedium((Medium) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_MATERIAL:
+			setInsulationMaterial((Material) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__HEIGHT:
+			setHeight((NullableQuantity) newValue);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__TANK_MATERIAL:
+			setTankMaterial((Material) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.THERMAL_STORAGE__VOLUME:
+			setVolume(VOLUME_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__THERMAL_STORAGE_TYPE:
+			setThermalStorageType(THERMAL_STORAGE_TYPE_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__MAX_TEMP:
+			setMaxTemp(MAX_TEMP_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__TANK_THICKNESS:
+			setTankThickness(TANK_THICKNESS_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_THICKNESS:
+			setInsulationThickness(INSULATION_THICKNESS_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__USES_MEDIUM:
+			setUsesMedium((Medium) null);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_MATERIAL:
+			setInsulationMaterial((Material) null);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__HEIGHT:
+			setHeight(HEIGHT_EDEFAULT);
+			return;
+		case EnCompPackage.THERMAL_STORAGE__TANK_MATERIAL:
+			setTankMaterial((Material) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case EnCompPackage.THERMAL_STORAGE__VOLUME:
+			return VOLUME_EDEFAULT == null ? volume != null : !VOLUME_EDEFAULT.equals(volume);
+		case EnCompPackage.THERMAL_STORAGE__THERMAL_STORAGE_TYPE:
+			return thermalStorageType != THERMAL_STORAGE_TYPE_EDEFAULT;
+		case EnCompPackage.THERMAL_STORAGE__MAX_TEMP:
+			return MAX_TEMP_EDEFAULT == null ? maxTemp != null : !MAX_TEMP_EDEFAULT.equals(maxTemp);
+		case EnCompPackage.THERMAL_STORAGE__TANK_THICKNESS:
+			return TANK_THICKNESS_EDEFAULT == null ? tankThickness != null
+					: !TANK_THICKNESS_EDEFAULT.equals(tankThickness);
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_THICKNESS:
+			return INSULATION_THICKNESS_EDEFAULT == null ? insulationThickness != null
+					: !INSULATION_THICKNESS_EDEFAULT.equals(insulationThickness);
+		case EnCompPackage.THERMAL_STORAGE__USES_MEDIUM:
+			return usesMedium != null;
+		case EnCompPackage.THERMAL_STORAGE__INSULATION_MATERIAL:
+			return insulationMaterial != null;
+		case EnCompPackage.THERMAL_STORAGE__HEIGHT:
+			return HEIGHT_EDEFAULT == null ? height != null : !HEIGHT_EDEFAULT.equals(height);
+		case EnCompPackage.THERMAL_STORAGE__TANK_MATERIAL:
+			return tankMaterial != null;
+		}
+		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(" (volume: ");
+		result.append(volume);
+		result.append(", thermalStorageType: ");
+		result.append(thermalStorageType);
+		result.append(", maxTemp: ");
+		result.append(maxTemp);
+		result.append(", tankThickness: ");
+		result.append(tankThickness);
+		result.append(", insulationThickness: ");
+		result.append(insulationThickness);
+		result.append(", height: ");
+		result.append(height);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ThermalStorageImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/WindTurbineImpl.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/WindTurbineImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f3e5064f3e3bbff7633aa253040ac546209379a
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/impl/WindTurbineImpl.java
@@ -0,0 +1,37 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.impl;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.energycomponents.WindTurbine;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Wind Turbine</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class WindTurbineImpl extends EnergyComponentImpl implements WindTurbine {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WindTurbineImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return EnCompPackage.Literals.WIND_TURBINE;
+	}
+
+} //WindTurbineImpl
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/otherCost.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/otherCost.java
new file mode 100644
index 0000000000000000000000000000000000000000..89de8c78d3da5abc3c94a4841c51b250ee07308b
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/otherCost.java
@@ -0,0 +1,77 @@
+/**
+ */
+package de.hftstuttgart.energycomponents;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>other Cost</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link de.hftstuttgart.energycomponents.otherCost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}</li>
+ *   <li>{@link de.hftstuttgart.energycomponents.otherCost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}</li>
+ * </ul>
+ *
+ * @see de.hftstuttgart.energycomponents.EnCompPackage#getotherCost()
+ * @model abstract="true"
+ * @generated
+ */
+public interface otherCost extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Administration And Other Cost Share</b></em>' attribute.
+	 * The default value is <code>"0.015"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share of investment cost
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Administration And Other Cost Share</em>' attribute.
+	 * @see #setAdministrationAndOtherCostShare(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getotherCost_AdministrationAndOtherCostShare()
+	 * @model default="0.015"
+	 * @generated
+	 */
+	double getAdministrationAndOtherCostShare();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.otherCost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Administration And Other Cost Share</em>' attribute.
+	 * @see #getAdministrationAndOtherCostShare()
+	 * @generated
+	 */
+	void setAdministrationAndOtherCostShare(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Maintenance Cost Share</b></em>' attribute.
+	 * The default value is <code>"0.015"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * share of investment cost
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Maintenance Cost Share</em>' attribute.
+	 * @see #setMaintenanceCostShare(double)
+	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getotherCost_MaintenanceCostShare()
+	 * @model default="0.015"
+	 * @generated
+	 */
+	double getMaintenanceCostShare();
+
+	/**
+	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.otherCost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Maintenance Cost Share</em>' attribute.
+	 * @see #getMaintenanceCostShare()
+	 * @generated
+	 */
+	void setMaintenanceCostShare(double value);
+
+} // otherCost
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/util/EnCompAdapterFactory.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/util/EnCompAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ede0fcfbc78074d45794aff1530085639507006
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/util/EnCompAdapterFactory.java
@@ -0,0 +1,879 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.util;
+
+import de.hftstuttgart.energycomponents.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage
+ * @generated
+ */
+public class EnCompAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static EnCompPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnCompAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = EnCompPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnCompSwitch<Adapter> modelSwitch = new EnCompSwitch<Adapter>() {
+		@Override
+		public Adapter caseEnergyComponent(EnergyComponent object) {
+			return createEnergyComponentAdapter();
+		}
+
+		@Override
+		public Adapter caseEnergyComponentsCatalog(EnergyComponentsCatalog object) {
+			return createEnergyComponentsCatalogAdapter();
+		}
+
+		@Override
+		public Adapter caseThermalStorage(ThermalStorage object) {
+			return createThermalStorageAdapter();
+		}
+
+		@Override
+		public Adapter caseElectricalStorage(ElectricalStorage object) {
+			return createElectricalStorageAdapter();
+		}
+
+		@Override
+		public Adapter caseCombinedHeatPower(CombinedHeatPower object) {
+			return createCombinedHeatPowerAdapter();
+		}
+
+		@Override
+		public Adapter caseHeatPump(HeatPump object) {
+			return createHeatPumpAdapter();
+		}
+
+		@Override
+		public Adapter caseBoiler(Boiler object) {
+			return createBoilerAdapter();
+		}
+
+		@Override
+		public Adapter caseSolarThermalCollector(SolarThermalCollector object) {
+			return createSolarThermalCollectorAdapter();
+		}
+
+		@Override
+		public Adapter caseElectrolyzer(Electrolyzer object) {
+			return createElectrolyzerAdapter();
+		}
+
+		@Override
+		public Adapter caseThermalEnergyDevice(ThermalEnergyDevice object) {
+			return createThermalEnergyDeviceAdapter();
+		}
+
+		@Override
+		public Adapter caseHydrogenCompressor(HydrogenCompressor object) {
+			return createHydrogenCompressorAdapter();
+		}
+
+		@Override
+		public Adapter caseHydrogenStorage(HydrogenStorage object) {
+			return createHydrogenStorageAdapter();
+		}
+
+		@Override
+		public Adapter caseFuelCell(FuelCell object) {
+			return createFuelCellAdapter();
+		}
+
+		@Override
+		public Adapter caseEnergyCarrier(EnergyCarrier object) {
+			return createEnergyCarrierAdapter();
+		}
+
+		@Override
+		public Adapter caseFossilFuel(FossilFuel object) {
+			return createFossilFuelAdapter();
+		}
+
+		@Override
+		public Adapter caseHydrogen(Hydrogen object) {
+			return createHydrogenAdapter();
+		}
+
+		@Override
+		public Adapter caseElectricity(Electricity object) {
+			return createElectricityAdapter();
+		}
+
+		@Override
+		public Adapter caseBioFuel(BioFuel object) {
+			return createBioFuelAdapter();
+		}
+
+		@Override
+		public Adapter caseFuel(Fuel object) {
+			return createFuelAdapter();
+		}
+
+		@Override
+		public Adapter caseWindTurbine(WindTurbine object) {
+			return createWindTurbineAdapter();
+		}
+
+		@Override
+		public Adapter casePhotovoltaicModule(PhotovoltaicModule object) {
+			return createPhotovoltaicModuleAdapter();
+		}
+
+		@Override
+		public Adapter caseInverter(Inverter object) {
+			return createInverterAdapter();
+		}
+
+		@Override
+		public Adapter caseHeatExchanger(HeatExchanger object) {
+			return createHeatExchangerAdapter();
+		}
+
+		@Override
+		public Adapter caseGeothermalHeatExchanger(GeothermalHeatExchanger object) {
+			return createGeothermalHeatExchangerAdapter();
+		}
+
+		@Override
+		public Adapter caseMedium(Medium object) {
+			return createMediumAdapter();
+		}
+
+		@Override
+		public Adapter caseLinearFunction(LinearFunction object) {
+			return createLinearFunctionAdapter();
+		}
+
+		@Override
+		public Adapter caseDataPoint(DataPoint object) {
+			return createDataPointAdapter();
+		}
+
+		@Override
+		public Adapter caseTableFunction(TableFunction object) {
+			return createTableFunctionAdapter();
+		}
+
+		@Override
+		public Adapter caseExponentialFunction(ExponentialFunction object) {
+			return createExponentialFunctionAdapter();
+		}
+
+		@Override
+		public Adapter caseCharacteristic(Characteristic object) {
+			return createCharacteristicAdapter();
+		}
+
+		@Override
+		public Adapter caseTableCharacteristic(TableCharacteristic object) {
+			return createTableCharacteristicAdapter();
+		}
+
+		@Override
+		public Adapter caseLinearCharacteristic(LinearCharacteristic object) {
+			return createLinearCharacteristicAdapter();
+		}
+
+		@Override
+		public Adapter caseExponentionalCharacteristic(ExponentionalCharacteristic object) {
+			return createExponentionalCharacteristicAdapter();
+		}
+
+		@Override
+		public Adapter caseManufacturer(Manufacturer object) {
+			return createManufacturerAdapter();
+		}
+
+		@Override
+		public Adapter casePolynomialCharacteristic(PolynomialCharacteristic object) {
+			return createPolynomialCharacteristicAdapter();
+		}
+
+		@Override
+		public Adapter casePolynomialFunction(PolynomialFunction object) {
+			return createPolynomialFunctionAdapter();
+		}
+
+		@Override
+		public Adapter caseMaterial(Material object) {
+			return createMaterialAdapter();
+		}
+
+		@Override
+		public Adapter caseEnergyComponentsCostCatalog(EnergyComponentsCostCatalog object) {
+			return createEnergyComponentsCostCatalogAdapter();
+		}
+
+		@Override
+		public Adapter caseCost(Cost object) {
+			return createCostAdapter();
+		}
+
+		@Override
+		public Adapter casePowerCharacteristic(PowerCharacteristic object) {
+			return createPowerCharacteristicAdapter();
+		}
+
+		@Override
+		public Adapter casePowerFunction(PowerFunction object) {
+			return createPowerFunctionAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.EnergyComponent <em>Energy Component</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.energycomponents.EnergyComponent
+	 * @generated
+	 */
+	public Adapter createEnergyComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.EnergyComponentsCatalog <em>Energy Components Catalog</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.energycomponents.EnergyComponentsCatalog
+	 * @generated
+	 */
+	public Adapter createEnergyComponentsCatalogAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.ThermalStorage <em>Thermal Storage</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.energycomponents.ThermalStorage
+	 * @generated
+	 */
+	public Adapter createThermalStorageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.ElectricalStorage <em>Electrical Storage</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.energycomponents.ElectricalStorage
+	 * @generated
+	 */
+	public Adapter createElectricalStorageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.CombinedHeatPower <em>Combined Heat Power</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.energycomponents.CombinedHeatPower
+	 * @generated
+	 */
+	public Adapter createCombinedHeatPowerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.HeatPump <em>Heat Pump</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.energycomponents.HeatPump
+	 * @generated
+	 */
+	public Adapter createHeatPumpAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Boiler <em>Boiler</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.energycomponents.Boiler
+	 * @generated
+	 */
+	public Adapter createBoilerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.SolarThermalCollector <em>Solar Thermal Collector</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.energycomponents.SolarThermalCollector
+	 * @generated
+	 */
+	public Adapter createSolarThermalCollectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Electrolyzer <em>Electrolyzer</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.energycomponents.Electrolyzer
+	 * @generated
+	 */
+	public Adapter createElectrolyzerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.ThermalEnergyDevice <em>Thermal Energy Device</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.energycomponents.ThermalEnergyDevice
+	 * @generated
+	 */
+	public Adapter createThermalEnergyDeviceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.HydrogenCompressor <em>Hydrogen Compressor</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.energycomponents.HydrogenCompressor
+	 * @generated
+	 */
+	public Adapter createHydrogenCompressorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.HydrogenStorage <em>Hydrogen Storage</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.energycomponents.HydrogenStorage
+	 * @generated
+	 */
+	public Adapter createHydrogenStorageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.FuelCell <em>Fuel Cell</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.energycomponents.FuelCell
+	 * @generated
+	 */
+	public Adapter createFuelCellAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.EnergyCarrier <em>Energy Carrier</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.energycomponents.EnergyCarrier
+	 * @generated
+	 */
+	public Adapter createEnergyCarrierAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.FossilFuel <em>Fossil Fuel</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.energycomponents.FossilFuel
+	 * @generated
+	 */
+	public Adapter createFossilFuelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Hydrogen <em>Hydrogen</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.energycomponents.Hydrogen
+	 * @generated
+	 */
+	public Adapter createHydrogenAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Electricity <em>Electricity</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.energycomponents.Electricity
+	 * @generated
+	 */
+	public Adapter createElectricityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.BioFuel <em>Bio Fuel</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.energycomponents.BioFuel
+	 * @generated
+	 */
+	public Adapter createBioFuelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Fuel <em>Fuel</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.energycomponents.Fuel
+	 * @generated
+	 */
+	public Adapter createFuelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.WindTurbine <em>Wind Turbine</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.energycomponents.WindTurbine
+	 * @generated
+	 */
+	public Adapter createWindTurbineAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.PhotovoltaicModule <em>Photovoltaic Module</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.energycomponents.PhotovoltaicModule
+	 * @generated
+	 */
+	public Adapter createPhotovoltaicModuleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Inverter <em>Inverter</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.energycomponents.Inverter
+	 * @generated
+	 */
+	public Adapter createInverterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.HeatExchanger <em>Heat Exchanger</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.energycomponents.HeatExchanger
+	 * @generated
+	 */
+	public Adapter createHeatExchangerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.GeothermalHeatExchanger <em>Geothermal Heat Exchanger</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.energycomponents.GeothermalHeatExchanger
+	 * @generated
+	 */
+	public Adapter createGeothermalHeatExchangerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Medium <em>Medium</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.energycomponents.Medium
+	 * @generated
+	 */
+	public Adapter createMediumAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.LinearFunction <em>Linear Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.energycomponents.LinearFunction
+	 * @generated
+	 */
+	public Adapter createLinearFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.DataPoint <em>Data Point</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.energycomponents.DataPoint
+	 * @generated
+	 */
+	public Adapter createDataPointAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.TableFunction <em>Table Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.energycomponents.TableFunction
+	 * @generated
+	 */
+	public Adapter createTableFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.ExponentialFunction <em>Exponential Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.energycomponents.ExponentialFunction
+	 * @generated
+	 */
+	public Adapter createExponentialFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Characteristic <em>Characteristic</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.energycomponents.Characteristic
+	 * @generated
+	 */
+	public Adapter createCharacteristicAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.TableCharacteristic <em>Table Characteristic</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.energycomponents.TableCharacteristic
+	 * @generated
+	 */
+	public Adapter createTableCharacteristicAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.LinearCharacteristic <em>Linear Characteristic</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.energycomponents.LinearCharacteristic
+	 * @generated
+	 */
+	public Adapter createLinearCharacteristicAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.ExponentionalCharacteristic <em>Exponentional Characteristic</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.energycomponents.ExponentionalCharacteristic
+	 * @generated
+	 */
+	public Adapter createExponentionalCharacteristicAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Manufacturer <em>Manufacturer</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.energycomponents.Manufacturer
+	 * @generated
+	 */
+	public Adapter createManufacturerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.PolynomialCharacteristic <em>Polynomial Characteristic</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.energycomponents.PolynomialCharacteristic
+	 * @generated
+	 */
+	public Adapter createPolynomialCharacteristicAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.PolynomialFunction <em>Polynomial Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.energycomponents.PolynomialFunction
+	 * @generated
+	 */
+	public Adapter createPolynomialFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Material <em>Material</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.energycomponents.Material
+	 * @generated
+	 */
+	public Adapter createMaterialAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.EnergyComponentsCostCatalog <em>Energy Components Cost Catalog</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.energycomponents.EnergyComponentsCostCatalog
+	 * @generated
+	 */
+	public Adapter createEnergyComponentsCostCatalogAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.Cost <em>Cost</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.energycomponents.Cost
+	 * @generated
+	 */
+	public Adapter createCostAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.PowerCharacteristic <em>Power Characteristic</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.energycomponents.PowerCharacteristic
+	 * @generated
+	 */
+	public Adapter createPowerCharacteristicAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link de.hftstuttgart.energycomponents.PowerFunction <em>Power Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see de.hftstuttgart.energycomponents.PowerFunction
+	 * @generated
+	 */
+	public Adapter createPowerFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //EnCompAdapterFactory
diff --git a/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/util/EnCompSwitch.java b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/util/EnCompSwitch.java
new file mode 100644
index 0000000000000000000000000000000000000000..f4d4e802d8e4e0e8f0880deac3c93d8aa0ebbd42
--- /dev/null
+++ b/de.hftstuttgart.energycomponents/src-gen/de/hftstuttgart/energycomponents/util/EnCompSwitch.java
@@ -0,0 +1,1056 @@
+/**
+ */
+package de.hftstuttgart.energycomponents.util;
+
+import de.hftstuttgart.energycomponents.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.energycomponents.EnCompPackage
+ * @generated
+ */
+public class EnCompSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static EnCompPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnCompSwitch() {
+		if (modelPackage == null) {
+			modelPackage = EnCompPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case EnCompPackage.ENERGY_COMPONENT: {
+			EnergyComponent energyComponent = (EnergyComponent) theEObject;
+			T result = caseEnergyComponent(energyComponent);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.ENERGY_COMPONENTS_CATALOG: {
+			EnergyComponentsCatalog energyComponentsCatalog = (EnergyComponentsCatalog) theEObject;
+			T result = caseEnergyComponentsCatalog(energyComponentsCatalog);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.THERMAL_STORAGE: {
+			ThermalStorage thermalStorage = (ThermalStorage) theEObject;
+			T result = caseThermalStorage(thermalStorage);
+			if (result == null)
+				result = caseEnergyComponent(thermalStorage);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.ELECTRICAL_STORAGE: {
+			ElectricalStorage electricalStorage = (ElectricalStorage) theEObject;
+			T result = caseElectricalStorage(electricalStorage);
+			if (result == null)
+				result = caseEnergyComponent(electricalStorage);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.COMBINED_HEAT_POWER: {
+			CombinedHeatPower combinedHeatPower = (CombinedHeatPower) theEObject;
+			T result = caseCombinedHeatPower(combinedHeatPower);
+			if (result == null)
+				result = caseThermalEnergyDevice(combinedHeatPower);
+			if (result == null)
+				result = caseEnergyComponent(combinedHeatPower);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.HEAT_PUMP: {
+			HeatPump heatPump = (HeatPump) theEObject;
+			T result = caseHeatPump(heatPump);
+			if (result == null)
+				result = caseThermalEnergyDevice(heatPump);
+			if (result == null)
+				result = caseEnergyComponent(heatPump);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.BOILER: {
+			Boiler boiler = (Boiler) theEObject;
+			T result = caseBoiler(boiler);
+			if (result == null)
+				result = caseThermalEnergyDevice(boiler);
+			if (result == null)
+				result = caseEnergyComponent(boiler);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.SOLAR_THERMAL_COLLECTOR: {
+			SolarThermalCollector solarThermalCollector = (SolarThermalCollector) theEObject;
+			T result = caseSolarThermalCollector(solarThermalCollector);
+			if (result == null)
+				result = caseEnergyComponent(solarThermalCollector);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.ELECTROLYZER: {
+			Electrolyzer electrolyzer = (Electrolyzer) theEObject;
+			T result = caseElectrolyzer(electrolyzer);
+			if (result == null)
+				result = caseEnergyComponent(electrolyzer);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.THERMAL_ENERGY_DEVICE: {
+			ThermalEnergyDevice thermalEnergyDevice = (ThermalEnergyDevice) theEObject;
+			T result = caseThermalEnergyDevice(thermalEnergyDevice);
+			if (result == null)
+				result = caseEnergyComponent(thermalEnergyDevice);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.HYDROGEN_COMPRESSOR: {
+			HydrogenCompressor hydrogenCompressor = (HydrogenCompressor) theEObject;
+			T result = caseHydrogenCompressor(hydrogenCompressor);
+			if (result == null)
+				result = caseEnergyComponent(hydrogenCompressor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.HYDROGEN_STORAGE: {
+			HydrogenStorage hydrogenStorage = (HydrogenStorage) theEObject;
+			T result = caseHydrogenStorage(hydrogenStorage);
+			if (result == null)
+				result = caseEnergyComponent(hydrogenStorage);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.FUEL_CELL: {
+			FuelCell fuelCell = (FuelCell) theEObject;
+			T result = caseFuelCell(fuelCell);
+			if (result == null)
+				result = caseEnergyComponent(fuelCell);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.ENERGY_CARRIER: {
+			EnergyCarrier energyCarrier = (EnergyCarrier) theEObject;
+			T result = caseEnergyCarrier(energyCarrier);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.FOSSIL_FUEL: {
+			FossilFuel fossilFuel = (FossilFuel) theEObject;
+			T result = caseFossilFuel(fossilFuel);
+			if (result == null)
+				result = caseFuel(fossilFuel);
+			if (result == null)
+				result = caseEnergyCarrier(fossilFuel);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.HYDROGEN: {
+			Hydrogen hydrogen = (Hydrogen) theEObject;
+			T result = caseHydrogen(hydrogen);
+			if (result == null)
+				result = caseFuel(hydrogen);
+			if (result == null)
+				result = caseEnergyCarrier(hydrogen);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.ELECTRICITY: {
+			Electricity electricity = (Electricity) theEObject;
+			T result = caseElectricity(electricity);
+			if (result == null)
+				result = caseEnergyCarrier(electricity);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.BIO_FUEL: {
+			BioFuel bioFuel = (BioFuel) theEObject;
+			T result = caseBioFuel(bioFuel);
+			if (result == null)
+				result = caseFuel(bioFuel);
+			if (result == null)
+				result = caseEnergyCarrier(bioFuel);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.FUEL: {
+			Fuel fuel = (Fuel) theEObject;
+			T result = caseFuel(fuel);
+			if (result == null)
+				result = caseEnergyCarrier(fuel);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.WIND_TURBINE: {
+			WindTurbine windTurbine = (WindTurbine) theEObject;
+			T result = caseWindTurbine(windTurbine);
+			if (result == null)
+				result = caseEnergyComponent(windTurbine);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.PHOTOVOLTAIC_MODULE: {
+			PhotovoltaicModule photovoltaicModule = (PhotovoltaicModule) theEObject;
+			T result = casePhotovoltaicModule(photovoltaicModule);
+			if (result == null)
+				result = caseEnergyComponent(photovoltaicModule);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.INVERTER: {
+			Inverter inverter = (Inverter) theEObject;
+			T result = caseInverter(inverter);
+			if (result == null)
+				result = caseEnergyComponent(inverter);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.HEAT_EXCHANGER: {
+			HeatExchanger heatExchanger = (HeatExchanger) theEObject;
+			T result = caseHeatExchanger(heatExchanger);
+			if (result == null)
+				result = caseEnergyComponent(heatExchanger);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.GEOTHERMAL_HEAT_EXCHANGER: {
+			GeothermalHeatExchanger geothermalHeatExchanger = (GeothermalHeatExchanger) theEObject;
+			T result = caseGeothermalHeatExchanger(geothermalHeatExchanger);
+			if (result == null)
+				result = caseEnergyComponent(geothermalHeatExchanger);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.MEDIUM: {
+			Medium medium = (Medium) theEObject;
+			T result = caseMedium(medium);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.LINEAR_FUNCTION: {
+			LinearFunction linearFunction = (LinearFunction) theEObject;
+			T result = caseLinearFunction(linearFunction);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.DATA_POINT: {
+			DataPoint dataPoint = (DataPoint) theEObject;
+			T result = caseDataPoint(dataPoint);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.TABLE_FUNCTION: {
+			TableFunction tableFunction = (TableFunction) theEObject;
+			T result = caseTableFunction(tableFunction);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.EXPONENTIAL_FUNCTION: {
+			ExponentialFunction exponentialFunction = (ExponentialFunction) theEObject;
+			T result = caseExponentialFunction(exponentialFunction);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.CHARACTERISTIC: {
+			Characteristic characteristic = (Characteristic) theEObject;
+			T result = caseCharacteristic(characteristic);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.TABLE_CHARACTERISTIC: {
+			TableCharacteristic tableCharacteristic = (TableCharacteristic) theEObject;
+			T result = caseTableCharacteristic(tableCharacteristic);
+			if (result == null)
+				result = caseCharacteristic(tableCharacteristic);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.LINEAR_CHARACTERISTIC: {
+			LinearCharacteristic linearCharacteristic = (LinearCharacteristic) theEObject;
+			T result = caseLinearCharacteristic(linearCharacteristic);
+			if (result == null)
+				result = caseCharacteristic(linearCharacteristic);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.EXPONENTIONAL_CHARACTERISTIC: {
+			ExponentionalCharacteristic exponentionalCharacteristic = (ExponentionalCharacteristic) theEObject;
+			T result = caseExponentionalCharacteristic(exponentionalCharacteristic);
+			if (result == null)
+				result = caseCharacteristic(exponentionalCharacteristic);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.MANUFACTURER: {
+			Manufacturer manufacturer = (Manufacturer) theEObject;
+			T result = caseManufacturer(manufacturer);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.POLYNOMIAL_CHARACTERISTIC: {
+			PolynomialCharacteristic polynomialCharacteristic = (PolynomialCharacteristic) theEObject;
+			T result = casePolynomialCharacteristic(polynomialCharacteristic);
+			if (result == null)
+				result = caseCharacteristic(polynomialCharacteristic);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.POLYNOMIAL_FUNCTION: {
+			PolynomialFunction polynomialFunction = (PolynomialFunction) theEObject;
+			T result = casePolynomialFunction(polynomialFunction);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.MATERIAL: {
+			Material material = (Material) theEObject;
+			T result = caseMaterial(material);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.ENERGY_COMPONENTS_COST_CATALOG: {
+			EnergyComponentsCostCatalog energyComponentsCostCatalog = (EnergyComponentsCostCatalog) theEObject;
+			T result = caseEnergyComponentsCostCatalog(energyComponentsCostCatalog);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.COST: {
+			Cost cost = (Cost) theEObject;
+			T result = caseCost(cost);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.POWER_CHARACTERISTIC: {
+			PowerCharacteristic powerCharacteristic = (PowerCharacteristic) theEObject;
+			T result = casePowerCharacteristic(powerCharacteristic);
+			if (result == null)
+				result = caseCharacteristic(powerCharacteristic);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case EnCompPackage.POWER_FUNCTION: {
+			PowerFunction powerFunction = (PowerFunction) theEObject;
+			T result = casePowerFunction(powerFunction);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Energy Component</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>Energy Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEnergyComponent(EnergyComponent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Energy Components Catalog</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>Energy Components Catalog</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEnergyComponentsCatalog(EnergyComponentsCatalog object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Thermal Storage</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>Thermal Storage</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseThermalStorage(ThermalStorage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Electrical Storage</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>Electrical Storage</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseElectricalStorage(ElectricalStorage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Combined Heat Power</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>Combined Heat Power</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCombinedHeatPower(CombinedHeatPower object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Heat Pump</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>Heat Pump</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHeatPump(HeatPump object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Boiler</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>Boiler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBoiler(Boiler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Solar Thermal Collector</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>Solar Thermal Collector</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSolarThermalCollector(SolarThermalCollector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Electrolyzer</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>Electrolyzer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseElectrolyzer(Electrolyzer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Thermal Energy Device</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>Thermal Energy Device</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseThermalEnergyDevice(ThermalEnergyDevice object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hydrogen Compressor</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>Hydrogen Compressor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHydrogenCompressor(HydrogenCompressor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hydrogen Storage</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>Hydrogen Storage</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHydrogenStorage(HydrogenStorage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fuel Cell</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>Fuel Cell</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFuelCell(FuelCell object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Energy Carrier</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>Energy Carrier</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEnergyCarrier(EnergyCarrier object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fossil Fuel</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>Fossil Fuel</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFossilFuel(FossilFuel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hydrogen</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>Hydrogen</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHydrogen(Hydrogen object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Electricity</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>Electricity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseElectricity(Electricity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Bio Fuel</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>Bio Fuel</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBioFuel(BioFuel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fuel</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>Fuel</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFuel(Fuel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Wind Turbine</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>Wind Turbine</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseWindTurbine(WindTurbine object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Photovoltaic Module</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>Photovoltaic Module</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePhotovoltaicModule(PhotovoltaicModule object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Inverter</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>Inverter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInverter(Inverter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Heat Exchanger</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>Heat Exchanger</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHeatExchanger(HeatExchanger object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Geothermal Heat Exchanger</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>Geothermal Heat Exchanger</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGeothermalHeatExchanger(GeothermalHeatExchanger object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Medium</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>Medium</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMedium(Medium object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Linear Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Linear Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLinearFunction(LinearFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Data Point</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>Data Point</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDataPoint(DataPoint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Table Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Table Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTableFunction(TableFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Exponential Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Exponential Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExponentialFunction(ExponentialFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Characteristic</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>Characteristic</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCharacteristic(Characteristic object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Table Characteristic</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>Table Characteristic</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTableCharacteristic(TableCharacteristic object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Linear Characteristic</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>Linear Characteristic</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLinearCharacteristic(LinearCharacteristic object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Exponentional Characteristic</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>Exponentional Characteristic</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExponentionalCharacteristic(ExponentionalCharacteristic object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Manufacturer</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>Manufacturer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseManufacturer(Manufacturer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Polynomial Characteristic</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>Polynomial Characteristic</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePolynomialCharacteristic(PolynomialCharacteristic object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Polynomial Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Polynomial Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePolynomialFunction(PolynomialFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Material</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>Material</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaterial(Material object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Energy Components Cost Catalog</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>Energy Components Cost Catalog</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEnergyComponentsCostCatalog(EnergyComponentsCostCatalog object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cost</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cost</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCost(Cost object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Power Characteristic</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>Power Characteristic</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePowerCharacteristic(PowerCharacteristic object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Power Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Power Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePowerFunction(PowerFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //EnCompSwitch
diff --git a/de.hftstuttgart.indriya.osgiplugin/.classpath b/de.hftstuttgart.indriya.osgiplugin/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..322426508be8a06246e0efefc9d45549362500bd
--- /dev/null
+++ b/de.hftstuttgart.indriya.osgiplugin/.classpath
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry exported="true" kind="lib" path="indriya-2.0.2.jar" sourcepath="indriya-2.0.2-sources.jar"/>
+	<!-- classpathentry exported="true" kind="lib" path="javax.inject-1.jar"/-->
+	<classpathentry exported="true" kind="lib" path="unit-api-2.0.jar" sourcepath="unit-api-2.0-sources.jar"/>
+	<classpathentry exported="true" kind="lib" path="uom-lib-common-2.0.jar" sourcepath="uom-lib-common-2.0-sources.jar">
+		<attributes>
+			<attribute name="javadoc_location" value="jar:platform:/resource/de.hftstuttgart.units.libs/uom-lib-common-2.0-javadoc.jar!/"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/de.hftstuttgart.indriya.osgiplugin/.gitignore b/de.hftstuttgart.indriya.osgiplugin/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..9fb9e15adf26fe36dfca2be71b43d252b96a96e4
--- /dev/null
+++ b/de.hftstuttgart.indriya.osgiplugin/.gitignore
@@ -0,0 +1,5 @@
+*.jar
+!indriya*.jar
+!javax.inject*.jar
+!unit-api*.jar
+!uom-lib-common*.jar
diff --git a/de.hftstuttgart.indriya.osgiplugin/.project b/de.hftstuttgart.indriya.osgiplugin/.project
new file mode 100644
index 0000000000000000000000000000000000000000..db1a5a7a184337edf28bc7b05f412c742c9ee034
--- /dev/null
+++ b/de.hftstuttgart.indriya.osgiplugin/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.indriya.osgiplugin</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.indriya.osgiplugin/META-INF/MANIFEST.MF b/de.hftstuttgart.indriya.osgiplugin/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..6bc84709309dd7f826e2e451b15551b35d18780d
--- /dev/null
+++ b/de.hftstuttgart.indriya.osgiplugin/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: de.hftstuttgart.units.libs
+Bundle-SymbolicName: de.hftstuttgart.indriya.osgiplugin
+Bundle-Version: 1.0.0
+Bundle-ClassPath: indriya-2.0.2-javadoc.jar,
+ indriya-2.0.2-sources.jar,
+ indriya-2.0.2.jar,
+ unit-api-2.0-javadoc.jar,
+ unit-api-2.0-sources.jar,
+ unit-api-2.0.jar,
+ uom-lib-common-2.0-javadoc.jar,
+ uom-lib-common-2.0-sources.jar,
+ uom-lib-common-2.0.jar
+Export-Package: javax.measure,
+ javax.measure.format,
+ javax.measure.quantity,
+ javax.measure.spi,
+ tech.units.indriya,
+ tech.units.indriya.format,
+ tech.units.indriya.function,
+ tech.units.indriya.internal.format,
+ tech.units.indriya.internal.format.l10n,
+ tech.units.indriya.internal.function.calc,
+ tech.units.indriya.internal.function.radix,
+ tech.units.indriya.internal.function.simplify,
+ tech.units.indriya.quantity,
+ tech.units.indriya.quantity.time,
+ tech.units.indriya.spi,
+ tech.units.indriya.unit,
+ tech.uom.lib.common.function,
+ tech.uom.lib.common.util
+Automatic-Module-Name: de.hftstuttgart.units.libs
diff --git a/de.hftstuttgart.indriya.osgiplugin/build.properties b/de.hftstuttgart.indriya.osgiplugin/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..25cfe8bbd227dc832a355184487db2868c7c940d
--- /dev/null
+++ b/de.hftstuttgart.indriya.osgiplugin/build.properties
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+               indriya-2.0.2.jar,\
+               javax.inject-1.jar,\
+               unit-api-2.0.jar,\
+               uom-lib-common-2.0.jar
diff --git a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-javadoc.jar b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-javadoc.jar
new file mode 100644
index 0000000000000000000000000000000000000000..4617537d5e2990cd70bc2a2598f723b21bb922f2
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-javadoc.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-sources.jar b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ba598e619eb8cc6bb32b7a00e4c5c15d46c62469
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2-sources.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2.jar b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2.jar
new file mode 100644
index 0000000000000000000000000000000000000000..be14b080045f562b2a9a33df1b828a386dd6871c
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/indriya-2.0.2.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-javadoc.jar b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-javadoc.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3b66502638cb1779cadf67d65a5f07205e1493bd
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-javadoc.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-sources.jar b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..5fc208cd5f69b7ed7b06154520ecd31c8667cf77
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0-sources.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0.jar b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d11827e77265fbbdfd01fc2158138c2b45323d29
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/unit-api-2.0.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-javadoc.jar b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-javadoc.jar
new file mode 100644
index 0000000000000000000000000000000000000000..35837bda6a2bc0ccab992e16b88f5b397dab3cb2
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-javadoc.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-sources.jar b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..60b6c66b6ebcdbb4964d54b5cc30ebe0ce29b4b5
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0-sources.jar differ
diff --git a/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0.jar b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d3a2479f18873510558a5e26586b3cbfb57cfa03
Binary files /dev/null and b/de.hftstuttgart.indriya.osgiplugin/uom-lib-common-2.0.jar differ
diff --git a/de.hftstuttgart.units.ui.renderer/.classpath b/de.hftstuttgart.units.ui.renderer/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..a02dd9c8ff24c756ff8f40186a03d3bd495df037
--- /dev/null
+++ b/de.hftstuttgart.units.ui.renderer/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/de.hftstuttgart.units.ui.renderer/.project b/de.hftstuttgart.units.ui.renderer/.project
new file mode 100644
index 0000000000000000000000000000000000000000..0aec854c7a0d5199756605ed3b0ff758ad92747d
--- /dev/null
+++ b/de.hftstuttgart.units.ui.renderer/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.units.ui.renderer</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.units.ui.renderer/META-INF/MANIFEST.MF b/de.hftstuttgart.units.ui.renderer/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..921fab8b8156873ca818b4280961114a023f529e
--- /dev/null
+++ b/de.hftstuttgart.units.ui.renderer/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: QuantityControl
+Bundle-SymbolicName: de.hftstuttgart.units.ui.renderer;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Vendor: Eclipse Modeling Project
+Export-Package: de.hftstuttgart.units.ui.renderer;version="1.24.0"
+Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="1.23.0",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="1.23.0",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="1.23.0",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="1.23.0",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="1.23.0",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="1.23.0",
+ de.hftstuttgart.energycomponents;bundle-version="1.0.0",
+ de.hftstuttgart.units;bundle-version="1.0.0",
+ de.hftstuttgart.indriya.osgiplugin;bundle-version="1.0.0",
+ org.eclipse.emfforms.localization,
+ org.eclipse.jface
+Service-Component: OSGI-INF/quantityRendererService.xml
+Bundle-ActivationPolicy: lazy
+Import-Package: javax.inject;version="1.0.0",
+ org.eclipse.emfforms.spi.common.report;version="1.23.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
+Automatic-Module-Name: de.hftstuttgart.units.ui.eclipse.quantityrenderer
diff --git a/de.hftstuttgart.units.ui.renderer/OSGI-INF/quantityRendererService.xml b/de.hftstuttgart.units.ui.renderer/OSGI-INF/quantityRendererService.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e90c6dfd91b6e544a8ff3d7b191e1d34f20a07f
--- /dev/null
+++ b/de.hftstuttgart.units.ui.renderer/OSGI-INF/quantityRendererService.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="de.hftstuttgart.units.ui.rendererservice">
+   <implementation class="de.hftstuttgart.units.ui.renderer.QuantityControlRendererService"/>
+   <service>
+      <provide interface="org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService"/>
+   </service>
+   <reference bind="setEMFFormsDatabinding" cardinality="1..1" interface="org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding" name="EMFFormsDatabinding" policy="static"/>
+   <reference bind="setReportService" cardinality="1..1" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService" policy="static"/>
+</scr:component>
diff --git a/de.hftstuttgart.units.ui.renderer/build.properties b/de.hftstuttgart.units.ui.renderer/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..6210e849b591d26fa9e17057ad3e8d09511917b6
--- /dev/null
+++ b/de.hftstuttgart.units.ui.renderer/build.properties
@@ -0,0 +1,5 @@
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               OSGI-INF/
+source.. = src/
diff --git a/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRenderer.java b/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRenderer.java
new file mode 100644
index 0000000000000000000000000000000000000000..5c4d87afad7bdebb7f1953915830ea8dfe4c8e2a
--- /dev/null
+++ b/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRenderer.java
@@ -0,0 +1,370 @@
+package de.hftstuttgart.units.ui.renderer;
+
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+
+import javax.inject.Inject;
+import javax.measure.Unit;
+
+import org.eclipse.core.databinding.Binding;
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.UpdateValueStrategy;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.edit.internal.swt.controls.NumericalHelper;
+import org.eclipse.emf.ecp.edit.spi.swt.util.ECPDialogExecutor;
+import org.eclipse.emf.ecp.view.internal.core.swt.Activator;
+import org.eclipse.emf.ecp.view.internal.core.swt.MessageKeys;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.core.swt.renderer.TextControlSWTRenderer;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleChangeListener;
+import org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleProvider;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.eclipse.jface.dialogs.IDialogLabelKeys;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+import de.hftstuttgart.energycomponents.EnCompPackage;
+import de.hftstuttgart.units.NullableQuantity;
+
+public class QuantityControlRenderer extends TextControlSWTRenderer {
+
+	private final EMFFormsLocalizationService localizationService;
+	private final EMFFormsLocaleProvider localeProvider;
+	private EMFFormsLocaleChangeListener emfFormsLocaleChangeListener;
+	private Unit<?> unit;
+
+	/**
+	 * Default constructor.
+	 *
+	 * @param vElement the view model element to be rendered
+	 * @param viewContext the view context
+	 * @param reportService The {@link ReportService}
+	 * @param emfFormsDatabinding The {@link EMFFormsDatabinding}
+	 * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider}
+	 * @param vtViewTemplateProvider The {@link VTViewTemplateProvider}
+	 * @param emfFormsEditSupport The {@link EMFFormsEditSupport}
+	 * @param localizationService The {@link EMFFormsLocalizationService}
+	 * @param localeProvider The {@link EMFFormsLocaleProvider}
+	 */
+	@Inject
+	// CHECKSTYLE.OFF: ParameterNumber
+	public QuantityControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+		EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider,
+		VTViewTemplateProvider vtViewTemplateProvider, EMFFormsEditSupport emfFormsEditSupport,
+		EMFFormsLocalizationService localizationService, EMFFormsLocaleProvider localeProvider) {
+		// CHECKSTYLE.ON: ParameterNumber
+		super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider,
+			emfFormsEditSupport);
+		this.localizationService = localizationService;
+		this.localeProvider = localeProvider;
+	}
+
+	@Override
+	protected Control createSWTControl(Composite parent) {
+		final VFeaturePathDomainModelReference featureRef = (VFeaturePathDomainModelReference) getVElement()
+			.getDomainModelReference();
+		final String defaultString = featureRef.getDomainModelEFeature().getDefaultValueLiteral();
+		final NullableQuantity defaultValue = NullableQuantity.create(defaultString);
+		unit = defaultValue.getUnit();
+
+		final Composite composite = new Composite(parent, SWT.NONE);
+		GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite);
+		GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.BEGINNING).applyTo(composite);
+		final Control control = super.createSWTControl(composite);
+		final Label label = new Label(composite, SWT.PUSH);
+		label.setText(unit.toString());
+		return control;
+	}
+
+	@Override
+	protected int getDefaultAlignment() {
+		return SWT.RIGHT;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.emf.ecp.edit.internal.swt.controls.AbstractTextControl#getTextVariantID()
+	 */
+	@Override
+	protected String getTextVariantID() {
+		return "org_eclipse_emf_ecp_control_numerical"; //$NON-NLS-1$
+	}
+
+	@Override
+	protected String getTextMessage() {
+		return ""; //$NON-NLS-1$
+	}
+
+	@Override
+	protected Object convert(Text text, EDataType attributeType, String value) throws DatabindingFailedException {
+		final EStructuralFeature eStructuralFeature = (EStructuralFeature) getModelValue().getValueType();
+		final NumericalTargetToModelUpdateStrategy converter = new NumericalTargetToModelUpdateStrategy(
+			eStructuralFeature, getModelValue(), getDataBindingContext(), text);
+		return converter.convert(value);
+	}
+
+	@Override
+	protected Binding[] createBindings(final Control control) throws DatabindingFailedException {
+		final EStructuralFeature structuralFeature = (EStructuralFeature) getModelValue().getValueType();
+
+		final UpdateValueStrategy<?, ?> targetToModelStrategy = withPreSetValidation(
+			new NumericalTargetToModelUpdateStrategy(structuralFeature, getModelValue(), getDataBindingContext(),
+				(Text) Composite.class.cast(control).getChildren()[0]));
+		final NumericalModelToTargetUpdateStrategy modelToTargetStrategy = new NumericalModelToTargetUpdateStrategy(
+			getInstanceClass(structuralFeature), false);
+		final Binding binding = bindValue(control, getModelValue(), getDataBindingContext(),
+			targetToModelStrategy, modelToTargetStrategy);
+		final Binding tooltipBinding = createTooltipBinding(control, getModelValue(), getDataBindingContext(),
+			targetToModelStrategy,
+			new NumericalModelToTargetUpdateStrategy(getInstanceClass(structuralFeature), true));
+
+		emfFormsLocaleChangeListener = new EMFFormsLocaleChangeListener() {
+
+			/**
+			 * {@inheritDoc}
+			 *
+			 * @see org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleChangeListener#notifyLocaleChange()
+			 */
+			@Override
+			public void notifyLocaleChange() {
+				((Text) control).setMessage(getTextMessage());
+				binding.updateModelToTarget();
+			}
+		};
+		localeProvider.addEMFFormsLocaleChangeListener(emfFormsLocaleChangeListener);
+
+		return new Binding[] { binding, tooltipBinding };
+	}
+
+	private Class<?> getInstanceClass(EStructuralFeature feature) {
+		if (feature.getEType() == EnCompPackage.eINSTANCE.getQuantityDouble()) {
+			return Double.class;
+		} else if (feature.getEType() == EnCompPackage.eINSTANCE.getQuantityLong()) {
+			return Long.class;
+		}
+		assert false;
+		return null;
+	}
+
+	@Override
+	protected String getTextFromTextField(Text text, EDataType attributeType) {
+		return text.getText().isBlank() ? null : super.getTextFromTextField(text, attributeType);
+	}
+
+	/**
+	 * Converts the numerical value from the model to the target. Locale settings are respected,
+	 * i.e. formatting is performed according to the current locale.
+	 */
+	private class NumericalModelToTargetUpdateStrategy extends ModelToTargetUpdateStrategy {
+
+		private final Class<?> instanceClass;
+
+		NumericalModelToTargetUpdateStrategy(Class<?> instanceClass, boolean tooltip) {
+			super(tooltip);
+			this.instanceClass = instanceClass;
+		}
+
+		@Override
+		public Object convertValue(Object value) {
+			if (value == null) {
+				return ""; //$NON-NLS-1$
+			}
+			return ((NullableQuantity) value).getNumber()
+				.map(n -> NumericalHelper.setupFormat(localeProvider.getLocale(), instanceClass).format(n))
+				.orElse(""); //$NON-NLS-1$
+		}
+	}
+
+	/**
+	 * More specific target to model update strategy that convert the string
+	 * in the text field to a number. If the string is a invalid number,
+	 * for instance because of the current locale, the value is reset to
+	 * the last valid value found in the mode.
+	 */
+	private class NumericalTargetToModelUpdateStrategy extends TargetToModelUpdateStrategy {
+
+		private final Text text;
+		private final IObservableValue<?> modelValue;
+		private final EStructuralFeature eStructuralFeature;
+		private final DataBindingContext dataBindingContext;
+
+		NumericalTargetToModelUpdateStrategy(EStructuralFeature eStructuralFeature,
+			IObservableValue<?> modelValue, DataBindingContext dataBindingContext, Text text) {
+			super(eStructuralFeature.isUnsettable());
+			this.eStructuralFeature = eStructuralFeature;
+			this.modelValue = modelValue;
+			this.dataBindingContext = dataBindingContext;
+			this.text = text;
+		}
+
+		@Override
+		protected Object convertValue(final Object value) {
+			final DecimalFormat format = NumericalHelper.setupFormat(
+				localeProvider.getLocale(), getInstanceClass(eStructuralFeature));
+
+			try {
+				Number number = null;
+				if (value == null) {
+					number = NumericalHelper.getDefaultValue(getInstanceClass(eStructuralFeature));
+				} else {
+					final ParsePosition pp = new ParsePosition(0);
+					number = format.parse((String) value, pp);
+					if (pp.getErrorIndex() != -1 || pp.getIndex() != ((String) value).length()) {
+						return getOldValue(value);
+					}
+					if (NumericalHelper.isInteger(getInstanceClass(eStructuralFeature))) {
+						boolean maxValue = false;
+						boolean minValue = false;
+						final Class<?> instanceClass = getInstanceClass(eStructuralFeature);
+						try {
+							if (number.doubleValue() >= getInstanceMaxValue(instanceClass)) {
+								maxValue = true;
+							} else if (number.doubleValue() <= getInstanceMinValue(instanceClass)) {
+								minValue = true;
+							}
+						} catch (final IllegalArgumentException ex) {
+							Activator.logException(ex);
+						} catch (final SecurityException ex) {
+							Activator.logException(ex);
+						} catch (final IllegalAccessException ex) {
+							Activator.logException(ex);
+						} catch (final NoSuchFieldException ex) {
+							Activator.logException(ex);
+						}
+
+						if (maxValue || minValue) {
+							return numberToQuantity(number);
+						}
+					}
+				}
+				String formatedNumber = ""; //$NON-NLS-1$
+				if (number != null) {
+					formatedNumber = format.format(number);
+				}
+				if (formatedNumber.length() == 0) {
+					return null;
+				}
+				return numberToQuantity(format.parse(formatedNumber));
+			} catch (final ParseException ex) {
+				return getOldValue(value);
+			}
+		}
+
+		private Object numberToQuantity(Number number) {
+			return NullableQuantity.create(number, unit);
+		}
+
+		private double getInstanceMinValue(Class<?> instanceClass)
+			throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
+			if (Integer.class.isAssignableFrom(instanceClass)
+				|| Integer.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
+				return Integer.MIN_VALUE;
+			}
+			if (Long.class.isAssignableFrom(instanceClass)
+				|| Long.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
+				return Long.MIN_VALUE;
+			}
+			if (Short.class.isAssignableFrom(instanceClass)
+				|| Short.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
+				return Short.MIN_VALUE;
+			}
+
+			return Double.NaN;
+		}
+
+		private double getInstanceMaxValue(Class<?> instanceClass)
+			throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
+			if (Integer.class.isAssignableFrom(instanceClass)
+				|| Integer.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
+				return Integer.MAX_VALUE;
+			}
+			if (Long.class.isAssignableFrom(instanceClass)
+				|| Long.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
+				return Long.MAX_VALUE;
+			}
+			if (Short.class.isAssignableFrom(instanceClass)
+				|| Short.class.getField("TYPE").get(null).equals(instanceClass)) { //$NON-NLS-1$
+				return Short.MAX_VALUE;
+			}
+
+			return Double.NaN;
+		}
+
+		@Override
+		protected IStatus doSet(IObservableValue observableValue, Object value) {
+			final IStatus status = super.doSet(observableValue, value);
+			// update targets after a model change triggered by the target to model databinding
+			dataBindingContext.updateTargets();
+			return status;
+		}
+
+		private Object getOldValue(final Object value) {
+			if (eStructuralFeature.getDefaultValue() == null && value == null || value.equals("")) { //$NON-NLS-1$
+				return null;
+			}
+			final Object result = modelValue.getValue();
+
+			final MessageDialog messageDialog = new MessageDialog(text.getShell(),
+				localizationService.getString(getClass(), MessageKeys.NumericalControl_InvalidNumber), null,
+				localizationService.getString(getClass(), MessageKeys.NumericalControl_InvalidNumberWillBeUnset),
+				MessageDialog.ERROR,
+				new String[] { JFaceResources.getString(IDialogLabelKeys.OK_LABEL_KEY) }, 0);
+
+			new ECPDialogExecutor(messageDialog) {
+				@Override
+				public void handleResult(int codeResult) {
+
+				}
+			}.execute();
+
+			dataBindingContext.updateTargets();
+			if (eStructuralFeature.isUnsettable() && result == null) {
+				// showUnsetLabel();
+				return SetCommand.UNSET_VALUE;
+			}
+			return result;
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.spi.core.swt.renderer.TextControlSWTRenderer#getUnsetText()
+	 */
+	@Override
+	protected String getUnsetText() {
+		return localizationService.getString(getClass(), MessageKeys.NumericalControl_NoNumberClickToSetNumber);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTRenderer#dispose()
+	 */
+	@Override
+	protected void dispose() {
+		super.dispose();
+		localeProvider.removeEMFFormsLocaleChangeListener(emfFormsLocaleChangeListener);
+	}
+
+}
diff --git a/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRendererService.java b/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRendererService.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7c0167cc060bdce53be89dec0b0ebab56e24c30
--- /dev/null
+++ b/de.hftstuttgart.units.ui.renderer/src/de/hftstuttgart/units/ui/renderer/QuantityControlRendererService.java
@@ -0,0 +1,86 @@
+package de.hftstuttgart.units.ui.renderer;
+
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
+
+import de.hftstuttgart.units.NullableQuantity;
+
+/**
+ * QuantityRendererService which provides the QuantityRenderer.
+ *
+ * @author Kai Brassel
+ *
+ */
+public class QuantityControlRendererService implements EMFFormsDIRendererService<VControl> {
+
+	private EMFFormsDatabinding databindingService;
+	private ReportService reportService;
+
+	/**
+	 * Called by the initializer to set the EMFFormsDatabinding.
+	 *
+	 * @param databindingService The EMFFormsDatabinding
+	 */
+	protected void setEMFFormsDatabinding(EMFFormsDatabinding databindingService) {
+		this.databindingService = databindingService;
+	}
+
+	/**
+	 * Called by the initializer to set the ReportService.
+	 *
+	 * @param reportService The ReportService
+	 */
+	protected void setReportService(ReportService reportService) {
+		this.reportService = reportService;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#isApplicable(VElement,ViewModelContext)
+	 */
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		if (!VControl.class.isInstance(vElement)) {
+			return NOT_APPLICABLE;
+		}
+		final VControl control = (VControl) vElement;
+		if (control.getDomainModelReference() == null) {
+			return NOT_APPLICABLE;
+		}
+		@SuppressWarnings("rawtypes")
+		IValueProperty valueProperty;
+		try {
+			valueProperty = databindingService.getValueProperty(control.getDomainModelReference(),
+				viewModelContext.getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			reportService.report(new DatabindingFailedReport(ex));
+			return NOT_APPLICABLE;
+		}
+		final EStructuralFeature eStructuralFeature = EStructuralFeature.class.cast(valueProperty.getValueType());
+		if (eStructuralFeature.getEType().getInstanceClass() == NullableQuantity.class) {
+			return 9; // 9 - not 10 - to avoid priority clash with multi-valued attributes
+		}
+		return NOT_APPLICABLE;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#getRendererClass()
+	 */
+	@Override
+	public Class<? extends AbstractSWTRenderer<VControl>> getRendererClass() {
+		return QuantityControlRenderer.class;
+	}
+
+}
diff --git a/de.hftstuttgart.units/.classpath b/de.hftstuttgart.units/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..2869279ea3b40554d75a2a2ac7ffa357f9f0f72e
--- /dev/null
+++ b/de.hftstuttgart.units/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/de.hftstuttgart.units/.project b/de.hftstuttgart.units/.project
new file mode 100644
index 0000000000000000000000000000000000000000..b4ebaa3b8c404d53c7241e819f753330b023a90f
--- /dev/null
+++ b/de.hftstuttgart.units/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.hftstuttgart.units</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.hftstuttgart.units/META-INF/MANIFEST.MF b/de.hftstuttgart.units/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..b7f14d1f1b4a6e9b7ee698dcb88db27d3161ccb0
--- /dev/null
+++ b/de.hftstuttgart.units/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Units
+Bundle-SymbolicName: de.hftstuttgart.units
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: HfT Stuttgart
+Automatic-Module-Name: de.hftstuttgart.units
+Require-Bundle: de.hftstuttgart.indriya.osgiplugin;bundle-version="1.0.0"
+Export-Package: de.hftstuttgart.units
diff --git a/de.hftstuttgart.units/build.properties b/de.hftstuttgart.units/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..34d2e4d2dad529ceaeb953bfcdb63c51d69ffed2
--- /dev/null
+++ b/de.hftstuttgart.units/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/Dollar.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/Dollar.java
new file mode 100644
index 0000000000000000000000000000000000000000..f47de03457a90ee4950495a5607d50c9456802f0
--- /dev/null
+++ b/de.hftstuttgart.units/src/de/hftstuttgart/units/Dollar.java
@@ -0,0 +1,11 @@
+package de.hftstuttgart.units;
+
+import javax.measure.Quantity;
+
+
+/**
+ * This interface represents the intensity dimension.
+ */
+public interface Dollar extends Quantity<Dollar>
+{
+}
\ No newline at end of file
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/Euro.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/Euro.java
new file mode 100644
index 0000000000000000000000000000000000000000..58f80a960aa7d5f0c5a924077a777990c5976194
--- /dev/null
+++ b/de.hftstuttgart.units/src/de/hftstuttgart/units/Euro.java
@@ -0,0 +1,11 @@
+package de.hftstuttgart.units;
+
+import javax.measure.Quantity;
+
+
+/**
+ * This interface represents the intensity dimension.
+ */
+public interface Euro extends Quantity<Euro>
+{
+}
\ No newline at end of file
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/Intensity.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/Intensity.java
new file mode 100644
index 0000000000000000000000000000000000000000..1228e1aa633c485245994e14ab96406af43a7e6b
--- /dev/null
+++ b/de.hftstuttgart.units/src/de/hftstuttgart/units/Intensity.java
@@ -0,0 +1,11 @@
+package de.hftstuttgart.units;
+
+import javax.measure.Quantity;
+
+
+/**
+ * This interface represents the intensity dimension.
+ */
+public interface Intensity extends Quantity<Intensity>
+{
+}
\ No newline at end of file
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/NullableQuantity.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/NullableQuantity.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0d08fc595ca2c4b2ae60eed47152ca196fe47e4
--- /dev/null
+++ b/de.hftstuttgart.units/src/de/hftstuttgart/units/NullableQuantity.java
@@ -0,0 +1,106 @@
+package de.hftstuttgart.units;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.Optional;
+
+import javax.measure.Quantity;
+import javax.measure.Unit;
+
+import tech.units.indriya.format.SimpleQuantityFormat;
+import tech.units.indriya.quantity.Quantities;
+
+/**
+ * A <code>NullableQuantity</code> wraps a <code>javax.measure.Quantity</code> having
+ * a numerical value that is either a <code>Double</code>, a <code>Long</code>,
+ * or <code>null</code>. The latter case represents an unknown numerical
+ * value of a specific unit. On the other hand, the <code>javax.measure.Unit</code>
+ * of the quantity is always defined.
+ */
+public class NullableQuantity {
+
+	static {
+		// TODO Implement specific QuantityFormat to enable custom number format?
+		// ensure that editing, (de)serialization and default values of units all work
+		// with the same number format (Decimal point etc.)
+		Locale.setDefault(Locale.ENGLISH);
+		
+		// specific additional units for urban simulation like TON (t), PARTS_PER_MILLION (ppm), DECIBEL (dB)
+		UrbanSimulationUnits.getInstance();
+	}
+
+	public static NullableQuantity create(String str) {
+		NullableQuantity newNullableQuantity = null;
+		try {
+			NumberFormat.getInstance().parse(str);
+			newNullableQuantity = new NullableQuantity(str);
+		} catch (final ParseException ex) { // no number value present: create NullQuantity just with unit
+			try {
+				NullableQuantity dummy = new NullableQuantity("1 " + str); //$NON-NLS-1$
+				newNullableQuantity = new NullQuantity(dummy.getUnit());
+			} catch (final IllegalArgumentException ex1) { // Unit could not be parsed
+				System.out.println("Unit '" + str + "'  could not be parsed!"); //TODO
+				ex.printStackTrace();
+			}
+		} catch (final IllegalArgumentException ex) { // Quantity could not be parsed
+			System.out.println("Quantity '" + str + "' could not be parsed!");	//TODO
+			ex.printStackTrace();
+		}
+		return newNullableQuantity;
+	}
+
+	public static NullableQuantity create(Number number, Unit<?> unit) {
+		return number == null ? new NullQuantity(unit) : new NullableQuantity(number, unit);
+	}
+
+	private final Quantity<?> quantity;
+
+	private NullableQuantity(String str) {
+		quantity = Quantities.getQuantity(str);
+	}
+
+	private NullableQuantity(Number number, Unit<?> unit) {
+		quantity = Quantities.getQuantity(number, unit);
+	}
+
+	/**
+	 * In case of an unknown numerical value of the quantity an empty <code>Optional</code> is returned via subclass.
+	 * @return the wrapped <code>javax.measure.Quantity</code> if its numerical value is present
+	 */
+	public Optional<Quantity<?>> getQuantity() {
+		return Optional.of(quantity);
+	}
+	
+	/**
+	 * @return numerical value of the wrapped <code>javax.measure.Quantity</code> if present
+	 */
+	public Optional<Number> getNumber() {
+		return getQuantity().map(Quantity::getValue);
+	}
+
+	public Unit<?> getUnit() {
+		return quantity.getUnit();
+	}
+
+	@Override
+	public String toString() {
+		return SimpleQuantityFormat.getInstance().format(quantity);
+	}
+
+
+	private static class NullQuantity extends NullableQuantity {
+		public NullQuantity(Unit<?> unit) {
+			super(1, unit);
+		}
+
+		public Optional<Quantity<?>> getQuantity() {
+			return Optional.empty();
+		}
+
+		@Override
+		public String toString() {
+			return "<unknown> " + getUnit().toString();
+		}
+	}
+}
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/UrbanSimulationUnits.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/UrbanSimulationUnits.java
new file mode 100644
index 0000000000000000000000000000000000000000..89652fa4fd639b9e4d50bc7fe89ca7f231e99088
--- /dev/null
+++ b/de.hftstuttgart.units/src/de/hftstuttgart/units/UrbanSimulationUnits.java
@@ -0,0 +1,88 @@
+package de.hftstuttgart.units;
+
+import java.math.BigInteger;
+
+import javax.measure.Dimension;
+import javax.measure.Quantity;
+import javax.measure.Unit;
+import javax.measure.quantity.Dimensionless;
+import javax.measure.quantity.Mass;
+import javax.measure.spi.SystemOfUnits;
+
+import tech.units.indriya.AbstractSystemOfUnits;
+import tech.units.indriya.AbstractUnit;
+import tech.units.indriya.format.SimpleUnitFormat;
+import tech.units.indriya.function.LogConverter;
+import tech.units.indriya.function.MultiplyConverter;
+import tech.units.indriya.unit.AlternateUnit;
+import tech.units.indriya.unit.BaseUnit;
+import tech.units.indriya.unit.TransformedUnit;
+import tech.units.indriya.unit.UnitDimension;
+import tech.units.indriya.unit.Units;
+
+public class UrbanSimulationUnits extends AbstractSystemOfUnits
+{
+	private static final UrbanSimulationUnits INSTANCE = new UrbanSimulationUnits();
+	
+	@Override
+	public String getName() {
+		return getClass().getSimpleName();
+	}
+
+	public static final Unit<Dimensionless> PARTS_PER_MILLION = addUnit(new TransformedUnit<>(AbstractUnit.ONE,
+			MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(1000000))));
+	public static final Unit<Dimensionless> DECIBEL = addUnit(AbstractUnit.ONE.transform(
+			new LogConverter(10).inverse().concatenate(MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.TEN))));
+	public static final Unit<Mass> TON = addUnit(Units.KILOGRAM.multiply(1000));
+
+	public static final Unit<Intensity> IRRADIANCE = addUnit(
+			new AlternateUnit<Intensity>(Units.WATT.divide(Units.SQUARE_METRE), "W/m2"));
+
+	// To model costs I added monetary units quick and dirty as SI base units. According to JavaDoc of AbstractUnit,
+	// monetary units should rather be implemented in an extra type hierarchy below ComparableUnit.
+	public final static Dimension MONEY_DIMENSION = UnitDimension.parse('M');
+	public final static Unit<Euro> EURO = new BaseUnit<Euro>("€", MONEY_DIMENSION);
+	public final static Unit<Dollar> DOLLAR = new BaseUnit<Dollar>("$", MONEY_DIMENSION);
+
+	static {
+		SimpleUnitFormat.getInstance().label(TON, "t");
+		SimpleUnitFormat.getInstance().label(DECIBEL, "dB");
+		SimpleUnitFormat.getInstance().label(PARTS_PER_MILLION, "ppm");
+		SimpleUnitFormat.getInstance().label(EURO, "€");
+		SimpleUnitFormat.getInstance().label(DOLLAR, "$");
+	}
+
+
+	/**
+	 * Returns the unique instance of this class.
+	 *
+	 * @return the Units instance.
+	 */
+	public static SystemOfUnits getInstance() {
+		return INSTANCE;
+	}
+
+	/**
+	 * Adds a new unit not mapped to any specified quantity type.
+	 *
+	 * @param unit the unit being added.
+	 * @return <code>unit</code>.
+	 */
+	private static <U extends Unit<?>> U addUnit(U unit) {
+		INSTANCE.units.add(unit);
+		return unit;
+	}
+
+	/**
+	 * Adds a new unit and maps it to the specified quantity type.
+	 *
+	 * @param unit the unit being added.
+	 * @param type the quantity type.
+	 * @return <code>unit</code>.
+	 */
+	private static <U extends AbstractUnit<?>> U addUnit(U unit, Class<? extends Quantity<?>> type) {
+		INSTANCE.units.add(unit);
+		INSTANCE.quantityToUnit.put(type, unit);
+		return unit;
+	}
+}
diff --git a/de.hftstuttgart.units/src/de/hftstuttgart/units/VolumetricFlowRate.java b/de.hftstuttgart.units/src/de/hftstuttgart/units/VolumetricFlowRate.java
new file mode 100644
index 0000000000000000000000000000000000000000..43b0e80e213105506a45c916c33e4a3d52c71d23
--- /dev/null
+++ b/de.hftstuttgart.units/src/de/hftstuttgart/units/VolumetricFlowRate.java
@@ -0,0 +1,11 @@
+package de.hftstuttgart.units;
+
+import javax.measure.Quantity;
+
+
+/**
+ * Define Volumetric Flow Rate type (basic unit is m^3/s).
+ */
+public interface VolumetricFlowRate extends Quantity<VolumetricFlowRate>
+{
+}
\ No newline at end of file