Merge remote-tracking branch 'origin/freeze' into develop

Change-Id: I2ace5645eb41158cc5618d647822b6ebc4e39615
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
index 2db1890..8dd82a2 100644
--- a/.mvn/extensions.xml
+++ b/.mvn/extensions.xml
@@ -3,6 +3,6 @@
   <extension>
     <groupId>org.eclipse.tycho</groupId>
     <artifactId>tycho-build</artifactId>
-    <version>4.0.4</version>
+    <version>4.0.6</version>
   </extension>
 </extensions>
\ No newline at end of file
diff --git a/data/typelibrary/convert-1.0.0/MANIFEST.MF b/data/typelibrary/convert-1.0.0/MANIFEST.MF
index 1bc1088..61a8f71 100644
--- a/data/typelibrary/convert-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/convert-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Convert" symbolicName="convert" comment="Standard Library - Convert">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Convert" SymbolicName="convert" Comment="Standard Library - Convert">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/convert-1.0.0/BOOL2BOOL.fbt b/data/typelibrary/convert-1.0.0/typelib/BOOL2BOOL.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/BOOL2BOOL.fbt
rename to data/typelibrary/convert-1.0.0/typelib/BOOL2BOOL.fbt
diff --git a/data/typelibrary/convert-1.0.0/BYTE2BYTE.fbt b/data/typelibrary/convert-1.0.0/typelib/BYTE2BYTE.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/BYTE2BYTE.fbt
rename to data/typelibrary/convert-1.0.0/typelib/BYTE2BYTE.fbt
diff --git a/data/typelibrary/convert-1.0.0/DINT2DINT.fbt b/data/typelibrary/convert-1.0.0/typelib/DINT2DINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/DINT2DINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/DINT2DINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/DWORD2DWORD.fbt b/data/typelibrary/convert-1.0.0/typelib/DWORD2DWORD.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/DWORD2DWORD.fbt
rename to data/typelibrary/convert-1.0.0/typelib/DWORD2DWORD.fbt
diff --git a/data/typelibrary/convert-1.0.0/INT2INT.fbt b/data/typelibrary/convert-1.0.0/typelib/INT2INT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/INT2INT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/INT2INT.fbt
diff --git a/data/typelibrary/convert-1.0.0/LREAL2LREAL.fbt b/data/typelibrary/convert-1.0.0/typelib/LREAL2LREAL.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/LREAL2LREAL.fbt
rename to data/typelibrary/convert-1.0.0/typelib/LREAL2LREAL.fbt
diff --git a/data/typelibrary/convert-1.0.0/REAL2REAL.fbt b/data/typelibrary/convert-1.0.0/typelib/REAL2REAL.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/REAL2REAL.fbt
rename to data/typelibrary/convert-1.0.0/typelib/REAL2REAL.fbt
diff --git a/data/typelibrary/convert-1.0.0/SINT2SINT.fbt b/data/typelibrary/convert-1.0.0/typelib/SINT2SINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/SINT2SINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/SINT2SINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/STRING2STRING.fbt b/data/typelibrary/convert-1.0.0/typelib/STRING2STRING.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/STRING2STRING.fbt
rename to data/typelibrary/convert-1.0.0/typelib/STRING2STRING.fbt
diff --git a/data/typelibrary/convert-1.0.0/STRUCT_DEMUX.fbt b/data/typelibrary/convert-1.0.0/typelib/STRUCT_DEMUX.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/STRUCT_DEMUX.fbt
rename to data/typelibrary/convert-1.0.0/typelib/STRUCT_DEMUX.fbt
diff --git a/data/typelibrary/convert-1.0.0/STRUCT_MUX.fbt b/data/typelibrary/convert-1.0.0/typelib/STRUCT_MUX.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/STRUCT_MUX.fbt
rename to data/typelibrary/convert-1.0.0/typelib/STRUCT_MUX.fbt
diff --git a/data/typelibrary/convert-1.0.0/TIME2TIME.fbt b/data/typelibrary/convert-1.0.0/typelib/TIME2TIME.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/TIME2TIME.fbt
rename to data/typelibrary/convert-1.0.0/typelib/TIME2TIME.fbt
diff --git a/data/typelibrary/convert-1.0.0/UDINT2UDINT.fbt b/data/typelibrary/convert-1.0.0/typelib/UDINT2UDINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/UDINT2UDINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/UDINT2UDINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/UINT2UINT.fbt b/data/typelibrary/convert-1.0.0/typelib/UINT2UINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/UINT2UINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/UINT2UINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/USINT2USINT.fbt b/data/typelibrary/convert-1.0.0/typelib/USINT2USINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/USINT2USINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/USINT2USINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/WORD2WORD.fbt b/data/typelibrary/convert-1.0.0/typelib/WORD2WORD.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/WORD2WORD.fbt
rename to data/typelibrary/convert-1.0.0/typelib/WORD2WORD.fbt
diff --git a/data/typelibrary/convert-1.0.0/WSTRING2WSTRING.fbt b/data/typelibrary/convert-1.0.0/typelib/WSTRING2WSTRING.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/WSTRING2WSTRING.fbt
rename to data/typelibrary/convert-1.0.0/typelib/WSTRING2WSTRING.fbt
diff --git a/data/typelibrary/devices-1.0.0/MANIFEST.MF b/data/typelibrary/devices-1.0.0/MANIFEST.MF
index 75fe90f..b4a6ffc 100644
--- a/data/typelibrary/devices-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/devices-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Devices" symbolicName="devices" comment="Standard Library - Devices">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Devices" SymbolicName="devices" Comment="Standard Library - Devices">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/devices-1.0.0/BeagleBoneBlack.dev b/data/typelibrary/devices-1.0.0/typelib/BeagleBoneBlack.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/BeagleBoneBlack.dev
rename to data/typelibrary/devices-1.0.0/typelib/BeagleBoneBlack.dev
diff --git a/data/typelibrary/devices-1.0.0/FBRT_WINDOW.dev b/data/typelibrary/devices-1.0.0/typelib/FBRT_WINDOW.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/FBRT_WINDOW.dev
rename to data/typelibrary/devices-1.0.0/typelib/FBRT_WINDOW.dev
diff --git a/data/typelibrary/devices-1.0.0/FORTE_PC.dev b/data/typelibrary/devices-1.0.0/typelib/FORTE_PC.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/FORTE_PC.dev
rename to data/typelibrary/devices-1.0.0/typelib/FORTE_PC.dev
diff --git a/data/typelibrary/devices-1.0.0/PFC200.dev b/data/typelibrary/devices-1.0.0/typelib/PFC200.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/PFC200.dev
rename to data/typelibrary/devices-1.0.0/typelib/PFC200.dev
diff --git a/data/typelibrary/devices-1.0.0/RaspberryPI.dev b/data/typelibrary/devices-1.0.0/typelib/RaspberryPI.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/RaspberryPI.dev
rename to data/typelibrary/devices-1.0.0/typelib/RaspberryPI.dev
diff --git a/data/typelibrary/events-1.0.0/MANIFEST.MF b/data/typelibrary/events-1.0.0/MANIFEST.MF
index 181ab62..4a410cb 100644
--- a/data/typelibrary/events-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/events-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Events" symbolicName="events" comment="Standard Library - Events">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Events" SymbolicName="events" Comment="Standard Library - Events">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/events-1.0.0/ARTimeOut.adp b/data/typelibrary/events-1.0.0/typelib/ARTimeOut.adp
similarity index 100%
rename from data/typelibrary/events-1.0.0/ARTimeOut.adp
rename to data/typelibrary/events-1.0.0/typelib/ARTimeOut.adp
diff --git a/data/typelibrary/events-1.0.0/ATimeOut.adp b/data/typelibrary/events-1.0.0/typelib/ATimeOut.adp
similarity index 100%
rename from data/typelibrary/events-1.0.0/ATimeOut.adp
rename to data/typelibrary/events-1.0.0/typelib/ATimeOut.adp
diff --git a/data/typelibrary/events-1.0.0/E_CTD.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTD.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTD.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTD.fbt
diff --git a/data/typelibrary/events-1.0.0/E_CTU.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTU.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTU.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTU.fbt
diff --git a/data/typelibrary/events-1.0.0/E_CTUD.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTUD.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTUD.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTUD.fbt
diff --git a/data/typelibrary/events-1.0.0/E_CTUD_UDINT.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTUD_UDINT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTUD_UDINT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTUD_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/events-1.0.0/E_CYCLE.fbt b/data/typelibrary/events-1.0.0/typelib/E_CYCLE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CYCLE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CYCLE.fbt
diff --git a/data/typelibrary/events-1.0.0/E_DELAY.fbt b/data/typelibrary/events-1.0.0/typelib/E_DELAY.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_DELAY.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_DELAY.fbt
diff --git a/data/typelibrary/events-1.0.0/E_DEMUX.fbt b/data/typelibrary/events-1.0.0/typelib/E_DEMUX.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_DEMUX.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_DEMUX.fbt
diff --git a/data/typelibrary/events-1.0.0/E_D_FF.fbt b/data/typelibrary/events-1.0.0/typelib/E_D_FF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_D_FF.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_D_FF.fbt
diff --git a/data/typelibrary/events-1.0.0/E_F_TRIG.fbt b/data/typelibrary/events-1.0.0/typelib/E_F_TRIG.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_F_TRIG.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_F_TRIG.fbt
diff --git a/data/typelibrary/events-1.0.0/E_MERGE.fbt b/data/typelibrary/events-1.0.0/typelib/E_MERGE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_MERGE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_MERGE.fbt
diff --git a/data/typelibrary/events-1.0.0/E_N_TABLE.fbt b/data/typelibrary/events-1.0.0/typelib/E_N_TABLE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_N_TABLE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_N_TABLE.fbt
Binary files differ
diff --git a/data/typelibrary/events-1.0.0/E_PERMIT.fbt b/data/typelibrary/events-1.0.0/typelib/E_PERMIT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_PERMIT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_PERMIT.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RDELAY.fbt b/data/typelibrary/events-1.0.0/typelib/E_RDELAY.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RDELAY.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RDELAY.fbt
diff --git a/data/typelibrary/events-1.0.0/E_REND.fbt b/data/typelibrary/events-1.0.0/typelib/E_REND.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_REND.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_REND.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RESTART.fbt b/data/typelibrary/events-1.0.0/typelib/E_RESTART.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RESTART.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RESTART.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RS.fbt b/data/typelibrary/events-1.0.0/typelib/E_RS.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RS.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RS.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RTimeOut.fbt b/data/typelibrary/events-1.0.0/typelib/E_RTimeOut.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RTimeOut.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RTimeOut.fbt
diff --git a/data/typelibrary/events-1.0.0/E_R_TRIG.fbt b/data/typelibrary/events-1.0.0/typelib/E_R_TRIG.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_R_TRIG.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_R_TRIG.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SELECT.fbt b/data/typelibrary/events-1.0.0/typelib/E_SELECT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SELECT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SELECT.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SPLIT.fbt b/data/typelibrary/events-1.0.0/typelib/E_SPLIT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SPLIT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SPLIT.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SR.fbt b/data/typelibrary/events-1.0.0/typelib/E_SR.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SR.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SR.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SWITCH.fbt b/data/typelibrary/events-1.0.0/typelib/E_SWITCH.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SWITCH.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SWITCH.fbt
diff --git a/data/typelibrary/events-1.0.0/E_TABLE.fbt b/data/typelibrary/events-1.0.0/typelib/E_TABLE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TABLE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TABLE.fbt
Binary files differ
diff --git a/data/typelibrary/events-1.0.0/E_TABLE_CTRL.fbt b/data/typelibrary/events-1.0.0/typelib/E_TABLE_CTRL.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TABLE_CTRL.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TABLE_CTRL.fbt
diff --git a/data/typelibrary/events-1.0.0/E_TRAIN.fbt b/data/typelibrary/events-1.0.0/typelib/E_TRAIN.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TRAIN.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TRAIN.fbt
diff --git a/data/typelibrary/events-1.0.0/E_T_FF.fbt b/data/typelibrary/events-1.0.0/typelib/E_T_FF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_T_FF.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_T_FF.fbt
diff --git a/data/typelibrary/events-1.0.0/E_TimeOut.fbt b/data/typelibrary/events-1.0.0/typelib/E_TimeOut.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TimeOut.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TimeOut.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_PULSE.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_PULSE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_PULSE.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_PULSE.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TOF.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TOF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TOF.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TOF.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TON.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TON.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TON.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TON.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TONOF.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TONOF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TONOF.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TONOF.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TP.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TP.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TP.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TP.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF b/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF
index d56f6f2..4fd5c2d 100644
--- a/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="IEC61131-3" symbolicName="iec61131-3" comment="Standard Library - IEC61131-3">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="IEC61131-3" SymbolicName="iec61131-3" Comment="Standard Library - IEC61131-3">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_DT_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_DT_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_DT_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_DT_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_TOD_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_TOD_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_TOD_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_TOD_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIV.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIV.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIV.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIV.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIVTIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIVTIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIVTIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIVTIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_EXPT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_EXPT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_EXPT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_EXPT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOVE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOVE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOVE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOVE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MUL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MUL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MUL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MUL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MULTIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MULTIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MULTIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MULTIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DATE_DATE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DATE_DATE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DATE_DATE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DATE_DATE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_DT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_DT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_DT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_DT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_TRUNC.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_TRUNC.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_TRUNC.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_TRUNC.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_RS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_RS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_RS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_RS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_SR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_SR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_SR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_SR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_10.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_10.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_10.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_10.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_4.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_4.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_4.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_4.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_5.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_5.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_5.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_5.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_6.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_6.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_6.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_6.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_7.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_7.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_7.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_7.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_8.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_8.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_8.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_8.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_9.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_9.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_9.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_9.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_AND.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_AND.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_AND.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_AND.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_NOT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_NOT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_NOT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_NOT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_OR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_OR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_OR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_OR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_XOR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_XOR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_XOR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_XOR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_10.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_10.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_10.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_10.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_4.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_4.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_4.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_4.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_5.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_5.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_5.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_5.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_6.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_6.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_6.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_6.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_7.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_7.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_7.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_7.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_8.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_8.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_8.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_8.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_9.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_9.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_9.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_9.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_10.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_10.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_10.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_10.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_4.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_4.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_4.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_4.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_5.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_5.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_5.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_5.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_6.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_6.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_6.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_6.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_7.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_7.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_7.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_7.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_8.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_8.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_8.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_8.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_9.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_9.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_9.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_9.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT_DATE_TOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT_DATE_TOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT_DATE_TOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT_DATE_TOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_DELETE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_DELETE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_DELETE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_DELETE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_FIND.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_FIND.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_FIND.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_FIND.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_INSERT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_INSERT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_INSERT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_INSERT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_LEFT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEFT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_LEFT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEFT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_LEN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_LEN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_MID.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_MID.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_MID.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_MID.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_REPLACE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_REPLACE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_REPLACE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_REPLACE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_RIGHT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_RIGHT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_RIGHT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_RIGHT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_EQ.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_EQ.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_EQ.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_EQ.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_GE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_GE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_GT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_GT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_LE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_LE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_LT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_LT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_NE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_NE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_NE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_NE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UINT_TO_BCD_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UINT_TO_BCD_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UINT_TO_BCD_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UINT_TO_BCD_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_WORD_BCD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_WORD_BCD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_WORD_BCD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_WORD_BCD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_DATE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_DATE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_DATE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_DATE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_TOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_TOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_TOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_TOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BOOL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BOOL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BOOL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BOOL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_TO_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_TO_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_TO_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_TO_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_TO_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_TO_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_TO_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_TO_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_F_TRIG.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_F_TRIG.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_F_TRIG.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_F_TRIG.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_R_TRIG.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_R_TRIG.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_R_TRIG.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_R_TRIG.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ABS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ABS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ABS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ABS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ACOS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ACOS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ACOS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ACOS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ASIN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ASIN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ASIN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ASIN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ATAN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ATAN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ATAN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ATAN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_COS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_COS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_COS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_COS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_EXP.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_EXP.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_EXP.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_EXP.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_LN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_LN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_LOG.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LOG.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_LOG.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LOG.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_SIN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SIN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_SIN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SIN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_SQRT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SQRT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_SQRT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SQRT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_TAN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_TAN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_TAN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_TAN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_LIMIT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_LIMIT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_LIMIT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_LIMIT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_MAX.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MAX.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_MAX.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MAX.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_MIN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MIN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_MIN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MIN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_MUX_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MUX_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_MUX_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MUX_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_SEL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_SEL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_SEL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_SEL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/timers/FB_TOF.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TOF.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/timers/FB_TOF.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TOF.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/timers/FB_TON.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TON.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/timers/FB_TON.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TON.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/timers/FB_TP.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TP.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/timers/FB_TP.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TP.fbt
diff --git a/data/typelibrary/io-1.0.0/MANIFEST.MF b/data/typelibrary/io-1.0.0/MANIFEST.MF
index 8e971f9..1d6982a 100644
--- a/data/typelibrary/io-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/io-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="IO" symbolicName="io" comment="Standard Library - IO">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="IO" SymbolicName="io" Comment="Standard Library - IO">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/io-1.0.0/ADS/ADS_SERVER_CONFIG.fbt b/data/typelibrary/io-1.0.0/typelib/ADS/ADS_SERVER_CONFIG.fbt
old mode 100755
new mode 100644
similarity index 100%
rename from data/typelibrary/io-1.0.0/ADS/ADS_SERVER_CONFIG.fbt
rename to data/typelibrary/io-1.0.0/typelib/ADS/ADS_SERVER_CONFIG.fbt
diff --git a/data/typelibrary/io-1.0.0/ADS/SET_LOCAL_ADS_ADDRESS.fbt b/data/typelibrary/io-1.0.0/typelib/ADS/SET_LOCAL_ADS_ADDRESS.fbt
old mode 100755
new mode 100644
similarity index 100%
rename from data/typelibrary/io-1.0.0/ADS/SET_LOCAL_ADS_ADDRESS.fbt
rename to data/typelibrary/io-1.0.0/typelib/ADS/SET_LOCAL_ADS_ADDRESS.fbt
diff --git a/data/typelibrary/io-1.0.0/IB.fbt b/data/typelibrary/io-1.0.0/typelib/IB.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IB.fbt
rename to data/typelibrary/io-1.0.0/typelib/IB.fbt
diff --git a/data/typelibrary/io-1.0.0/ID.fbt b/data/typelibrary/io-1.0.0/typelib/ID.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/ID.fbt
rename to data/typelibrary/io-1.0.0/typelib/ID.fbt
diff --git a/data/typelibrary/io-1.0.0/IE.fbt b/data/typelibrary/io-1.0.0/typelib/IE.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IE.fbt
rename to data/typelibrary/io-1.0.0/typelib/IE.fbt
diff --git a/data/typelibrary/io-1.0.0/IL.fbt b/data/typelibrary/io-1.0.0/typelib/IL.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IL.fbt
rename to data/typelibrary/io-1.0.0/typelib/IL.fbt
diff --git a/data/typelibrary/io-1.0.0/IW.fbt b/data/typelibrary/io-1.0.0/typelib/IW.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IW.fbt
rename to data/typelibrary/io-1.0.0/typelib/IW.fbt
diff --git a/data/typelibrary/io-1.0.0/IX.fbt b/data/typelibrary/io-1.0.0/typelib/IX.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IX.fbt
rename to data/typelibrary/io-1.0.0/typelib/IX.fbt
diff --git a/data/typelibrary/io-1.0.0/PLC01A1/PLC01A1.fbt b/data/typelibrary/io-1.0.0/typelib/PLC01A1/PLC01A1.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLC01A1/PLC01A1.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLC01A1/PLC01A1.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDI16.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDI16.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDI16.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDI16.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDO16.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDO16.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDO16.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDO16.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSESC.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSESC.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSESC.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSESC.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextBusAdapter.adp b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextBusAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextBusAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextBusAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextMaster.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextMaster.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextMaster.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextMaster.fbt
diff --git a/data/typelibrary/io-1.0.0/QB.fbt b/data/typelibrary/io-1.0.0/typelib/QB.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QB.fbt
rename to data/typelibrary/io-1.0.0/typelib/QB.fbt
diff --git a/data/typelibrary/io-1.0.0/QD.fbt b/data/typelibrary/io-1.0.0/typelib/QD.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QD.fbt
rename to data/typelibrary/io-1.0.0/typelib/QD.fbt
diff --git a/data/typelibrary/io-1.0.0/QL.fbt b/data/typelibrary/io-1.0.0/typelib/QL.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QL.fbt
rename to data/typelibrary/io-1.0.0/typelib/QL.fbt
diff --git a/data/typelibrary/io-1.0.0/QW.fbt b/data/typelibrary/io-1.0.0/typelib/QW.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QW.fbt
rename to data/typelibrary/io-1.0.0/typelib/QW.fbt
diff --git a/data/typelibrary/io-1.0.0/QX.fbt b/data/typelibrary/io-1.0.0/typelib/QX.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QX.fbt
rename to data/typelibrary/io-1.0.0/typelib/QX.fbt
diff --git a/data/typelibrary/io-1.0.0/eliteboard/EliteBoard.fbt b/data/typelibrary/io-1.0.0/typelib/eliteboard/EliteBoard.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/eliteboard/EliteBoard.fbt
rename to data/typelibrary/io-1.0.0/typelib/eliteboard/EliteBoard.fbt
diff --git a/data/typelibrary/io-1.0.0/eliteboard/Port.fbt b/data/typelibrary/io-1.0.0/typelib/eliteboard/Port.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/eliteboard/Port.fbt
rename to data/typelibrary/io-1.0.0/typelib/eliteboard/Port.fbt
diff --git a/data/typelibrary/io-1.0.0/eliteboard/PortAdapter.adp b/data/typelibrary/io-1.0.0/typelib/eliteboard/PortAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/eliteboard/PortAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/eliteboard/PortAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/embrick/EBBusAdapter.adp b/data/typelibrary/io-1.0.0/typelib/embrick/EBBusAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBBusAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBBusAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/embrick/EBMaster.fbt b/data/typelibrary/io-1.0.0/typelib/embrick/EBMaster.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBMaster.fbt
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBMaster.fbt
diff --git a/data/typelibrary/io-1.0.0/embrick/EBSlave2181.fbt b/data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2181.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBSlave2181.fbt
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2181.fbt
diff --git a/data/typelibrary/io-1.0.0/embrick/EBSlave2301.fbt b/data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2301.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBSlave2301.fbt
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2301.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago1405_6.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago1405_6.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago1405_6.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago1405_6.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago1504_5.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago1504_5.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago1504_5.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago1504_5.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago1506.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago1506.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago1506.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago1506.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago459.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago459.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago459.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago459.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/WagoBusAdapter.adp b/data/typelibrary/io-1.0.0/typelib/wago/WagoBusAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/WagoBusAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/wago/WagoBusAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/wago/WagoMaster.fbt b/data/typelibrary/io-1.0.0/typelib/wago/WagoMaster.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/WagoMaster.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/WagoMaster.fbt
diff --git a/data/typelibrary/io-1.0.0/zephyr/Esp32EthernetKitIO.fbt b/data/typelibrary/io-1.0.0/typelib/zephyr/Esp32EthernetKitIO.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/zephyr/Esp32EthernetKitIO.fbt
rename to data/typelibrary/io-1.0.0/typelib/zephyr/Esp32EthernetKitIO.fbt
diff --git a/data/typelibrary/io-1.0.0/zephyr/ZephyrIO.fbt b/data/typelibrary/io-1.0.0/typelib/zephyr/ZephyrIO.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/zephyr/ZephyrIO.fbt
rename to data/typelibrary/io-1.0.0/typelib/zephyr/ZephyrIO.fbt
diff --git a/data/typelibrary/math-1.0.0/MANIFEST.MF b/data/typelibrary/math-1.0.0/MANIFEST.MF
index 047db4f..0039f80 100644
--- a/data/typelibrary/math-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/math-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Math" symbolicName="math" comment="Standard Library - Math">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Math" SymbolicName="math" Comment="Standard Library - Math">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/math-1.0.0/FB_RANDOM.fbt b/data/typelibrary/math-1.0.0/typelib/FB_RANDOM.fbt
similarity index 100%
rename from data/typelibrary/math-1.0.0/FB_RANDOM.fbt
rename to data/typelibrary/math-1.0.0/typelib/FB_RANDOM.fbt
diff --git a/data/typelibrary/net-1.0.0/MANIFEST.MF b/data/typelibrary/net-1.0.0/MANIFEST.MF
index 67b9b27..556efa7 100644
--- a/data/typelibrary/net-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/net-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Net" symbolicName="net" comment="Standard Library - Net">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Net" SymbolicName="net" Comment="Standard Library - Net">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/net-1.0.0/CLIENT_1.fbt b/data/typelibrary/net-1.0.0/typelib/CLIENT_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/CLIENT_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/CLIENT_1.fbt
diff --git a/data/typelibrary/net-1.0.0/CLIENT_2_1.fbt b/data/typelibrary/net-1.0.0/typelib/CLIENT_2_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/CLIENT_2_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/CLIENT_2_1.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_0.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_0.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_0.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_0.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_1.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_1.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_10.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_10.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_10.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_10.fbt
Binary files differ
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_2.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_2.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_2.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_2.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_3.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_3.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_3.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_3.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_4.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_4.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_4.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_4.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_5.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_5.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_5.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_5.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_6.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_6.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_6.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_6.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_7.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_7.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_7.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_7.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_8.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_8.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_8.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_8.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_9.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_9.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_9.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_9.fbt
Binary files differ
diff --git a/data/typelibrary/net-1.0.0/SERVER_1.fbt b/data/typelibrary/net-1.0.0/typelib/SERVER_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SERVER_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/SERVER_1.fbt
diff --git a/data/typelibrary/net-1.0.0/SERVER_1_2.fbt b/data/typelibrary/net-1.0.0/typelib/SERVER_1_2.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SERVER_1_2.fbt
rename to data/typelibrary/net-1.0.0/typelib/SERVER_1_2.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_0.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_0.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_0.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_0.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_1.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_1.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_10.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_10.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_10.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_10.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_2.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_2.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_2.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_2.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_3.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_3.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_3.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_3.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_4.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_4.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_4.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_4.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_5.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_5.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_5.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_5.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_6.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_6.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_6.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_6.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_7.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_7.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_7.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_7.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_8.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_8.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_8.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_8.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_9.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_9.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_9.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_9.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF b/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF
index 8f0374b..f84176a 100644
--- a/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Reconfiguration" symbolicName="reconfiguration" comment="Standard Library - Reconfiguration">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Reconfiguration" SymbolicName="reconfiguration" Comment="Standard Library - Reconfiguration">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_KILL_ELEM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_KILL_ELEM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_KILL_ELEM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_KILL_ELEM.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_SET_EVT.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_SET_EVT.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_SET_EVT.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_SET_EVT.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_START_ELEM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_START_ELEM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_START_ELEM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_START_ELEM.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_STOP_ELEM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_STOP_ELEM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_STOP_ELEM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_STOP_ELEM.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_CREATE_CONN.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_CONN.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_CREATE_CONN.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_CONN.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_CREATE_FB.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_FB.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_CREATE_FB.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_FB.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_DEL_CONN.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_CONN.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_DEL_CONN.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_CONN.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_DEL_FB.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_FB.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_DEL_FB.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_FB.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_REC_CONN.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_REC_CONN.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_REC_CONN.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_REC_CONN.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_SET_PARM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_SET_PARM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_SET_PARM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_SET_PARM.fbt
diff --git a/data/typelibrary/resources-1.0.0/MANIFEST.MF b/data/typelibrary/resources-1.0.0/MANIFEST.MF
index 3e697e8..cbe52c9 100644
--- a/data/typelibrary/resources-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/resources-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Resources" symbolicName="resources" comment="Standard Library - Resources">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Resources" SymbolicName="resources" Comment="Standard Library - Resources">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/resources-1.0.0/EMB_RES.res b/data/typelibrary/resources-1.0.0/typelib/EMB_RES.res
similarity index 100%
rename from data/typelibrary/resources-1.0.0/EMB_RES.res
rename to data/typelibrary/resources-1.0.0/typelib/EMB_RES.res
diff --git a/data/typelibrary/rtevents-1.0.0/MANIFEST.MF b/data/typelibrary/rtevents-1.0.0/MANIFEST.MF
index 0b0a150..85f2246 100644
--- a/data/typelibrary/rtevents-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/rtevents-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Rtevents" symbolicName="rtevents" comment="Standard Library - RT Events">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Rtevents" SymbolicName="rtevents" Comment="Standard Library - RT Events">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_1.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_1.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_1.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_1.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_10.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_10.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_10.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_10.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_11.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_11.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_11.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_11.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_2.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_2.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_2.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_2.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_3.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_3.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_3.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_3.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_4.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_4.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_4.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_4.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_5.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_5.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_5.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_5.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_6.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_6.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_6.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_6.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_7.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_7.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_7.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_7.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_8.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_8.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_8.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_8.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_9.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_9.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_9.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_9.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_CYCLE.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_CYCLE.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_CYCLE.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_CYCLE.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_DELAY.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_DELAY.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_DELAY.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_DELAY.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_DEMUX.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_DEMUX.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_DEMUX.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_DEMUX.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_EC_COUPLER.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_EC_COUPLER.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_EC_COUPLER.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_EC_COUPLER.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_F_TRIG.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_F_TRIG.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_F_TRIG.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_F_TRIG.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_MERGE.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_MERGE.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_MERGE.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_MERGE.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_PERMIT.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_PERMIT.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_PERMIT.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_PERMIT.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_REND.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_REND.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_REND.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_REND.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_R_TRIG.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_R_TRIG.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_R_TRIG.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_R_TRIG.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_SELECT.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_SELECT.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_SELECT.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_SELECT.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_SPLIT.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_SPLIT.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_SPLIT.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_SPLIT.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_SWITCH.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_SWITCH.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_SWITCH.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_SWITCH.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_TRAIN.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_TRAIN.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_TRAIN.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_TRAIN.fbt
diff --git a/data/typelibrary/segments-1.0.0/MANIFEST.MF b/data/typelibrary/segments-1.0.0/MANIFEST.MF
index d127536..46da92e 100644
--- a/data/typelibrary/segments-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/segments-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Segments" symbolicName="segments" comment="Standard Library - Segments">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Segments" SymbolicName="segments" Comment="Standard Library - Segments">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/segments-1.0.0/Ethernet.seg b/data/typelibrary/segments-1.0.0/typelib/Ethernet.seg
similarity index 100%
rename from data/typelibrary/segments-1.0.0/Ethernet.seg
rename to data/typelibrary/segments-1.0.0/typelib/Ethernet.seg
diff --git a/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF b/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF
index 36a848f..35505b1 100644
--- a/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="SignalProcessing" symbolicName="signalprocessing" comment="Standard Library - Signal Processing">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="SignalProcessing" SymbolicName="signalprocessing" Comment="Standard Library - Signal Processing">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/signalprocessing-1.0.0/DualHysteresis.fbt b/data/typelibrary/signalprocessing-1.0.0/typelib/DualHysteresis.fbt
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/DualHysteresis.fbt
rename to data/typelibrary/signalprocessing-1.0.0/typelib/DualHysteresis.fbt
Binary files differ
diff --git a/data/typelibrary/signalprocessing-1.0.0/FIELDBUS_PERCENT_TO_WORD.fct b/data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_PERCENT_TO_WORD.fct
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/FIELDBUS_PERCENT_TO_WORD.fct
rename to data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_PERCENT_TO_WORD.fct
diff --git a/data/typelibrary/signalprocessing-1.0.0/FIELDBUS_SIGNAL.gcf b/data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_SIGNAL.gcf
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/FIELDBUS_SIGNAL.gcf
rename to data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_SIGNAL.gcf
diff --git a/data/typelibrary/signalprocessing-1.0.0/FIELDBUS_WORD_TO_PERCENT.fct b/data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_WORD_TO_PERCENT.fct
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/FIELDBUS_WORD_TO_PERCENT.fct
rename to data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_WORD_TO_PERCENT.fct
diff --git a/data/typelibrary/utils-1.0.0/MANIFEST.MF b/data/typelibrary/utils-1.0.0/MANIFEST.MF
index 021fff9..3596ec6 100644
--- a/data/typelibrary/utils-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/utils-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
-    <product name="Utils" symbolicName="utils" comment="Standard Library - Utils">
-        <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
-    </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+    <Product Name="Utils" SymbolicName="utils" Comment="Standard Library - Utils">
+        <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+    </Product>
 </Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/utils-1.0.0/APPEND_STRING_2.fbt b/data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/APPEND_STRING_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_2.fbt
diff --git a/data/typelibrary/utils-1.0.0/APPEND_STRING_3.fbt b/data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_3.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/APPEND_STRING_3.fbt
rename to data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_3.fbt
diff --git a/data/typelibrary/utils-1.0.0/ARRAY2ARRAY_2_LREAL.fbt b/data/typelibrary/utils-1.0.0/typelib/ARRAY2ARRAY_2_LREAL.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/ARRAY2ARRAY_2_LREAL.fbt
rename to data/typelibrary/utils-1.0.0/typelib/ARRAY2ARRAY_2_LREAL.fbt
diff --git a/data/typelibrary/utils-1.0.0/ARRAY2VALUES_2_LREAL.fbt b/data/typelibrary/utils-1.0.0/typelib/ARRAY2VALUES_2_LREAL.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/ARRAY2VALUES_2_LREAL.fbt
rename to data/typelibrary/utils-1.0.0/typelib/ARRAY2VALUES_2_LREAL.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_1.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_1.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_1.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_1.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_10.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_10.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_10.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_10.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_2.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_2.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_3.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_3.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_3.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_3.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_4.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_4.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_4.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_4.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_5.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_5.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_5.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_5.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_6.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_6.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_6.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_6.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_7.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_7.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_7.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_7.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_8.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_8.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_8.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_8.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_9.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_9.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_9.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_9.fbt
diff --git a/data/typelibrary/utils-1.0.0/E_STOPWATCH.fbt b/data/typelibrary/utils-1.0.0/typelib/E_STOPWATCH.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/E_STOPWATCH.fbt
rename to data/typelibrary/utils-1.0.0/typelib/E_STOPWATCH.fbt
diff --git a/data/typelibrary/utils-1.0.0/F_MUX_2_1.fbt b/data/typelibrary/utils-1.0.0/typelib/F_MUX_2_1.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/F_MUX_2_1.fbt
rename to data/typelibrary/utils-1.0.0/typelib/F_MUX_2_1.fbt
diff --git a/data/typelibrary/utils-1.0.0/F_MUX_2_2.fbt b/data/typelibrary/utils-1.0.0/typelib/F_MUX_2_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/F_MUX_2_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/F_MUX_2_2.fbt
diff --git a/data/typelibrary/utils-1.0.0/GET_AT_INDEX.fbt b/data/typelibrary/utils-1.0.0/typelib/GET_AT_INDEX.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/GET_AT_INDEX.fbt
rename to data/typelibrary/utils-1.0.0/typelib/GET_AT_INDEX.fbt
diff --git a/data/typelibrary/utils-1.0.0/GET_STRUCT_VALUE.fbt b/data/typelibrary/utils-1.0.0/typelib/GET_STRUCT_VALUE.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/GET_STRUCT_VALUE.fbt
rename to data/typelibrary/utils-1.0.0/typelib/GET_STRUCT_VALUE.fbt
diff --git a/data/typelibrary/utils-1.0.0/GetInstancePath.fbt b/data/typelibrary/utils-1.0.0/typelib/GetInstancePath.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/GetInstancePath.fbt
rename to data/typelibrary/utils-1.0.0/typelib/GetInstancePath.fbt
diff --git a/data/typelibrary/utils-1.0.0/OUT_ANY_CONSOLE.fbt b/data/typelibrary/utils-1.0.0/typelib/OUT_ANY_CONSOLE.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/OUT_ANY_CONSOLE.fbt
rename to data/typelibrary/utils-1.0.0/typelib/OUT_ANY_CONSOLE.fbt
diff --git a/data/typelibrary/utils-1.0.0/SET_AT_INDEX.fbt b/data/typelibrary/utils-1.0.0/typelib/SET_AT_INDEX.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/SET_AT_INDEX.fbt
rename to data/typelibrary/utils-1.0.0/typelib/SET_AT_INDEX.fbt
diff --git a/data/typelibrary/utils-1.0.0/SET_STRUCT_VALUE.fbt b/data/typelibrary/utils-1.0.0/typelib/SET_STRUCT_VALUE.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/SET_STRUCT_VALUE.fbt
rename to data/typelibrary/utils-1.0.0/typelib/SET_STRUCT_VALUE.fbt
diff --git a/data/typelibrary/utils-1.0.0/STEST_END.fbt b/data/typelibrary/utils-1.0.0/typelib/STEST_END.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/STEST_END.fbt
rename to data/typelibrary/utils-1.0.0/typelib/STEST_END.fbt
diff --git a/data/typelibrary/utils-1.0.0/TEST_CONDITION.fbt b/data/typelibrary/utils-1.0.0/typelib/TEST_CONDITION.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/TEST_CONDITION.fbt
rename to data/typelibrary/utils-1.0.0/typelib/TEST_CONDITION.fbt
diff --git a/data/typelibrary/utils-1.0.0/VALUES2ARRAY_2_LREAL.fbt b/data/typelibrary/utils-1.0.0/typelib/VALUES2ARRAY_2_LREAL.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/VALUES2ARRAY_2_LREAL.fbt
rename to data/typelibrary/utils-1.0.0/typelib/VALUES2ARRAY_2_LREAL.fbt
diff --git a/data/typelibrary/utils-1.0.0/selection/F_SEL_E_2.fbt b/data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/selection/F_SEL_E_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_2.fbt
Binary files differ
diff --git a/data/typelibrary/utils-1.0.0/selection/F_SEL_E_3.fbt b/data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_3.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/selection/F_SEL_E_3.fbt
rename to data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_3.fbt
diff --git a/data/typelibrary/utils-1.0.0/selection/F_SEL_E_4.fbt b/data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_4.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/selection/F_SEL_E_4.fbt
rename to data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_4.fbt
diff --git a/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml b/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml
index 379ea3f..5cb7cbd 100644
--- a/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.fordiac.ide.comgeneration.feature"
       label="Communication FB generation"
-      version="2.0.0.qualifier"
+      version="3.0.0.qualifier"
       provider-name="Eclipse 4diac">
 
    <description>
@@ -172,9 +172,6 @@
 
    <plugin
          id="org.eclipse.fordiac.ide.comgeneration"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
+         version="0.0.0"/>
 
 </feature>
diff --git a/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml b/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml
index 8256059..043f3e6 100644
--- a/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.fordiac.ide.deployment.feature"
       label="Deployment"
-      version="2.0.1.qualifier"
+      version="3.0.0.qualifier"
       provider-name="Eclipse 4diac">
 
    <description>
@@ -168,6 +168,10 @@
 United States, other countries, or both.\n
    </license>
 
+   <includes
+         id="org.eclipse.fordiac.ide.milo"
+         version="0.0.0"/>
+
    <requires>
       <import feature="org.eclipse.fordiac.ide.workbench.feature"/>
       <import feature="org.eclipse.fordiac.ide.typeeditor.feature"/>
@@ -222,4 +226,11 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.fordiac.ide.deployment.opcua"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/features/org.eclipse.fordiac.ide.export.feature/feature.xml b/features/org.eclipse.fordiac.ide.export.feature/feature.xml
index 8946278..c139783 100644
--- a/features/org.eclipse.fordiac.ide.export.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.export.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.fordiac.ide.export.feature"
       label="Export Function Block Types"
-      version="2.0.1.qualifier"
+      version="3.0.0.qualifier"
       provider-name="Eclipse 4diac">
 
    <description>
diff --git a/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml b/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml
index b624950..e2e88a8 100644
--- a/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.fordiac.ide.runtime.feature"
       label="Runtime"
-      version="2.0.0.qualifier"
+      version="3.0.0.qualifier"
       provider-name="Eclipse 4diac">
 
    <description>
diff --git a/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml b/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml
index f922b13..040b6b1 100644
--- a/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.fordiac.ide.structuredtext.feature"
       label="Structured Text Feature"
-      version="2.0.1.qualifier"
+      version="3.0.0.qualifier"
       provider-name="Eclipse 4diac">
 
    <description>
diff --git a/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml b/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml
index 8821832..0d3118d 100644
--- a/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.fordiac.ide.typeeditor.feature"
       label="Function Block Type Editor"
-      version="2.0.1.qualifier"
+      version="3.0.0.qualifier"
       provider-name="Eclipse 4diac">
 
    <description>
diff --git a/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml b/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
index d6d5f04..fc6d3ff 100644
--- a/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.fordiac.ide.workbench.feature"
       label="Workbench Base"
-      version="2.0.1.qualifier"
+      version="3.0.0.qualifier"
       provider-name="Eclipse 4diac">
 
    <description>
diff --git a/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF
index d8e3879..5e5cfa2 100644
--- a/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Ant
 Bundle-SymbolicName: org.eclipse.fordiac.ide.ant;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Automatic-Module-Name: org.eclipse.fordiac.ide.ant
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.core.resources,
diff --git a/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF
index 23c3b30..d428c37 100644
--- a/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF
@@ -29,7 +29,7 @@
  org.eclipse.fordiac.ide.model.search
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Application modeling
 Bundle-Activator: org.eclipse.fordiac.ide.application.ApplicationPlugin
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java
index 88010e0..1bb9ebf 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java
@@ -26,7 +26,7 @@
 import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
 import org.eclipse.fordiac.ide.model.libraryElement.Resource;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.commands.Command;
 
@@ -37,7 +37,7 @@
 	// subapp interface is finished
 
 	public NewSubAppCommand(final FBNetwork fbNetwork, final List<?> selection, final int x, final int y) {
-		super(fbNetwork, LibraryElementFactory.eINSTANCE.createSubApp(), x, y);
+		super(fbNetwork, LibraryElementFactory.eINSTANCE.createUntypedSubApp(), x, y);
 		getElement().setSubAppNetwork(LibraryElementFactory.eINSTANCE.createFBNetwork());
 		addElements = new AddElementsToSubAppCommand(getElement(), selection);
 		checkMapping(selection);
@@ -86,7 +86,8 @@
 		if (null != mapSubappCmd) {
 			mapSubappCmd.undo();
 		}
-		// this has to be done before super.undo() as otherwise addElements does not have the correct networks.
+		// this has to be done before super.undo() as otherwise addElements does not
+		// have the correct networks.
 		addElements.undo();
 		super.undo();
 	}
@@ -123,7 +124,7 @@
 	}
 
 	@Override
-	public SubApp getElement() {
-		return (SubApp) super.getElement();
+	public UntypedSubApp getElement() {
+		return (UntypedSubApp) super.getElement();
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java
index 37508a4..5485071 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java
@@ -20,7 +20,6 @@
 import org.eclipse.fordiac.ide.application.commands.ConvertGroupToSubappCommand;
 import org.eclipse.fordiac.ide.application.editparts.IContainerEditPart;
 import org.eclipse.fordiac.ide.application.policies.ContainerContentLayoutPolicy;
-import org.eclipse.fordiac.ide.model.commands.change.UntypeSubAppCommand;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
 import org.eclipse.fordiac.ide.model.libraryElement.Group;
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
@@ -30,8 +29,6 @@
 import org.eclipse.gef.GraphicalViewer;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
-import org.eclipse.gef.commands.CommandStackEvent;
-import org.eclipse.gef.commands.CommandStackEventListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IEditorPart;
@@ -39,8 +36,7 @@
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.handlers.HandlerUtil;
 
-public class ConvertToSubappHandler extends AbstractHandler implements CommandStackEventListener {
-	private CommandStack commandStack;
+public class ConvertToSubappHandler extends AbstractHandler {
 
 	@Override
 	public Object execute(final ExecutionEvent event) throws ExecutionException {
@@ -48,11 +44,7 @@
 		final ISelection selection = HandlerUtil.getCurrentSelection(event);
 		final Group group = getSelectedGroup(selection);
 		if (null != group) {
-			if (commandStack != null) {
-				commandStack.removeCommandStackEventListener(this);
-			}
-
-			commandStack = HandlerHelper.getCommandStack(editor);
+			final CommandStack commandStack = HandlerHelper.getCommandStack(editor);
 			final ConvertGroupToSubappCommand conversion = new ConvertGroupToSubappCommand(group);
 			if (conversion.canExecute()) {
 				commandStack.execute(conversion);
@@ -62,8 +54,6 @@
 				final EditPart newSubappEP = (EditPart) v.getEditPartRegistry().get(conversion.getCreatedElement());
 				adjustMinBounds(commandStack, newSubappEP);
 			}
-
-			commandStack.addCommandStackEventListener(this);
 		}
 		return Status.OK_STATUS;
 	}
@@ -93,8 +83,7 @@
 	}
 
 	private static Group getSelectedGroup(final Object selection) {
-		if (selection instanceof IStructuredSelection) {
-			final IStructuredSelection structSel = ((IStructuredSelection) selection);
+		if (selection instanceof final IStructuredSelection structSel) {
 			if (!structSel.isEmpty() && (structSel.size() == 1)) {
 				return getGroup(structSel.getFirstElement());
 			}
@@ -104,7 +93,7 @@
 
 	private static Group getGroup(final Object currentElement) {
 		Object elementToCheck = currentElement;
-		if(elementToCheck instanceof EditPart) {
+		if (elementToCheck instanceof EditPart) {
 			elementToCheck = ((EditPart) elementToCheck).getModel();
 		}
 
@@ -114,26 +103,10 @@
 		return null;
 	}
 
-	@Override
-	public void stackChanged(final CommandStackEvent event) {
-		if ((event.getCommand() instanceof UntypeSubAppCommand)
-				&& ((event.getDetail() == CommandStack.POST_UNDO) || (event.getDetail() == CommandStack.POST_REDO))) {
-			refreshSelection(((UntypeSubAppCommand) event.getCommand()).getSubapp());
-		}
-	}
-
 	private static void refreshSelection(final SubApp subapp) {
 		final IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
 				.getActiveEditor();
 		HandlerHelper.getViewer(editor).deselectAll();
 		HandlerHelper.selectElement(subapp, HandlerHelper.getViewer(editor));
 	}
-
-	@Override
-	public void dispose() {
-		if (commandStack != null) {
-			commandStack.removeCommandStackEventListener(this);
-		}
-		super.dispose();
-	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java
index 2a9ba38..6d6c14a 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.application.handlers;
 
+import java.awt.event.ActionListener;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -22,9 +23,14 @@
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.fordiac.ide.application.editparts.ErrorMarkerFBNEditPart;
+import org.eclipse.fordiac.ide.application.editparts.ErrorMarkerInterfaceEditPart;
 import org.eclipse.fordiac.ide.gef.editparts.AbstractConnectableEditPart;
 import org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerDataType;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.impl.ErrorMarkerDataTypeImpl;
+import org.eclipse.fordiac.ide.model.search.dialog.FBTypeEntryDataHandler;
+import org.eclipse.fordiac.ide.model.search.dialog.FBTypeSearchResultTable;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibrary;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
@@ -36,11 +42,21 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 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 org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.PlatformUI;
@@ -48,20 +64,36 @@
 import org.eclipse.ui.part.FileEditorInput;
 
 public class RepairCommandHandler extends AbstractHandler {
-	private static final String PACKAGE_NAME = ""; //$NON-NLS-1$
-	private TypeLibrary typeLib;
-	private IEditorPart editor;
+
 	private IStructuredSelection sel;
 
+	private enum Choices {
+		ADD(FordiacMessages.Dialog_Repair_Add), REMOVE(FordiacMessages.Dialog_Repair_Remove);
+
+		private final String text;
+
+		Choices(final String s) {
+			text = s;
+		}
+
+		@Override
+		public String toString() {
+			return text;
+		}
+
+	}
+
 	@Override
 	public Object execute(final ExecutionEvent event) throws ExecutionException {
+		TypeLibrary typeLib;
+		IEditorPart editor;
 		sel = HandlerUtil.getCurrentStructuredSelection(event);
 		editor = HandlerUtil.getActiveEditor(event);
 		final AbstractConnectableEditPart editPart = getEditPartFromSelection(sel);
 		typeLib = getTypeLibraryFromEditorInput(editor.getEditorInput());
-
-		repairEditPart(editPart);
-
+		if (editPart != null) {
+			repairEditPart(editPart, typeLib.getProject().getName());
+		}
 		typeLib.reload();
 		return null;
 	}
@@ -70,16 +102,85 @@
 		return TypeLibraryManager.INSTANCE.getTypeEntryForFile(((FileEditorInput) input).getFile()).getTypeLibrary();
 	}
 
-	private void repairEditPart(final AbstractConnectableEditPart editPart) {
+	private void repairEditPart(final AbstractConnectableEditPart editPart, final String projectName) {
 		final ErrorMarkerDataType dataTypeMarker = editPart.getAdapter(ErrorMarkerDataTypeImpl.class);
 		if (dataTypeMarker != null) {
-			showRestrictedWizard(dataTypeMarker.getName(), TypeLibraryTags.DATA_TYPE_FILE_ENDING_WITH_DOT);
+			showRestrictedNewTypeWizard(dataTypeMarker.getTypeEntry().getTypeName(),
+					TypeLibraryTags.DATA_TYPE_FILE_ENDING_WITH_DOT, projectName);
 		}
 		final ErrorMarkerFBNEditPart fBNEditPartMarker = editPart.getAdapter(ErrorMarkerFBNEditPart.class);
 		if (fBNEditPartMarker != null) {
-			showRestrictedWizard(fBNEditPartMarker.getINamedElement().getName(),
-					TypeLibraryTags.FB_TYPE_FILE_ENDING_WITH_DOT);
+			showRestrictedNewTypeWizard(((FBNetworkElement) fBNEditPartMarker.getINamedElement()).getTypeName(),
+					TypeLibraryTags.FB_TYPE_FILE_ENDING_WITH_DOT, projectName);
 		}
+		final ErrorMarkerInterfaceEditPart interfaceEditPart = editPart.getAdapter(ErrorMarkerInterfaceEditPart.class);
+		if (interfaceEditPart != null) {
+			showAddOrRemoveWizard(interfaceEditPart);
+		}
+	}
+
+	private void showAddOrRemoveWizard(final ErrorMarkerInterfaceEditPart interfaceEditPart) {
+		final ChooseActionWizardPage<Choices> choosePage = new ChooseActionWizardPage<>(
+				FordiacMessages.Dialog_Add_Or_Remove_Pin, Choices.class);
+		final ChangedTypesWizardPage infoPage = new ChangedTypesWizardPage("Pending changes",
+				interfaceEditPart.getParent().getAdapter(SubApp.class).getTypeEntry());
+		final var wizard = new Wizard() {
+
+			@Override
+			public boolean performFinish() {
+				// TODO depending on choice, search instances with faulty pin, and delete pins
+				// or simply add pin to typentry.
+				Choices choice = null;
+				choice = choosePage.getSelection();
+				switch (choice) {
+				case ADD: // TODO add method here to add the pin to the typeEditable
+					break;
+				case REMOVE:
+					removeInterfaceElementFromInstances(interfaceEditPart);
+					break;
+				default:
+					break;
+				}
+				return true;
+			}
+
+			@Override
+			public IWizardPage getNextPage(final IWizardPage page) {
+				if ((page instanceof final ChooseActionWizardPage<?> choosePage)
+						&& choosePage.choice.equals(Choices.REMOVE)) {
+					return Arrays.stream(getPages()).filter(ChangedTypesWizardPage.class::isInstance).findFirst()
+							.orElse(null);
+				}
+				return null;
+			}
+
+			@Override
+			public boolean canFinish() {
+				return true;
+			}
+
+		};
+		final WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getActivePage().getActiveEditor().getSite().getShell(), wizard);
+		final ActionListener alist = e -> dialog.updateButtons();
+
+		choosePage.addButtonListener(alist);
+		wizard.addPage(choosePage);
+		infoPage.setPreviousPage(choosePage);
+		wizard.addPage(infoPage);
+
+		dialog.create();
+		dialog.open();
+
+	}
+
+	private static void removeInterfaceElementFromInstances(final ErrorMarkerInterfaceEditPart elem) {
+//		TODO use the element to remove similar pins from all instances
+//		final FBType te = ((FBType) elem.getParent().getModel()).getTypeEntry().getTypeEditable();
+//		te.getInterfaceList().getAllInterfaceElements().removeIf(el -> {
+//			System.out.println(el);
+//			return true;
+//		});
 	}
 
 	private static AbstractConnectableEditPart getEditPartFromSelection(final IStructuredSelection sel) {
@@ -89,12 +190,13 @@
 		return part.isPresent() ? part.get() : null;
 	}
 
-	private void showRestrictedWizard(final String name, final String fileEnding) {
+	private void showRestrictedNewTypeWizard(final String name, final String fileEnding, final String projectName) {
 		final NewTypeWizard wizard = new NewTypeWizard() {
 			@Override
 			protected NewFBTypeWizardPage createNewFBTypeWizardPage() {
 				return new NewFBTypeWizardPage(sel);
 			}
+
 		};
 		final WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
 				.getActivePage().getActiveEditor().getSite().getShell(), wizard);
@@ -102,21 +204,20 @@
 		final NewFBTypeWizardPage page = (NewFBTypeWizardPage) dialog.getCurrentPage();
 		page.setTemplateFileFilter(pathname -> pathname.getName().toUpperCase().endsWith(fileEnding));
 		page.setFileName(name);
-		restrictName(page.getControl());
 
 		final TableViewer tv = page.getTemplateViewer();
 		final Object selection = tv.getElementAt(0);
+
 		// have to check if any template at all could be found
 		if (selection != null) {
 			tv.setSelection(new StructuredSelection(selection), true);
-			// TODO Check out of you can find the right children via composites.
-			// project pre via go into button code
-
 			// unlock table if there are possible selections
 			if (tv.getElementAt(1) == null) {
 				tv.getTable().setEnabled(false);
 			}
 		}
+		restrictName(page.getControl());
+		restrictProjectSelection(page.getControl(), projectName);
 		if (Window.OK == dialog.open()) {
 			// the type could be created new execute the command
 			final TypeEntry newEntry = wizard.getTypeEntry();
@@ -140,6 +241,20 @@
 
 	}
 
+	private static void restrictProjectSelection(final Control control, final String projectName) {
+		final Composite root = (Composite) control;
+		final List<Control> elements = getFlattenedList(root);
+		//@formatter:off
+		elements.stream()
+			.filter(Tree.class::isInstance)
+			.map(Tree.class::cast) //get the tree
+			.flatMap(a-> Arrays.stream(a.getItems())) //get all root elements
+			.filter(i -> !i.getText().equals(projectName)) //find all elements which are not the current project
+			.forEach(TreeItem::dispose); //dispose them, so only the current project is left
+		//@formatter:on
+		control.redraw();
+	}
+
 	private static List<Control> getFlattenedList(final Composite root) {
 		final List<Control> flattenedSet = new ArrayList<>();
 		if (root.getChildren().length == 0) {
@@ -156,4 +271,83 @@
 		return flattenedSet;
 	}
 
+	private class ChangedTypesWizardPage extends WizardPage {
+		private final TypeEntry type;
+
+		protected ChangedTypesWizardPage(final String pageName, final TypeEntry type) {
+			super(pageName);
+			this.type = type;
+		}
+
+		@Override
+		public void createControl(final Composite parent) {
+			Composite container;
+			container = new Composite(parent, SWT.NONE);
+			final GridLayout layout = new GridLayout();
+			container.setLayout(layout);
+
+			// search instances with pin and delete pins.
+			final FBTypeSearchResultTable table = new FBTypeSearchResultTable(container,
+					new FBTypeEntryDataHandler(type));
+			table.setLayout(layout);
+			this.setControl(container);
+			this.setDescription(FordiacMessages.Dialog_Repair_Remove);
+			this.setTitle(FordiacMessages.Dialog_Repair_Pin);
+		}
+
+	}
+
+	private class ChooseActionWizardPage<T extends Enum<T>> extends WizardPage {
+		private Class<T> choicesEnum = null;
+		private T choice;
+
+		private final List<ActionListener> listeners = new ArrayList<>();
+
+		protected ChooseActionWizardPage(final String pageName, final Class<T> choicesEnum) {
+			super(pageName);
+			this.choicesEnum = choicesEnum;
+			this.choice = choicesEnum.getEnumConstants()[0];// make default selection work
+		}
+
+		public void addButtonListener(final ActionListener l) {
+			listeners.add(l);
+		}
+
+		@Override
+		public void createControl(final Composite parent) {
+			Composite container;
+			container = new Composite(parent, SWT.NONE);
+			final GridLayout layout = new GridLayout();
+			container.setLayout(layout);
+			layout.numColumns = 1;
+//			@formatter:off
+			Arrays.stream(choicesEnum.getEnumConstants())
+			.forEach(s -> {
+				final Button b = new Button(container, SWT.RADIO);
+				b.setText(s.toString());
+				b.addSelectionListener(new SelectionAdapter(){
+				    @Override
+				    public void widgetSelected(final SelectionEvent e){
+				        super.widgetSelected(e);
+				        if(b.getSelection()){
+				            choice=s;
+				            listeners.forEach(l-> l.actionPerformed(null));
+				        }
+				    }
+				});
+			});
+//			@formatter:on
+			this.setControl(container);
+			this.setDescription(FordiacMessages.Dialog_Add_Or_Remove_Pin);
+			this.setTitle(FordiacMessages.Dialog_Repair_Pin);
+			getShell().pack();
+			this.setPageComplete(true);
+		}
+
+		public T getSelection() {
+			return choice;
+		}
+
+	}
+
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java
index f9a7404..3255f9a 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java
@@ -24,8 +24,6 @@
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
 import org.eclipse.fordiac.ide.model.ui.editors.HandlerHelper;
 import org.eclipse.gef.commands.CommandStack;
-import org.eclipse.gef.commands.CommandStackEvent;
-import org.eclipse.gef.commands.CommandStackEventListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IEditorPart;
@@ -33,8 +31,7 @@
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.handlers.HandlerUtil;
 
-public class UntypeSubApplicationHandler extends AbstractHandler implements CommandStackEventListener {
-	private CommandStack commandStack;
+public class UntypeSubApplicationHandler extends AbstractHandler {
 
 	@Override
 	public Object execute(final ExecutionEvent event) throws ExecutionException {
@@ -42,16 +39,10 @@
 		final ISelection selection = HandlerUtil.getCurrentSelection(event);
 		final SubApp subApp = getSelectedSubApp(selection);
 		if (null != subApp) {
-			if (commandStack != null) {
-				commandStack.removeCommandStackEventListener(this);
-			}
-
-			commandStack = HandlerHelper.getCommandStack(editor);
+			final CommandStack commandStack = HandlerHelper.getCommandStack(editor);
 			commandStack.execute(new UntypeSubAppCommand(subApp));
 
 			refreshSelection(subApp);
-
-			commandStack.addCommandStackEventListener(this);
 		}
 		return Status.OK_STATUS;
 	}
@@ -64,8 +55,7 @@
 	}
 
 	private static SubApp getSelectedSubApp(final Object selection) {
-		if (selection instanceof IStructuredSelection) {
-			final IStructuredSelection structSel = ((IStructuredSelection) selection);
+		if (selection instanceof final IStructuredSelection structSel) {
 			if (!structSel.isEmpty() && (structSel.size() == 1)) {
 				return getSubApp(structSel.getFirstElement());
 			}
@@ -76,7 +66,8 @@
 	private static SubApp getSubApp(final Object currentElement) {
 		if (currentElement instanceof SubApp) {
 			return (SubApp) currentElement;
-		} else if (currentElement instanceof SubAppForFBNetworkEditPart) {
+		}
+		if (currentElement instanceof SubAppForFBNetworkEditPart) {
 			return ((SubAppForFBNetworkEditPart) currentElement).getModel();
 		} else if (currentElement instanceof UISubAppNetworkEditPart) {
 			return (SubApp) ((UISubAppNetworkEditPart) currentElement).getModel().eContainer();
@@ -84,26 +75,10 @@
 		return null;
 	}
 
-	@Override
-	public void stackChanged(final CommandStackEvent event) {
-		if (event.getCommand() instanceof UntypeSubAppCommand
-				&& (event.getDetail() == CommandStack.POST_UNDO || event.getDetail() == CommandStack.POST_REDO)) {
-			refreshSelection(((UntypeSubAppCommand) event.getCommand()).getSubapp());
-		}
-	}
-
-	private void refreshSelection(final SubApp subapp) {
+	private static void refreshSelection(final SubApp subapp) {
 		final IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
 				.getActiveEditor();
 		HandlerHelper.getViewer(editor).deselectAll();
 		HandlerHelper.selectElement(subapp, HandlerHelper.getViewer(editor));
 	}
-
-	@Override
-	public void dispose() {
-		if (commandStack != null) {
-			commandStack.removeCommandStackEventListener(this);
-		}
-		super.dispose();
-	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java
index 9c268bc..9bda07e 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java
@@ -64,9 +64,13 @@
 			public void checkStateChanged(final CheckStateChangedEvent event) {
 				final CheckableStructTreeNode node = (CheckableStructTreeNode) event.getElement();
 				final Command cmd = createDemuxPortCommand(node);
-				executeCommand(cmd);
-				selectStructManipulator(cmd);
-
+				if (cmd.canExecute()) {
+					executeCommand(cmd);
+					selectStructManipulator(cmd);
+				} else {
+					// reset checkmark as command was not executed
+					node.updateNode(!event.getChecked());
+				}
 			}
 
 			private Command createDemuxPortCommand(final CheckableStructTreeNode node) {
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/utilities/IntervalVerifyListener.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/utilities/IntervalVerifyListener.java
deleted file mode 100644
index 15a36f9..0000000
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/utilities/IntervalVerifyListener.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2023 Paul Pavlicek
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Paul Pavlicek
- *     - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.application.utilities;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-
-public class IntervalVerifyListener implements Listener {
-	private final Text verifiableText;
-
-	public IntervalVerifyListener(final Text verifiableText) {
-		this.verifiableText = verifiableText;
-	}
-
-	@Override
-	public void handleEvent(final org.eclipse.swt.widgets.Event event) {
-		if (event.keyCode == SWT.BS || event.keyCode == SWT.DEL || event.keyCode == SWT.ARROW_LEFT
-				|| event.keyCode == SWT.ARROW_RIGHT) {
-			event.doit = true;
-			return;
-		}
-		final String text = verifiableText.getText();
-		if (text.isEmpty() && (event.character == '[') || Character.isDigit(event.character)) {
-			event.doit = true;
-			return;
-		}
-		if (!text.isEmpty() && text.contains(",") && Character.isDigit(text.charAt(text.length() - 1)) //$NON-NLS-1$
-				&& event.character == ']') {
-			event.doit = true;
-			return;
-		}
-		if (text.length() > 1 && text.charAt(0) == '[' && Character.isDigit(text.charAt(1)) && !text.contains(",") //$NON-NLS-1$
-				&& event.character == ',') {
-			event.doit = true;
-			return;
-		}
-		if (!text.isEmpty() && Character.isDigit(text.charAt(0)) && Character.isDigit(event.character)) {
-			event.doit = true;
-			return;
-		}
-		event.doit = false;
-
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF
index 1c4c0f0..3ac6969 100644
--- a/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Attribute Type Editor
 Bundle-SymbolicName: org.eclipse.fordiac.ide.attributetypeeditor;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.fordiac.ide.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF
index 612402d..2e890d6 100644
--- a/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Communication Generation
 Bundle-SymbolicName: org.eclipse.fordiac.ide.comgeneration;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF
index e432ab9..87e7284 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Contracts
 Bundle-SymbolicName: org.eclipse.fordiac.ide.contracts;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.contracts
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java
index 6eecf4c..11ee4d5 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java
@@ -13,6 +13,8 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.contracts;
 
+import java.util.regex.Pattern;
+
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
@@ -44,14 +46,19 @@
 	protected void buttonPressed(final int buttonId) {
 		inputTime = inputTimeText.getText();
 		final String[] s = DefineContractUtils.getTimeIntervalFromString(inputTimeText.getText());
-		if (inputTime.isBlank() || (s.length == 2 && (Integer.parseInt(s[0]) > Integer.parseInt(s[1])))) {
-			MessageDialog.openError(this.getShell(), Messages.DefineFBReactionOnePinDialog_Error,
-					Messages.DefineFBReactionOnePinDialog_PleaseFill);
+		if (!isTextCompliant(inputTime)) {
+			MessageDialog.openError(this.getShell(), "Wrong Format", "Text is not in the right format.");
 		} else {
 			super.buttonPressed(buttonId);
 		}
 	}
 
+	protected static boolean isTextCompliant(final String text) {
+		final Pattern pattern = Pattern
+				.compile("^\\d+((\\.\\d+)?)$|^(([\\(\\[])(\\d*\\.?\\d+), (\\d*\\.?\\d+)([\\)\\]]))$"); //$NON-NLS-1$
+		return pattern.matcher(text).find();
+	}
+
 	@Override
 	protected Control createCustomArea(final Composite parent) {
 		parent.setLayout(new FillLayout());
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java
index ead34cb..ccade9b 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java
@@ -13,7 +13,6 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.contracts;
 
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.swt.SWT;
@@ -55,7 +54,6 @@
 		label.setText("occurs within"); //$NON-NLS-1$
 
 		inputTimeText = new Text(group, SWT.RIGHT);
-		inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
 		inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 
 		label = new Label(group, SWT.None);
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java
index dc8a8a7..0129615 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java
@@ -13,7 +13,6 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.contracts;
 
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
 import org.eclipse.fordiac.ide.contracts.model.ContractKeywords;
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -82,7 +81,6 @@
 		label.setText(ContractKeywords.OCCURS + " " + ContractKeywords.EVERY); //$NON-NLS-1$
 
 		inputTimeText = new Text(group, SWT.RIGHT);
-		inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
 		inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 
 		label = new Label(group, SWT.None);
@@ -93,8 +91,6 @@
 		labelOffset.setVisible(false);
 
 		offset = new Text(group, SWT.RIGHT);
-		offset.addListener(SWT.KeyDown, new IntervalVerifyListener(offset));
-
 		offset.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 		offset.setVisible(false);
 		final Label labelOffsetMs = new Label(group, SWT.None);
@@ -131,8 +127,9 @@
 			offsetText = offset.getText();
 		}
 		inputTime = inputTimeText.getText();
+
 		final String[] strInputTime = DefineContractUtils.getTimeIntervalFromString(inputTime);
-		String[] strOffset = { "0", "0" };  //$NON-NLS-1$//$NON-NLS-2$
+		String[] strOffset = { "0", "0" }; //$NON-NLS-1$//$NON-NLS-2$
 		if (offset.isVisible()) {
 			strOffset = DefineContractUtils.getTimeIntervalFromString(offsetText);
 		}
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java
index 73444db..dc0bd56 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java
@@ -15,7 +15,6 @@
 
 import java.util.List;
 
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
 import org.eclipse.fordiac.ide.contracts.model.ContractKeywords;
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.jface.layout.GridDataFactory;
@@ -53,7 +52,7 @@
 		Label label = new Label(group, SWT.None);
 
 		label.setText("After " + pinFrom.getName() + " the events " + ContractKeywords.EVENTS_OPEN //$NON-NLS-1$//$NON-NLS-2$
-				+ outputEvents.get(0).getName() + " "  //$NON-NLS-1$
+				+ outputEvents.get(0).getName() + " " //$NON-NLS-1$
 				+ outputEvents.get(0).getName() + ContractKeywords.EVENTS_CLOSE);
 		label.setLayoutData(GridDataFactory.fillDefaults().span(NUM_COLUMNS, 1).grab(true, true).create());
 
@@ -61,7 +60,6 @@
 		label.setText(ContractKeywords.OCCURS + " " + ContractKeywords.WITHIN); //$NON-NLS-1$
 
 		inputTimeText = new Text(group, SWT.RIGHT);
-		inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
 		inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 
 		label = new Label(group, SWT.None);
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java
index 71cdcc6..57fa13e 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java
@@ -13,7 +13,6 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.contracts;
 
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
 import org.eclipse.fordiac.ide.contracts.model.ContractKeywords;
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.jface.layout.GridDataFactory;
@@ -56,7 +55,6 @@
 		label.setText(ContractKeywords.OCCURS + " " + ContractKeywords.WITHIN); //$NON-NLS-1$
 
 		inputTimeText = new Text(group, SWT.RIGHT);
-		inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
 		inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 
 		label = new Label(group, SWT.None);
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java
index 0d4673a..6d23c15 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java
@@ -26,7 +26,7 @@
 	}
 
 	public static void test() {
-		final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+		final SubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 		subApp.setComment("ASSUMPTION VV occurs within [1,2]ms   \nGUARANTEE Reaction(VV,BB) within [6,39]ms \n"); //$NON-NLS-1$
 		subApp.setComment(
 				"ASSUMPTION CD occurs every 7ms with [8,9]ms offset\n GUARANTEE Reaction(EI1,EO1) within [1,1]ms  ConstractState TRUE \n"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF
index 4597128..1429fd8 100644
--- a/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Data Type Editor
 Bundle-SymbolicName: org.eclipse.fordiac.ide.datatypeeditor;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.fordiac.ide.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF
index bec4955..abeee5c 100644
--- a/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Debug ST
 Bundle-SymbolicName: org.eclipse.fordiac.ide.debug.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.debug.st
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF
index 4812778..f7f2da6 100644
--- a/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Debug UI
 Bundle-SymbolicName: org.eclipse.fordiac.ide.debug.ui.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.debug.ui.st
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF
index 9ac60b8..a73c236 100644
--- a/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Debug UI
 Bundle-SymbolicName: org.eclipse.fordiac.ide.debug.ui;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.debug.ui
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF
index fb0cb11..ccd557b 100644
--- a/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Debug
 Bundle-SymbolicName: org.eclipse.fordiac.ide.debug;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.debug
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF
index a2e25dd..f55db7a 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Deployment Boot File
 Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.bootfile;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Export-Package: org.eclipse.fordiac.ide.deployment.bootfile,
  org.eclipse.fordiac.ide.deployment.bootfile.wizard
 Bundle-Vendor: Eclipse 4diac
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java
index d189e69..4c5bf61 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java
@@ -29,7 +29,7 @@
 import org.eclipse.fordiac.ide.model.typelibrary.SystemEntry;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
-import org.eclipse.fordiac.ide.ui.DirectoryChooserControl;
+import org.eclipse.fordiac.ide.ui.widget.DirectoryChooserControl;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.SWT;
@@ -99,7 +99,7 @@
 		stretch.horizontalAlignment = SWT.FILL;
 
 		dcc = new DirectoryChooserControl(composite, SWT.NONE, Messages.CreateBootFilesWizardPage_Destination);
-		dcc.addDirectoryChangedListener(newDirectory -> updatePageCompletion());
+		dcc.addChooserValueChangedListener(newDirectory -> updatePageCompletion());
 		dcc.setLayoutData(stretch);
 	}
 
@@ -131,7 +131,7 @@
 
 	@Override
 	protected boolean validateDestinationGroup() {
-		if (dcc.getDirectory() == null || "".equals(dcc.getDirectory())) { //$NON-NLS-1$
+		if (dcc.getValue() == null || "".equals(dcc.getValue())) { //$NON-NLS-1$
 			setErrorMessage(Messages.CreateBootFilesWizardPage_DestinationNotSelected);
 			return false;
 		}
@@ -172,11 +172,11 @@
 	 * @param dir the new directory
 	 */
 	public void setDirectory(final String dir) {
-		dcc.setDirectory(dir);
+		dcc.setValue(dir);
 	}
 
 	public String getDirectory() {
-		return dcc.getDirectory();
+		return dcc.getValue();
 	}
 
 	private void checkSelectedElements() {
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF
index a479061..be98204 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Debug UI
 Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.debug.ui;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.debug.ui
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF
index 84a20a2..c4ab87a 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Deployment Debug
 Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.debug;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.debug
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF
index c76d9fe..e5bb1b8 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Deployment Evaluator
 Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.eval;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.eval
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java b/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java
index 7300e6f..8a03b40 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java
@@ -128,7 +128,7 @@
 	protected void writeVariables(final Iterable<VarDeclaration> varDeclarations) throws DeploymentException {
 		for (final VarDeclaration varDeclaration : varDeclarations) {
 			final Variable<?> variable = getVariables().get(varDeclaration.getName());
-			sharedState.writeFBParameter(variable.toString(), deploymentData, varDeclaration);
+			sharedState.writeFBParameter(variable.toString(false), deploymentData, varDeclaration);
 		}
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF
index 5884a61..588df6c 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF
@@ -19,7 +19,7 @@
  org.eclipse.fordiac.ide.application
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: IEC 61499 Deployment
 Bundle-Activator: org.eclipse.fordiac.ide.deployment.iec61499.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java
index 3431e85..8c514f4 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java
@@ -37,14 +37,12 @@
 import org.eclipse.fordiac.ide.deployment.iec61499.ResponseMapping;
 import org.eclipse.fordiac.ide.deployment.iec61499.handlers.EthernetDeviceManagementCommunicationHandler;
 import org.eclipse.fordiac.ide.deployment.interactors.AbstractDeviceManagementInteractor;
+import org.eclipse.fordiac.ide.deployment.interactors.ForteTypeNameCreator;
 import org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement;
-import org.eclipse.fordiac.ide.model.libraryElement.CompilerInfo;
 import org.eclipse.fordiac.ide.model.libraryElement.Device;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
 import org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement;
-import org.eclipse.fordiac.ide.model.libraryElement.LibraryElement;
 import org.eclipse.fordiac.ide.model.libraryElement.Resource;
-import org.eclipse.fordiac.ide.model.libraryElement.StructManipulator;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 import org.xml.sax.InputSource;
 
@@ -110,32 +108,6 @@
 		return new EthernetDeviceManagementCommunicationHandler();
 	}
 
-	private static String getValidType(final FBNetworkElement fb) {
-		if (fb != null && fb.getTypeEntry() != null) {
-			if (fb instanceof final StructManipulator structMan) {
-				// the _1 is needed for 4diac FORTE to separate type name from configuration
-				// part
-				return fb.getTypeName() + "_1" + getFullForteEncodedTypeName(structMan.getStructType()); //$NON-NLS-1$
-			}
-			if (fb.getType() != null) {
-				return getFullForteEncodedTypeName(fb.getType());
-			}
-			return fb.getTypeName();
-		}
-		return null;
-	}
-
-	private static String getFullForteEncodedTypeName(final LibraryElement libEl) {
-		final CompilerInfo compilerInfo = libEl.getCompilerInfo();
-		if (compilerInfo != null) {
-			final String packageName = compilerInfo.getPackageName();
-			if (packageName != null && !packageName.isEmpty()) {
-				return packageName.replace(':', '_') + "__" + libEl.getName(); //$NON-NLS-1$
-			}
-		}
-		return libEl.getName();
-	}
-
 	@Override
 	public void createResource(final Resource resource) throws DeploymentException {
 		final String request = MessageFormat.format(CREATE_RESOURCE_INSTANCE, getNextId(), resource.getName(),
@@ -305,9 +277,9 @@
 
 	@Override
 	public void createFBInstance(final FBDeploymentData fbData, final Resource res) throws DeploymentException {
-		final String fbType = getValidType(fbData.getFb());
+		final String fbType = ForteTypeNameCreator.getForteTypeName(fbData.getFb());
 		final String fullFbInstanceName = fbData.getPrefix() + fbData.getFb().getName();
-		if ("".equals(fbType)) { //$NON-NLS-1$
+		if (fbType.isEmpty()) {
 			throw new DeploymentException((MessageFormat
 					.format(Messages.DeploymentExecutor_CreateFBInstanceFailedNoTypeFound, fullFbInstanceName)));
 		}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.classpath b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.classpath
new file mode 100644
index 0000000..3628e33
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
+		<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/plugins/org.eclipse.fordiac.ide.deployment.opcua/.project b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.project
new file mode 100644
index 0000000..24a0fa7
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.fordiac.ide.deployment.opcua</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/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..79ddd18
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,501 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=info
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=info
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=info
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=info
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=info
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=info
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=info
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=ignore
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=info
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=info
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=true
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_permitted_types_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow=20
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags=false
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator=false
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..0d2727b
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,147 @@
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=23
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_all=false
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=true
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.array_with_curly=false
+sp_cleanup.arrays_fill=false
+sp_cleanup.bitwise_conditional_expression=false
+sp_cleanup.boolean_literal=false
+sp_cleanup.boolean_value_rather_than_comparison=true
+sp_cleanup.break_loop=false
+sp_cleanup.collection_cloning=false
+sp_cleanup.comparing_on_criteria=false
+sp_cleanup.comparison_statement=false
+sp_cleanup.controlflow_merge=false
+sp_cleanup.convert_functional_interfaces=true
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
+sp_cleanup.convert_to_switch_expressions=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.do_while_rather_than_while=false
+sp_cleanup.double_negation=false
+sp_cleanup.else_if=true
+sp_cleanup.embedded_if=true
+sp_cleanup.evaluate_nullable=true
+sp_cleanup.extract_increment=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.hash=false
+sp_cleanup.if_condition=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.instanceof=true
+sp_cleanup.instanceof_keyword=false
+sp_cleanup.invert_equals=false
+sp_cleanup.join=false
+sp_cleanup.lazy_logical_operator=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=true
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.map_cloning=false
+sp_cleanup.merge_conditional_blocks=false
+sp_cleanup.multi_catch=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.no_string_creation=false
+sp_cleanup.no_super=true
+sp_cleanup.number_suffix=true
+sp_cleanup.objects_equals=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+sp_cleanup.operand_factorization=false
+sp_cleanup.organize_imports=true
+sp_cleanup.overridden_assignment=false
+sp_cleanup.overridden_assignment_move_decl=false
+sp_cleanup.plain_replacement=false
+sp_cleanup.precompile_regex=false
+sp_cleanup.primitive_comparison=false
+sp_cleanup.primitive_parsing=false
+sp_cleanup.primitive_rather_than_wrapper=false
+sp_cleanup.primitive_serialization=false
+sp_cleanup.pull_out_if_from_if_else=false
+sp_cleanup.pull_up_assignment=true
+sp_cleanup.push_down_negation=false
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.reduce_indentation=true
+sp_cleanup.redundant_comparator=false
+sp_cleanup.redundant_falling_through_block_end=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=true
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=true
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_method_parameters=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.return_expression=false
+sp_cleanup.simplify_lambda_expression_and_method_ref=true
+sp_cleanup.single_used_field=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.standard_comparison=false
+sp_cleanup.static_inner_class=false
+sp_cleanup.strictly_equal_or_different=false
+sp_cleanup.stringbuffer_to_stringbuilder=false
+sp_cleanup.stringbuilder=false
+sp_cleanup.stringbuilder_for_local_vars=false
+sp_cleanup.stringconcat_stringbuffer_stringbuilder=true
+sp_cleanup.stringconcat_to_textblock=true
+sp_cleanup.substring=false
+sp_cleanup.switch=false
+sp_cleanup.system_property=false
+sp_cleanup.system_property_boolean=false
+sp_cleanup.system_property_file_encoding=false
+sp_cleanup.system_property_file_separator=false
+sp_cleanup.system_property_line_separator=false
+sp_cleanup.system_property_path_separator=false
+sp_cleanup.ternary_operator=false
+sp_cleanup.try_with_resource=false
+sp_cleanup.unlooped_while=false
+sp_cleanup.unreachable_block=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_string_is_blank=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
+sp_cleanup.use_var=false
+sp_cleanup.useless_continue=false
+sp_cleanup.useless_return=false
+sp_cleanup.valueof_rather_than_instantiation=false
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.opcua/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a6fc2b4
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: OPCUA Deployment
+Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.opcua;singleton:=true
+Bundle-Version: 3.0.0.qualifier
+Bundle-Vendor: Eclipse 4diac
+Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.opcua
+Bundle-RequiredExecutionEnvironment: JavaSE-17
+Require-Bundle: org.apache.log4j,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.e4.core.services,
+ org.eclipse.ui,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.gef,
+ org.eclipse.milo.sdk-core,
+ org.eclipse.milo.sdk-client,
+ org.eclipse.milo.stack-core,
+ org.eclipse.milo.stack-client,
+ org.eclipse.fordiac.ide.model,
+ org.eclipse.fordiac.ide.model.commands,
+ org.eclipse.fordiac.ide.ui,
+ org.eclipse.fordiac.ide.export,
+ org.eclipse.fordiac.ide.export.forte_lua,
+ org.eclipse.fordiac.ide.systemconfiguration,
+ org.eclipse.fordiac.ide.deployment,
+ org.eclipse.fordiac.ide.deployment.iec61499
+Export-Package: org.eclipse.fordiac.ide.deployment.opcua
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/build.properties b/plugins/org.eclipse.fordiac.ide.deployment.opcua/build.properties
new file mode 100644
index 0000000..99778cd
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               plugin.xml,\
+               .
+
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/plugin.xml b/plugins/org.eclipse.fordiac.ide.deployment.opcua/plugin.xml
new file mode 100644
index 0000000..5f6155d
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/plugin.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.fordiac.ide.deployment.devicemanagementinteractor">
+      <DeviceManagementInteractorProvider
+            class="org.eclipse.fordiac.ide.deployment.opcua.providers.OPCUADevMgmtInteractorProvider">
+      </DeviceManagementInteractorProvider>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="popup:org.eclipse.ui.popup.any?endof=org.eclipse.gef.group.edit">
+         <command
+               commandId="org.eclipse.fordiac.ide.discovery.getResources"
+               label="Get Resources"
+               icon="fordiacimage://ICON_DISCOVER"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <with
+                     variable="activeEditorId">
+                  <equals
+                        value="org.eclipse.fordiac.ide.systemconfiguration.editor.SystemConfigurationEditor">
+                  </equals>
+                  <and>
+                     <reference
+                           definitionId="org.eclipse.fordiac.ide.deployment.ui.DeviceDefinition">
+                     </reference>
+                  </and>
+               </with>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/Messages.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/Messages.java
new file mode 100644
index 0000000..577a170
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/Messages.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Markus Meingast
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua;
+
+import org.eclipse.osgi.util.NLS;
+
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
+public final class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.deployment.opcua.messages"; //$NON-NLS-1$
+	public static String OPCUADeploymentExecutor_GetMgrIDFailed;
+	public static String OPCUADeploymentExecutor_CreateClientFailed;
+	public static String OPCUADeploymentExecutor_CreateResourceFailed;
+	public static String OPCUADeploymentExecutor_CreateFBInstanceFailed;
+	public static String OPCUADeploymentExecutor_CreateFBInstanceFailedNoTypeFound;
+	public static String OPCUADeploymentExecutor_CreateConnectionFailed;
+	public static String OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound;
+
+	public static String OPCUADeploymentExecutor_WriteDeviceFailed;
+	public static String OPCUADeploymentExecutor_WriteResourceFailed;
+	public static String OPCUADeploymentExecutor_WriteFBFailed;
+	public static String OPCUADeploymentExecutor_ErrorOnWriteRequest;
+
+	public static String OPCUADeploymentExecutor_StartDeviceFailed;
+	public static String OPCUADeploymentExecutor_StartResourceFailed;
+	public static String OPCUADeploymentExecutor_StartFBFailed;
+	public static String OPCUADeploymentExecutor_KillDeviceFailed;
+	public static String OPCUADeploymentExecutor_KillResourceFailed;
+	public static String OPCUADeploymentExecutor_KillFBFailed;
+	public static String OPCUADeploymentExecutor_DeleteDeviceFailed;
+	public static String OPCUADeploymentExecutor_DeleteResourceFailed;
+	public static String OPCUADeploymentExecutor_DeleteFBFailed;
+	public static String OPCUADeploymentExecutor_DeleteConnectionFailed;
+	public static String OPCUADeploymentExecutor_AddWatchFailed;
+	public static String OPCUADeploymentExecutor_ReadWatchesFailed;
+	public static String OPCUADeploymentExecutor_RemoveWatchFailed;
+	public static String OPCUADeploymentExecutor_TriggerEventFailed;
+	public static String OPCUADeploymentExecutor_ForceValueFailed;
+	public static String OPCUADeploymentExecutor_ClearForceFailed;
+	public static String OPCUADeploymentExecutor_ErrorOnMonitoringRequest;
+	public static String OPCUADeploymentExecutor_QueryResourcesFailed;
+	public static String OPCUADeploymentExecutor_ErrorOnQueryResources;
+
+	public static String OPCUADeploymentExecutor_BrowseOPCUAFailed;
+
+	public static String OPCUADeploymentExecutor_RequestFailed;
+	public static String OPCUADeploymentExecutor_RequestInterrupted;
+
+	public static String OPCUADeploymentExecutor_CouldNotConnectToDevice;
+	public static String OPCUADeploymentExecutor_CouldNotDisconnectFromDevice;
+	public static String OPCUADeploymentExecutor_UnknownResponseCode;
+
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+		// empty private constructor
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/OPCUADeploymentExecutor.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/OPCUADeploymentExecutor.java
new file mode 100644
index 0000000..7bead6a
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/OPCUADeploymentExecutor.java
@@ -0,0 +1,891 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Markus Meingast
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua;
+
+import static org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned.uint;
+import static org.eclipse.milo.opcua.stack.core.util.ConversionUtil.toList;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+import org.eclipse.fordiac.ide.deployment.data.ConnectionDeploymentData;
+import org.eclipse.fordiac.ide.deployment.data.FBDeploymentData;
+import org.eclipse.fordiac.ide.deployment.devResponse.DevResponseFactory;
+import org.eclipse.fordiac.ide.deployment.devResponse.Response;
+import org.eclipse.fordiac.ide.deployment.exceptions.DeploymentException;
+import org.eclipse.fordiac.ide.deployment.iec61499.ResponseMapping;
+import org.eclipse.fordiac.ide.deployment.interactors.ForteTypeNameCreator;
+import org.eclipse.fordiac.ide.deployment.interactors.IDeviceManagementInteractor;
+import org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement;
+import org.eclipse.fordiac.ide.deployment.opcua.helpers.Constants;
+import org.eclipse.fordiac.ide.deployment.util.DeploymentHelper;
+import org.eclipse.fordiac.ide.deployment.util.IDeploymentListener;
+import org.eclipse.fordiac.ide.deployment.util.IDeploymentListener2;
+import org.eclipse.fordiac.ide.model.libraryElement.Device;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement;
+import org.eclipse.fordiac.ide.model.libraryElement.Resource;
+import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
+import org.eclipse.milo.opcua.sdk.client.SessionActivityListener;
+import org.eclipse.milo.opcua.sdk.client.api.UaSession;
+import org.eclipse.milo.opcua.sdk.client.api.config.OpcUaClientConfigBuilder;
+import org.eclipse.milo.opcua.stack.client.DiscoveryClient;
+import org.eclipse.milo.opcua.stack.core.Identifiers;
+import org.eclipse.milo.opcua.stack.core.UaException;
+import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
+import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
+import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.BrowseDirection;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.BrowseResultMask;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.NodeClass;
+import org.eclipse.milo.opcua.stack.core.types.structured.BrowseDescription;
+import org.eclipse.milo.opcua.stack.core.types.structured.CallMethodRequest;
+import org.eclipse.milo.opcua.stack.core.types.structured.CallMethodResult;
+import org.eclipse.milo.opcua.stack.core.types.structured.CallResponse;
+import org.eclipse.milo.opcua.stack.core.types.structured.EndpointDescription;
+import org.eclipse.milo.opcua.stack.core.types.structured.ReferenceDescription;
+import org.xml.sax.InputSource;
+
+public class OPCUADeploymentExecutor implements IDeviceManagementInteractor {
+
+	public enum ConnectionStatus {
+		CONNECTED, DISCONNECTED, NOT_CONNECTED
+	}
+
+	private final OpcUaClient client;
+	private ConnectionStatus connectionStatus;
+	private final Device device;
+	private NodeId resourceNode;
+
+	private final List<CallMethodRequest> requests = new ArrayList<>();
+	private final List<String> requestMessages = new ArrayList<>();
+	private boolean combinedRequest = false;
+
+	private final List<IDeploymentListener> listeners = new ArrayList<>();
+	private final Map<String, NodeId> availableResources = new HashMap<>();
+
+	private final ResponseMapping respMapping = new ResponseMapping();
+
+	public OPCUADeploymentExecutor(final Device dev) {
+		this.device = dev;
+		this.client = createClient();
+		this.resourceNode = null;
+		this.connectionStatus = ConnectionStatus.NOT_CONNECTED;
+	}
+
+	protected OpcUaClient createClient() {
+		try {
+			String mgrId = DeploymentHelper.getMgrID(device);
+			mgrId = mgrId.substring(1, mgrId.length() - 1);
+			final List<EndpointDescription> endpoints = DiscoveryClient.getEndpoints(mgrId).get();
+			final OpcUaClientConfigBuilder cfg = new OpcUaClientConfigBuilder();
+
+			cfg.setEndpoint(endpoints.get(0));
+			final OpcUaClient newClient = OpcUaClient.create(cfg.build());
+
+			newClient.addSessionActivityListener(new SessionActivityListener() {
+				@Override
+				public void onSessionActive(final UaSession session) {
+					SessionActivityListener.super.onSessionActive(session);
+					connectionStatus = ConnectionStatus.CONNECTED;
+				}
+
+				@Override
+				public void onSessionInactive(final UaSession session) {
+					SessionActivityListener.super.onSessionInactive(session);
+					connectionStatus = ConnectionStatus.DISCONNECTED;
+				}
+			});
+			return newClient;
+		} catch (final DeploymentException e) {
+			FordiacLogHelper
+					.logError(MessageFormat.format(Messages.OPCUADeploymentExecutor_GetMgrIDFailed, e.getMessage()), e);
+		} catch (final ExecutionException | UaException e) {
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_CreateClientFailed, e.getMessage()), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+		return null;
+	}
+
+	protected Device getDevice() {
+		return device;
+	}
+
+	@Override
+	public boolean isConnected() {
+		return connectionStatus == ConnectionStatus.CONNECTED;
+	}
+
+	@Override
+	public void connect() throws DeploymentException {
+		if (client == null) {
+			throw new DeploymentException(Messages.OPCUADeploymentExecutor_CouldNotConnectToDevice);
+		}
+		try {
+			client.connect().get();
+			for (final IDeploymentListener listener : listeners) {
+				listener.connectionOpened(device);
+			}
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(Messages.OPCUADeploymentExecutor_CouldNotConnectToDevice, e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void disconnect() throws DeploymentException {
+		if (isConnected()) {
+			try {
+				client.disconnect().get();
+				for (final IDeploymentListener listener : listeners) {
+					listener.connectionClosed(device);
+				}
+			} catch (final ExecutionException e) {
+				throw new DeploymentException(Messages.OPCUADeploymentExecutor_CouldNotDisconnectFromDevice, e);
+			} catch (final InterruptedException e) {
+				Thread.currentThread().interrupt();
+				FordiacLogHelper.logError(
+						MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			}
+		}
+	}
+
+	/**
+	 * Sends single request
+	 *
+	 * @param destination - Only needed for displaying on Deployment Console
+	 **/
+	private synchronized CompletableFuture<CallMethodResult> sendREQ(final String destination,
+			final CallMethodRequest request, final String message) {
+		return client.call(request).thenCompose(result -> {
+			if (!result.getStatusCode().isGood()) {
+				displayCommand(result.getStatusCode(), destination, message);
+			}
+			return CompletableFuture.completedFuture(result);
+		});
+	}
+
+	/**
+	 * Sends list of requests
+	 *
+	 * @param destination - Only needed for displaying on Deployment Console
+	 */
+	private synchronized List<CallMethodResult> sendREQ(final String destination) throws IOException {
+		CallResponse response;
+		try {
+			response = client.call(requests).get();
+		} catch (final ExecutionException e) {
+			throw new IOException(MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestFailed, destination), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return Collections.emptyList();
+		}
+		return handleResponse(response, destination);
+	}
+
+	/************************************************************************
+	 * Listener commands
+	 ************************************************************************/
+
+	@Override
+	public void addDeploymentListener(final IDeploymentListener listener) {
+		if (!listeners.contains(listener)) {
+			listeners.add(listener);
+		}
+	}
+
+	@Override
+	public void removeDeploymentListener(final IDeploymentListener listener) {
+		if (listeners.contains(listener)) {
+			listeners.remove(listener);
+		}
+	}
+
+	/**************************************************************************
+	 * Management commands
+	 **************************************************************************/
+
+	@Override
+	public void createResource(final Resource resource) throws DeploymentException {
+		combinedRequest = true;
+		final String resName = resource.getName();
+		final String resType = resource.getTypeName();
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.CREATE_RESOURCE_NODE,
+				new Variant[] { new Variant(resName), new Variant(resType) });
+		final String message = MessageFormat.format(Constants.CREATE_RESOURCE_INSTANCE, resName, resType);
+		CallMethodResult result = null;
+		try {
+			result = sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_CreateResourceFailed, resName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+		if (result != null) {
+			resourceNode = processResult(result);
+		}
+	}
+
+	@Override
+	public void writeResourceParameter(final Resource resource, final String parameter, final String value)
+			throws DeploymentException {
+		final String resName = resource.getName();
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.WRITE_RESOURCE_NODE,
+				new Variant[] { new Variant(resName), new Variant(value) });
+		final String message = MessageFormat.format(Constants.WRITE_RESOURCE_PARAMETER, value);
+		try {
+			sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_WriteResourceFailed, resName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void writeDeviceParameter(final Device device, final String parameter, final String value)
+			throws DeploymentException {
+		final String devName = device.getName();
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.WRITE_DEVICE_NODE,
+				new Variant[] { new Variant(value) });
+		final String message = MessageFormat.format(Constants.WRITE_DEVICE_PARAMETER, value);
+		try {
+			sendREQ(devName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_WriteDeviceFailed, devName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void createFBInstance(final FBDeploymentData fbData, final Resource res) throws DeploymentException {
+		if (resourceNode == null) {
+			return;
+		}
+		final String fbType = ForteTypeNameCreator.getForteTypeName(fbData.getFb());
+		final String fullFbName = MessageFormat.format(Constants.FB_NAME_FORMAT, fbData.getPrefix(),
+				fbData.getFb().getName());
+		if (fbType.isEmpty()) {
+
+			throw new DeploymentException(MessageFormat
+					.format(Messages.OPCUADeploymentExecutor_CreateFBInstanceFailedNoTypeFound, fullFbName));
+		}
+		final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.CREATE_FB_NODE,
+				new Variant[] { new Variant(fullFbName), new Variant(fbType) });
+		final String message = MessageFormat.format(Constants.CREATE_FB_INSTANCE, fullFbName, fbType);
+		requests.add(request);
+		requestMessages.add(message);
+	}
+
+	@Override
+	public void writeFBParameter(final Resource resource, final String value, final FBDeploymentData fbData,
+			final VarDeclaration varDecl) throws DeploymentException {
+		final String destination = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, fbData.getPrefix(),
+				fbData.getFb().getName(), varDecl.getName());
+		final String message = MessageFormat.format(Constants.WRITE_FB_PARAMETER, destination, value);
+		if (combinedRequest) { // Add request to list of requests
+			writeFBParameterCombined(destination, value, message);
+		} else { // Execute single request
+			writeFBParameterSingle(resource.getName(), destination, value, message);
+		}
+	}
+
+	@Override
+	public void createConnection(final Resource res, final ConnectionDeploymentData connData)
+			throws DeploymentException {
+		if (resourceNode == null) {
+			return;
+		}
+		final IInterfaceElement sourceData = connData.getSource();
+		final IInterfaceElement destinationData = connData.getDestination();
+
+		if (sourceData == null || sourceData.getFBNetworkElement() == null || destinationData == null
+				|| destinationData.getFBNetworkElement() == null) {
+			throw new DeploymentException(MessageFormat
+					.format(Messages.OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound, res.getName()));
+		}
+
+		final FBNetworkElement sourceFB = sourceData.getFBNetworkElement();
+		final FBNetworkElement destinationFB = destinationData.getFBNetworkElement();
+		final String source = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getSourcePrefix(),
+				sourceFB.getName(), sourceData.getName());
+		final String destination = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getDestinationPrefix(),
+				destinationFB.getName(), destinationData.getName());
+		final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.CREATE_CONNECTION_NODE,
+				new Variant[] { new Variant(source), new Variant(destination) });
+		final String message = MessageFormat.format(Constants.CREATE_CONNECTION, destination, source);
+		requests.add(request);
+		requestMessages.add(message);
+	}
+
+	@Override
+	public void startFB(final Resource res, final FBDeploymentData fbData) throws DeploymentException {
+		if (resourceNode == null) {
+			return;
+		}
+		final String fullFbName = MessageFormat.format(Constants.FB_NAME_FORMAT, fbData.getPrefix(),
+				fbData.getFb().getName());
+		final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.START_FB_NODE,
+				new Variant[] { new Variant(fullFbName) });
+		final String message = MessageFormat.format(Constants.START_FB, fullFbName);
+		try {
+			sendREQ(res.getName(), request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_StartFBFailed, fullFbName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void startResource(final Resource resource) throws DeploymentException {
+		if (resourceNode == null) {
+			return;
+		}
+		final String resourceName = resource.getName();
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.START_RESOURCE_NODE,
+				new Variant[] { new Variant(resourceName) });
+		final String message = MessageFormat.format(Constants.START_RESOURCE, resourceName);
+		requests.add(request);
+		requestMessages.add(message);
+
+		try {
+			sendREQ(resourceName);
+		} catch (final IOException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_StartResourceFailed, resourceName), e);
+		}
+		requests.clear();
+		requestMessages.clear();
+		combinedRequest = false;
+	}
+
+	@Override
+	public void startDevice(final Device dev) throws DeploymentException {
+		final String devName = dev.getName();
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.START_DEVICE_NODE,
+				new Variant[] {});
+		final String message = MessageFormat.format(Constants.START_DEVICE, devName);
+		try {
+			sendREQ(devName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_StartDeviceFailed, devName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void deleteResource(final String resName) throws DeploymentException {
+		final CallMethodRequest killRequest = new CallMethodRequest(Constants.MGMT_NODE, Constants.KILL_RESOURCE_NODE,
+				new Variant[] { new Variant(resName) });
+		String message = MessageFormat.format(Constants.KILL_RESOURCE, resName);
+		try {
+			sendREQ(resName, killRequest, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_KillResourceFailed, resName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+
+		final CallMethodRequest deleteRequest = new CallMethodRequest(Constants.MGMT_NODE,
+				Constants.DELETE_RESOURCE_NODE, new Variant[] { new Variant(resName) });
+		message = MessageFormat.format(Constants.DELETE_RESOURCE, resName);
+		try {
+			sendREQ(resName, deleteRequest, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_DeleteResourceFailed, resName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void deleteFB(final Resource res, final FBDeploymentData fbData) throws DeploymentException {
+		if (!getResourcesHandle()) {
+			return;
+		}
+
+		final String fullFbName = MessageFormat.format(Constants.FB_NAME_FORMAT, fbData.getPrefix(),
+				fbData.getFb().getName());
+		final String resName = res.getName();
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.DELETE_FB_NODE, new Variant[] { new Variant(fullFbName), });
+		final String message = MessageFormat.format(Constants.DELETE_FB_INSTANCE, fullFbName);
+		try {
+			sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_DeleteFBFailed, fullFbName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void deleteConnection(final Resource res, final ConnectionDeploymentData connData)
+			throws DeploymentException {
+		if (!getResourcesHandle()) {
+			return;
+		}
+
+		final IInterfaceElement sourceData = connData.getSource();
+		final IInterfaceElement destinationData = connData.getDestination();
+
+		if (sourceData == null || sourceData.getFBNetworkElement() == null || destinationData == null
+				|| destinationData.getFBNetworkElement() == null) {
+			throw new DeploymentException(Messages.OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound);
+		}
+
+		final FBNetworkElement sourceFB = sourceData.getFBNetworkElement();
+		final FBNetworkElement destinationFB = destinationData.getFBNetworkElement();
+		final String source = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getSourcePrefix(),
+				sourceFB.getName(), sourceData.getName());
+		final String destination = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getDestinationPrefix(),
+				destinationFB.getName(), destinationData.getName());
+		final String resName = res.getName();
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.DELETE_CONNECTION_NODE, new Variant[] { new Variant(source), new Variant(destination) });
+		final String message = MessageFormat.format(Constants.DELETE_CONNECTION, destination, source);
+		try {
+			sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_DeleteConnectionFailed, destination, source),
+					e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public void killDevice(final Device dev) throws DeploymentException {
+		final String devName = dev.getName();
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.KILL_DEVICE_NODE,
+				new Variant[] {});
+		final String message = MessageFormat.format(Constants.KILL_DEVICE, devName);
+		try {
+			sendREQ(devName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_KillDeviceFailed, devName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+	}
+
+	@Override
+	public List<org.eclipse.fordiac.ide.deployment.devResponse.Resource> queryResources() throws DeploymentException {
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.QUERY_RESOURCES_NODE,
+				new Variant[] {});
+		final String message = Constants.QUERY_RESOURCES;
+		try {
+			final CallMethodResult result = sendREQ("", request, message).get(); //$NON-NLS-1$
+			final Response response = parseResponse(result, Constants.QUERY_RESPONSE);
+			if (response != Constants.EMPTY_RESPONSE) {
+				return getQueryElements(response);
+			}
+			FordiacLogHelper.logError(MessageFormat.format(Messages.OPCUADeploymentExecutor_ErrorOnQueryResources,
+					getIEC61499Status(result.getStatusCode())));
+		} catch (final IOException | ExecutionException e) {
+			throw new DeploymentException(Messages.OPCUADeploymentExecutor_QueryResourcesFailed, e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+		return Collections.emptyList();
+	}
+
+	@Override
+	public Response readWatches() throws DeploymentException {
+		final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.READ_WATCHES_NODE,
+				new Variant[] {});
+		final String message = Constants.READ_WATCHES;
+		try {
+			final CallMethodResult result = sendREQ("", request, message).get(); //$NON-NLS-1$
+			return parseResponse(result, Constants.WATCHES_RESPONSE);
+		} catch (final IOException | ExecutionException e) {
+			throw new DeploymentException(Messages.OPCUADeploymentExecutor_ReadWatchesFailed, e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return Constants.EMPTY_RESPONSE;
+		}
+	}
+
+	@Override
+	public void addWatch(final MonitoringBaseElement element) throws DeploymentException {
+		if (availableResources.isEmpty() && !getResourcesHandle()) {
+			return;
+		}
+		final String fullFbName = element.getQualifiedString();
+		final String resName = element.getResourceString();
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.ADD_WATCH_NODE, new Variant[] { new Variant(fullFbName) });
+		final String message = MessageFormat.format(Constants.ADD_WATCH, fullFbName);
+		CallMethodResult result;
+		try {
+			result = sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_AddWatchFailed, fullFbName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return;
+		}
+		final StatusCode opcuaStatus = result.getStatusCode();
+		logResponseStatus(opcuaStatus, resName, fullFbName, Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+		element.setOffline(Constants.MGM_RESPONSE_UNKNOWN.equals(getIEC61499Status(opcuaStatus)));
+	}
+
+	@Override
+	public void removeWatch(final MonitoringBaseElement element) throws DeploymentException {
+		if (availableResources.isEmpty() && !getResourcesHandle()) {
+			return;
+		}
+		final String fullFbName = element.getQualifiedString();
+		final String resName = element.getResourceString();
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.REMOVE_WATCH_NODE, new Variant[] { new Variant(fullFbName) });
+		final String message = MessageFormat.format(Constants.REMOVE_WATCH, fullFbName);
+		CallMethodResult result;
+		try {
+			result = sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RemoveWatchFailed, fullFbName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return;
+		}
+		final StatusCode opcuaStatus = result.getStatusCode();
+		logResponseStatus(opcuaStatus, resName, fullFbName, Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+		element.setOffline(Constants.MGM_RESPONSE_UNKNOWN.equals(getIEC61499Status(opcuaStatus)));
+	}
+
+	@Override
+	public void triggerEvent(final MonitoringBaseElement element) throws DeploymentException {
+		if (availableResources.isEmpty() && !getResourcesHandle()) {
+			return;
+		}
+		final String fullFbName = element.getQualifiedString();
+		final String resName = element.getResourceString();
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.TRIGGER_EVENT_NODE, new Variant[] { new Variant(fullFbName) });
+		final String message = MessageFormat.format(Constants.TRIGGER_EVENT, fullFbName);
+		CallMethodResult result;
+		try {
+			result = sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_TriggerEventFailed, fullFbName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return;
+		}
+		logResponseStatus(result.getStatusCode(), resName, fullFbName,
+				Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+	}
+
+	@Override
+	public void forceValue(final MonitoringBaseElement element, final String value) throws DeploymentException {
+		if (availableResources.isEmpty() && !getResourcesHandle()) {
+			return;
+		}
+		final String fullFbName = element.getQualifiedString();
+		final String resName = element.getResourceString();
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.FORCE_VALUE_NODE, new Variant[] { new Variant(fullFbName), new Variant(value) });
+		final String message = MessageFormat.format(Constants.FORCE_VALUE, fullFbName);
+		CallMethodResult result;
+		try {
+			result = sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_ForceValueFailed, fullFbName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return;
+		}
+		logResponseStatus(result.getStatusCode(), resName, fullFbName,
+				Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+	}
+
+	@Override
+	public void clearForce(final MonitoringBaseElement element) throws DeploymentException {
+		if (availableResources.isEmpty() && !getResourcesHandle()) {
+			return;
+		}
+		final String fullFbName = element.getQualifiedString();
+		final String resName = element.getResourceString();
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.CLEAR_FORCE_NODE, new Variant[] { new Variant(fullFbName) });
+		final String message = MessageFormat.format(Constants.CLEAR_FORCE, fullFbName);
+		CallMethodResult result;
+		try {
+			result = sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_ClearForceFailed, fullFbName), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return;
+		}
+		logResponseStatus(result.getStatusCode(), resName, fullFbName,
+				Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+	}
+
+	/**************************************************************************
+	 * Helper Methods
+	 **************************************************************************/
+
+	/**
+	 * Browses Resource Nodes and caches available Resources
+	 *
+	 * @return CompletableFuture of Browse result status
+	 */
+	private CompletableFuture<StatusCode> browseResources() {
+		final BrowseDescription browse = new BrowseDescription(Constants.MGMT_NODE, BrowseDirection.Forward,
+				Identifiers.References, Boolean.TRUE, uint(NodeClass.Object.getValue()),
+				uint(BrowseResultMask.All.getValue()));
+		return client.browse(browse).thenCompose(result -> {
+			final List<ReferenceDescription> references = toList(result.getReferences());
+			for (final ReferenceDescription rd : references) {
+				rd.getNodeId().toNodeId(client.getNamespaceTable())
+						.ifPresent(nodeId -> availableResources.put(rd.getBrowseName().getName(), nodeId));
+			}
+			return CompletableFuture.completedFuture(result.getStatusCode());
+		});
+	}
+
+	private boolean getResourcesHandle() throws DeploymentException {
+		StatusCode status = StatusCode.BAD;
+		try {
+			status = browseResources().get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(Messages.OPCUADeploymentExecutor_BrowseOPCUAFailed);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+		}
+		return status.isGood() && !availableResources.isEmpty();
+	}
+
+	private void writeFBParameterCombined(final String destination, final String value, final String message) {
+		if (resourceNode == null) {
+			return;
+		}
+		final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.WRITE_FB_NODE,
+				new Variant[] { new Variant(destination), new Variant(value) });
+		requests.add(request);
+		requestMessages.add(message);
+	}
+
+	private void writeFBParameterSingle(final String resName, final String destination, final String value,
+			final String message) throws DeploymentException {
+		if (!availableResources.containsKey(resName) && !getResourcesHandle()) {
+			return;
+		}
+		final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+				Constants.WRITE_FB_NODE, new Variant[] { new Variant(destination), new Variant(value) });
+		CallMethodResult result;
+		try {
+			result = sendREQ(resName, request, message).get();
+		} catch (final ExecutionException e) {
+			throw new DeploymentException(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_WriteFBFailed, destination, value), e);
+		} catch (final InterruptedException e) {
+			Thread.currentThread().interrupt();
+			FordiacLogHelper.logError(
+					MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+			return;
+		}
+		logResponseStatus(result.getStatusCode(), resName, destination,
+				Messages.OPCUADeploymentExecutor_ErrorOnWriteRequest);
+	}
+
+	private String getDestinationInfo(final String destination) {
+		String info = client.getConfig().getEndpoint().getEndpointUrl();
+		if (!destination.equals("")) { //$NON-NLS-1$
+			info += ": " + destination; //$NON-NLS-1$
+
+		}
+		return info;
+	}
+
+	private static List<org.eclipse.fordiac.ide.deployment.devResponse.Resource> getQueryElements(
+			final Response response) {
+		if (null == response.getFblist() || null == response.getFblist().getFbs()) {
+			return Collections.emptyList();
+		}
+		return response.getFblist().getFbs().stream().map(fb -> {
+			final org.eclipse.fordiac.ide.deployment.devResponse.Resource res = DevResponseFactory.eINSTANCE
+					.createResource();
+			res.setName(fb.getName());
+			res.setType(fb.getType());
+			return res;
+		}).toList();
+	}
+
+	private Response parseResponse(final CallMethodResult result, final String responseType) throws IOException {
+		if ((result != null && result.getStatusCode().isGood())
+				&& (result.getOutputArguments()[0].getValue() instanceof final String response)) {
+			return parseXMLResponse(MessageFormat.format(responseType, response));
+		}
+		return Constants.EMPTY_RESPONSE;
+	}
+
+	private Response parseXMLResponse(final String encodedResponse) throws IOException {
+		if (null != encodedResponse) {
+			final InputSource source = new InputSource(new StringReader(encodedResponse));
+			final XMLResource xmlResource = new XMLResourceImpl();
+			xmlResource.load(source, respMapping.getLoadOptions());
+			for (final EObject object : xmlResource.getContents()) {
+				if (object instanceof final Response response) {
+					return response;
+				}
+			}
+		}
+		return Constants.EMPTY_RESPONSE;
+	}
+
+	private static NodeId processResult(final CallMethodResult result) {
+		final StatusCode statusCode = result.getStatusCode();
+		if (statusCode.isGood()) {
+			return (NodeId) result.getOutputArguments()[0].getValue();
+		}
+		final StatusCode[] inputArgumentResults = result.getInputArgumentResults();
+		if (inputArgumentResults != null) {
+			for (int i = 0; i < inputArgumentResults.length; i++) {
+				FordiacLogHelper.logInfo(MessageFormat.format("Input Argument Result {0}: {1}", Integer.valueOf(i), //$NON-NLS-1$
+						inputArgumentResults[i]));
+			}
+		}
+		return null;
+	}
+
+	private List<CallMethodResult> handleResponse(final CallResponse response, final String destination) {
+		final List<CallMethodResult> results = Arrays.asList(response.getResults());
+		if (results.size() != requestMessages.size()) {
+			FordiacLogHelper.logInfo("Result list size does not match number of requests!"); //$NON-NLS-1$
+		}
+		for (int i = 0; i < results.size(); i++) {
+			final CallMethodResult result = results.get(i);
+			final StatusCode opcuaStatus = result.getStatusCode();
+			if (!opcuaStatus.isGood()) {
+				final String message = requestMessages.get(i);
+				displayCommand(opcuaStatus, destination, message);
+			}
+		}
+		return results;
+	}
+
+	private void displayCommand(final StatusCode opcuaStatus, final String destination, final String message) {
+		final String info = getDestinationInfo(destination);
+		final String responseMessage = MessageFormat.format(Constants.RESPONSE, getIEC61499Status(opcuaStatus));
+		for (final IDeploymentListener listener : listeners) {
+			listener.postCommandSent(info, destination, message);
+		}
+		for (final IDeploymentListener listener : listeners) {
+			if (listener instanceof final IDeploymentListener2 listener2) {
+				listener2.postResponseReceived(info, message, responseMessage, destination);
+			} else {
+				listener.postResponseReceived(responseMessage, destination);
+			}
+		}
+	}
+
+	private static void logResponseStatus(final StatusCode opcuaStatus, final String resourceName,
+			final String errorElement, final String messageTemplate) {
+		if (!opcuaStatus.isGood()) {
+			FordiacLogHelper.logError(
+					MessageFormat.format(messageTemplate, getIEC61499Status(opcuaStatus), resourceName, errorElement));
+		}
+	}
+
+	private static String getIEC61499Status(final StatusCode opcuaStatus) {
+		final String status = Constants.RESPONSE_MAP.get(Long.valueOf(opcuaStatus.getValue()));
+		if (status != null) {
+			return status;
+		}
+		FordiacLogHelper.logInfo(
+				MessageFormat.format(Messages.OPCUADeploymentExecutor_UnknownResponseCode, opcuaStatus.toString()));
+		return Constants.MGM_RESPONSE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/helpers/Constants.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/helpers/Constants.java
new file mode 100644
index 0000000..3045fd9
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/helpers/Constants.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Markus Meingast
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua.helpers;
+
+import java.util.AbstractMap;
+import java.util.Map;
+
+import org.eclipse.fordiac.ide.deployment.devResponse.DevResponseFactory;
+import org.eclipse.fordiac.ide.deployment.devResponse.Response;
+import org.eclipse.milo.opcua.stack.core.StatusCodes;
+import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
+import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
+
+public class Constants {
+
+	/** OPCUA Nodes **/
+	/* Root Node */
+	public static final NodeId MGMT_NODE = new NodeId(1, "IEC61499Mgmt"); //$NON-NLS-1$
+
+	public static final NodeId CREATE_RESOURCE_NODE = new NodeId(1, "createResource"); //$NON-NLS-1$
+	public static final NodeId CREATE_FB_NODE = new NodeId(1, "createFB"); //$NON-NLS-1$
+	public static final NodeId CREATE_CONNECTION_NODE = new NodeId(1, "createConnection"); //$NON-NLS-1$
+	public static final NodeId WRITE_DEVICE_NODE = new NodeId(1, "writeDevice"); //$NON-NLS-1$
+	public static final NodeId WRITE_RESOURCE_NODE = new NodeId(1, "writeResource"); //$NON-NLS-1$
+	public static final NodeId WRITE_FB_NODE = new NodeId(1, "writeFB"); //$NON-NLS-1$
+	public static final NodeId START_DEVICE_NODE = new NodeId(1, "startDevice"); //$NON-NLS-1$
+	public static final NodeId START_RESOURCE_NODE = new NodeId(1, "startResource"); //$NON-NLS-1$
+	public static final NodeId START_FB_NODE = new NodeId(1, "startFB"); //$NON-NLS-1$
+	public static final NodeId KILL_DEVICE_NODE = new NodeId(1, "killDevice"); //$NON-NLS-1$
+	public static final NodeId KILL_RESOURCE_NODE = new NodeId(1, "killResource"); //$NON-NLS-1$
+	public static final NodeId DELETE_RESOURCE_NODE = new NodeId(1, "deleteResource"); //$NON-NLS-1$
+	public static final NodeId DELETE_FB_NODE = new NodeId(1, "deleteFB"); //$NON-NLS-1$
+	public static final NodeId DELETE_CONNECTION_NODE = new NodeId(1, "deleteConnection"); //$NON-NLS-1$
+	public static final NodeId ADD_WATCH_NODE = new NodeId(1, "addWatch"); //$NON-NLS-1$
+	public static final NodeId READ_WATCHES_NODE = new NodeId(1, "readWatches"); //$NON-NLS-1$
+	public static final NodeId REMOVE_WATCH_NODE = new NodeId(1, "removeWatch"); //$NON-NLS-1$
+	public static final NodeId TRIGGER_EVENT_NODE = new NodeId(1, "triggerEvent"); //$NON-NLS-1$
+	public static final NodeId FORCE_VALUE_NODE = new NodeId(1, "forceValue"); //$NON-NLS-1$
+	public static final NodeId CLEAR_FORCE_NODE = new NodeId(1, "clearForce"); //$NON-NLS-1$
+	public static final NodeId QUERY_RESOURCES_NODE = new NodeId(1, "queryResources"); //$NON-NLS-1$
+
+	/** Deployment Console Messages **/
+	public static final String CREATE_RESOURCE_INSTANCE = "<Request Action=\"CREATE RESOURCE\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String CREATE_FB_INSTANCE = "<Request Action=\"CREATE FB\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String CREATE_CONNECTION = "<Request Action=\"CREATE CONNECTION\"><Connection Destination=\"{0}\" Source=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String WRITE_DEVICE_PARAMETER = "<Request Action=\"WRITE DEVICE\"><Name=\"{0}\" Value=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String WRITE_RESOURCE_PARAMETER = "<Request Action=\"WRITE RESOURCE\"><Name=\"{0}\" Value=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String WRITE_FB_PARAMETER = "<Request Action=\"WRITE FB\"><Connection Destination=\"{0}\" Source=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String START_DEVICE = "<Request Action=\"START DEVICE\"/>"; //$NON-NLS-1$
+	public static final String START_RESOURCE = "<Request Action=\"START RESOURCE\"/>"; //$NON-NLS-1$
+	public static final String START_FB = "<Request Action=\"START FB\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String KILL_DEVICE = "<Request Action=\"KILL DEVICE\"/>"; //$NON-NLS-1$
+	public static final String KILL_RESOURCE = "<Request Action=\"KILL RESOURCE\"/>"; //$NON-NLS-1$
+	public static final String DELETE_RESOURCE = "<Request Action=\"DELETE RESOURCE\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String DELETE_FB_INSTANCE = "<Request Action=\"DELETE FB\"><FB Name=\"{0}\" /></Request>"; //$NON-NLS-1$
+	public static final String DELETE_CONNECTION = "<Request Action=\"DELETE CONNECTION\"><Connection Destination=\"{0}\" Source=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String ADD_WATCH = "<Request Action=\"ADD WATCH\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+	public static final String READ_WATCHES = "<Request Action=\"READ\"><Watches/></Request>"; //$NON-NLS-1$
+	public static final String REMOVE_WATCH = "<Request Action=\"REMOVE WATCH\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+	public static final String TRIGGER_EVENT = "<Request Action=\"WRITE\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+	public static final String FORCE_VALUE = "<Request Action=\"WRITE\"><Connection Destination=\"{0}\" Value=\"{1}\" /></Request>"; //$NON-NLS-1$
+	public static final String CLEAR_FORCE = "<Request Action=\"WRITE\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+	public static final String QUERY_RESOURCES = "<Request Action=\"QUERY\"></Request>"; //$NON-NLS-1$
+
+	public static final String RESPONSE = "<Response Reason=\"{0}\" />\n"; //$NON-NLS-1$
+
+	public static final String WATCHES_RESPONSE = "<Response>\n  <Watches>\n    {0}\n  </Watches>\n</Response>"; //$NON-NLS-1$
+	public static final String QUERY_RESPONSE = "<Response>\n  <FBList>\n    {0}\n  </FBList>\n</Response>"; //$NON-NLS-1$
+	public static final Response EMPTY_RESPONSE;
+
+	public static final String FB_NAME_FORMAT = "{0}{1}"; //$NON-NLS-1$
+	public static final String FB_PORT_NAME_FORMAT = "{0}{1}.{2}"; //$NON-NLS-1$
+
+	/* IEC61499 Status Codes */
+	public static final String MGM_RESPONSE_READY = "Ready"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_BAD_PARAMS = "BadParams"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_LOCAL_TERMINATION = "LocalTermination"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_SYSTEM_TERMINATION = "SystemTermination"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_NOT_READY = "NotReady"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_UNSUPPORTED_CMD = "UnsupportedCmd"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_UNSUPPORTED_TYPE = "UnsupportedType"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_NO_SUCH_OBJECT = "NoSuchObject"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_INVALID_OBJECT = "InvalidObject"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_INVALID_OPERATION = "InvalidOperation"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_INVALID_STATE = "InvalidState"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_OVERFLOW = "Overflow"; //$NON-NLS-1$
+	public static final String MGM_RESPONSE_UNKNOWN = "Unknown"; //$NON-NLS-1$
+
+	public static final Map<Long, String> RESPONSE_MAP = Map.ofEntries(
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCode.GOOD.getValue()), MGM_RESPONSE_READY),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_InvalidArgument), MGM_RESPONSE_BAD_PARAMS),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_Shutdown), MGM_RESPONSE_LOCAL_TERMINATION),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_ResourceUnavailable),
+					MGM_RESPONSE_SYSTEM_TERMINATION),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_StateNotActive), MGM_RESPONSE_NOT_READY),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_NotImplemented), MGM_RESPONSE_UNSUPPORTED_CMD),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_DataTypeIdUnknown),
+					MGM_RESPONSE_UNSUPPORTED_TYPE),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_NotFound), MGM_RESPONSE_NO_SUCH_OBJECT),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_NotSupported), MGM_RESPONSE_INVALID_OBJECT),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_RequestNotAllowed),
+					MGM_RESPONSE_INVALID_OPERATION),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_InvalidState), MGM_RESPONSE_INVALID_STATE),
+			new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_TcpNotEnoughResources), MGM_RESPONSE_OVERFLOW));
+
+	static {
+		// ensure that all entries in the empty response return appropriate empty values
+		EMPTY_RESPONSE = DevResponseFactory.eINSTANCE.createResponse();
+		EMPTY_RESPONSE.setFblist(DevResponseFactory.eINSTANCE.createFBList());
+		EMPTY_RESPONSE.setID("0"); //$NON-NLS-1$
+		EMPTY_RESPONSE.setWatches(DevResponseFactory.eINSTANCE.createWatches());
+	}
+
+	private Constants() {
+		// empty private constructor
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/messages.properties b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/messages.properties
new file mode 100644
index 0000000..30448db
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/messages.properties
@@ -0,0 +1,54 @@
+#################################################################################
+ # Copyright (c) 2022 - 2024 Markus Meingast, Johannes Kepler University Linz
+ #
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # http://www.eclipse.org/legal/epl-2.0.
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ #  Markus Meingast - initial API and implementation and/or initial documentation
+#################################################################################
+
+OPCUADeploymentExecutor_GetMgrIDFailed=Could not fetch Manager ID. Message: {0}
+OPCUADeploymentExecutor_CreateClientFailed=Could not create OPC UA client. Message: {0}
+OPCUADeploymentExecutor_CreateResourceFailed=Create Resource Instance {0} failed.
+OPCUADeploymentExecutor_CreateFBInstanceFailed=Create FB Instance failed: {0}
+OPCUADeploymentExecutor_CreateFBInstanceFailedNoTypeFound=No FB Type found: {0}
+OPCUADeploymentExecutor_CreateConnectionFailed=Create Connection failed: {0}
+OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound=No Connection Data found: {0}!
+
+OPCUADeploymentExecutor_WriteDeviceFailed=Write device parameter failed for device: {0}.
+OPCUADeploymentExecutor_WriteResourceFailed=Write resource parameter failed for resource: {0}.
+OPCUADeploymentExecutor_WriteFBFailed=Write FB parameter failed for FB: {0}, Value: {1}.
+OPCUADeploymentExecutor_ErrorOnWriteRequest=Error on Write! Reason: {0}. Resource: {1}, Port: {2}.
+
+OPCUADeploymentExecutor_StartDeviceFailed=Starting Device failed for Device: {0}.
+OPCUADeploymentExecutor_StartResourceFailed=Starting Resource failed for Resource: {0}.
+OPCUADeploymentExecutor_StartFBFailed=Starting FB failed for FB: {0}.
+OPCUADeploymentExecutor_KillDeviceFailed=Killing Device failed for Device: {0}.
+OPCUADeploymentExecutor_KillResourceFailed=Killing Resource failed for Resource: {0}.
+OPCUADeploymentExecutor_KillFBFailed=Killing FB failed for FB: {0}.
+OPCUADeploymentExecutor_DeleteDeviceFailed=Deleting Device failed for Device: {0}.
+OPCUADeploymentExecutor_DeleteResourceFailed=Deleting Resource failed for Resource: {0}.
+OPCUADeploymentExecutor_DeleteFBFailed=Deleting FB failed for FB: {0}.
+OPCUADeploymentExecutor_DeleteConnectionFailed=Delete Connection failed for Connection: Destination={0} Source={1}.
+OPCUADeploymentExecutor_AddWatchFailed=Add Watch failed for FB: {0}!
+OPCUADeploymentExecutor_ReadWatchesFailed=Read Watches failed!
+OPCUADeploymentExecutor_RemoveWatchFailed=Remove Watch failed for FB: {0}!
+OPCUADeploymentExecutor_TriggerEventFailed=Trigger Event failed for FB: {0}!
+OPCUADeploymentExecutor_ForceValueFailed=Force Value failed for FB: {0}!
+OPCUADeploymentExecutor_ClearForceFailed=Clear Force failed for FB: {0}!
+OPCUADeploymentExecutor_ErrorOnMonitoringRequest=Error on Watch! Reason: {0}. Resource: {1}, Monitoring Element: {2}
+OPCUADeploymentExecutor_QueryResourcesFailed=Query Resources failed!
+OPCUADeploymentExecutor_ErrorOnQueryResources="Error on Query Resources! Reason: {0}.
+
+OPCUADeploymentExecutor_BrowseOPCUAFailed=Browsing OPCUA Address Space failed!
+
+OPCUADeploymentExecutor_RequestFailed=Request from {0} to OPCUA server failed  
+OPCUADeploymentExecutor_RequestInterrupted=Request to OPCUA server was interrupted. Message: {0}
+
+OPCUADeploymentExecutor_CouldNotConnectToDevice=Could not connect to device.
+OPCUADeploymentExecutor_CouldNotDisconnectFromDevice=Could not disconnect from device.
+OPCUADeploymentExecutor_UnknownResponseCode=Received unknown response message from OPCUA Server! Message: {0}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/providers/OPCUADevMgmtInteractorProvider.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/providers/OPCUADevMgmtInteractorProvider.java
new file mode 100644
index 0000000..da12e63
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/providers/OPCUADevMgmtInteractorProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Markus Meingast
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua.providers;
+
+import org.eclipse.fordiac.ide.deployment.IDeviceManagementCommunicationHandler;
+import org.eclipse.fordiac.ide.deployment.interactors.IDeviceManagementInteractor;
+import org.eclipse.fordiac.ide.deployment.interactors.IDeviceManagementInteractorProvider;
+import org.eclipse.fordiac.ide.deployment.opcua.OPCUADeploymentExecutor;
+import org.eclipse.fordiac.ide.model.libraryElement.Device;
+
+public class OPCUADevMgmtInteractorProvider implements IDeviceManagementInteractorProvider {
+	private static final String PROFILE_NAME = "OPC UA"; //$NON-NLS-1$
+
+	@Override
+	public boolean supports(final String profile) {
+		return getProfileName().equals(profile);
+	}
+
+	@Override
+	public String getProfileName() {
+		return PROFILE_NAME;
+	}
+
+	@Override
+	public IDeviceManagementInteractor createInteractor(final Device dev,
+			final IDeviceManagementCommunicationHandler overrideHandler) {
+		return new OPCUADeploymentExecutor(dev);
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF
index eb9143d..3e4dc7e 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF
@@ -21,7 +21,7 @@
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Name: %pluginName
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java
index 4087807..99845d0 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java
@@ -15,6 +15,7 @@
 import java.util.ArrayList;
 import java.util.Deque;
 import java.util.List;
+import java.util.function.Function;
 import java.util.stream.Stream;
 
 import org.eclipse.fordiac.ide.deployment.exceptions.DeploymentException;
@@ -137,15 +138,17 @@
 	private void addSubAppParams(final SubApp subApp, final Deque<SubApp> subAppHierarchy, final String prefix)
 			throws DeploymentException {
 		for (final VarDeclaration dataInput : subApp.getInterface().getInputVars()) {
-			final String val = DeploymentHelper.getVariableValue(dataInput);
-			if (null != val) {
+			final Function<VarDeclaration, String> dataInputValue = DeploymentHelper
+					.getVariableValueRetargetable(dataInput);
+			if (dataInputValue != null) {
 				for (final ConDeploymentDest destData : getSubappInterfaceconnections(subAppHierarchy, prefix,
 						dataInput)) {
-					params.add(new ParameterData(val, destData.prefix, (VarDeclaration) destData.destination));
+					final VarDeclaration destVar = (VarDeclaration) destData.destination;
+					final String destDataValue = dataInputValue.apply(destVar);
+					params.add(new ParameterData(destDataValue, destData.prefix, destVar));
 				}
 			}
 		}
-
 	}
 
 	private static FBNetwork getFBNetworkForSubApp(final SubApp subApp) {
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/interactors/ForteTypeNameCreator.java b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/interactors/ForteTypeNameCreator.java
new file mode 100644
index 0000000..753c54b
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/interactors/ForteTypeNameCreator.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2024 TU Wien ACIN, Profactor GmbH, fortiss GmbH,
+ * 							Johannes Kepler University,
+ * 							Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *  Alois Zoitl - Extracted from DeploymentExecutor and extended for Configurable move
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.interactors;
+
+import org.eclipse.fordiac.ide.model.data.DataType;
+import org.eclipse.fordiac.ide.model.helpers.PackageNameHelper;
+import org.eclipse.fordiac.ide.model.libraryElement.ConfigurableFB;
+import org.eclipse.fordiac.ide.model.libraryElement.ConfigurableMoveFB;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.StructManipulator;
+
+public class ForteTypeNameCreator {
+
+	public static String getForteTypeName(final FBNetworkElement fb) {
+		if (fb != null && fb.getTypeEntry() != null) {
+			if (fb instanceof final ConfigurableFB confFB) {
+				return getConfigureFBType(confFB);
+			}
+			return getTypeName(fb);
+		}
+		return ""; //$NON-NLS-1$
+	}
+
+	private static String getTypeName(final FBNetworkElement fb) {
+		return convertFullTypeNameToFORTE(fb.getFullTypeName());
+	}
+
+	private static String getConfigureFBType(final ConfigurableFB confFB) {
+		DataType dt = null;
+		if (confFB instanceof final ConfigurableMoveFB move) {
+			dt = move.getDataType();
+		}
+		if (confFB instanceof final StructManipulator structMan) {
+			dt = structMan.getStructType();
+		}
+		String typeName = getTypeName(confFB);
+		if (dt != null) {
+			// the _1 is needed for 4diac FORTE to separate type name from configuration
+			// part
+			typeName += "_1" + convertFullTypeNameToFORTE(PackageNameHelper.getFullTypeName(dt)); //$NON-NLS-1$
+		}
+		return typeName;
+	}
+
+	private static String convertFullTypeNameToFORTE(final String fullTypeName) {
+		return fullTypeName.replace(':', '_');
+	}
+
+	private ForteTypeNameCreator() {
+		throw new UnsupportedOperationException("Helper class should not be instantiated!"); //$NON-NLS-1$
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java
index 7005009..e3910f6 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java
@@ -1,6 +1,6 @@
 /*******************************************************************************
- * Copyright (c) 2018 fortiss GmbH, Johannes Kepler University
- *               2023 Martin Erich Jobst
+ * Copyright (c) 2018, 2024 fortiss GmbH, Johannes Kepler University
+ *                          Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -15,10 +15,12 @@
 package org.eclipse.fordiac.ide.deployment.util;
 
 import java.text.MessageFormat;
+import java.util.function.Function;
 
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.fordiac.ide.deployment.Messages;
 import org.eclipse.fordiac.ide.deployment.exceptions.DeploymentException;
+import org.eclipse.fordiac.ide.model.eval.value.Value;
 import org.eclipse.fordiac.ide.model.eval.variable.VariableOperations;
 import org.eclipse.fordiac.ide.model.libraryElement.Device;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
@@ -26,20 +28,35 @@
 
 public interface DeploymentHelper {
 
-	String MGR_ID = "MGR_ID";  //$NON-NLS-1$
-
+	String MGR_ID = "MGR_ID"; //$NON-NLS-1$
 
 	static String getVariableValue(final VarDeclaration varDecl) throws DeploymentException {
 		if (hasInitalValue(varDecl)) {
 			try {
-				return VariableOperations.newVariable(varDecl).toString();
+				return VariableOperations.newVariable(varDecl).toString(false);
 			} catch (final Exception e) {
 				if (forceDeployement()) {
 					return varDecl.getValue().getValue();
-				} else {
-					throw new DeploymentException(MessageFormat.format(Messages.DeploymentHelper_VariableValueError,
-							varDecl.getValue().getValue(), varDecl.getQualifiedName(), e.getMessage()), e);
 				}
+				throw new DeploymentException(MessageFormat.format(Messages.DeploymentHelper_VariableValueError,
+						varDecl.getValue().getValue(), varDecl.getQualifiedName(), e.getMessage()), e);
+			}
+		}
+		return null;
+	}
+
+	static Function<VarDeclaration, String> getVariableValueRetargetable(final VarDeclaration varDecl)
+			throws DeploymentException {
+		if (hasInitalValue(varDecl)) {
+			try {
+				final Value value = VariableOperations.newVariable(varDecl).getValue();
+				return destination -> VariableOperations.newVariable(destination, value).toString(false);
+			} catch (final Exception e) {
+				if (forceDeployement()) {
+					return unused -> varDecl.getValue().getValue();
+				}
+				throw new DeploymentException(MessageFormat.format(Messages.DeploymentHelper_VariableValueError,
+						varDecl.getValue().getValue(), varDecl.getQualifiedName(), e.getMessage()), e);
 			}
 		}
 		return null;
diff --git a/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF
index fb8652b..77557f8 100644
--- a/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.elk;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.elk
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.elk.core,
  org.eclipse.elk.graph,
  org.eclipse.elk.alg.common,
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF
index a796a83..bdc9ee4 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Compare
 Bundle-SymbolicName: org.eclipse.fordiac.ide.emf.compare;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Automatic-Module-Name: org.eclipse.fordiac.ide.emf.compare
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Vendor: Eclipse 4diac
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java
index ac3ec54..029e072 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java
@@ -27,11 +27,19 @@
 	}
 
 	@Override
-	public Adapter createSubAppAdapter() {
-		if (subAppItemProvider == null) {
-			subAppItemProvider = new SubAppItemProviderEmfCompare(this);
+	public Adapter createTypedSubAppAdapter() {
+		if (typedSubAppItemProvider == null) {
+			typedSubAppItemProvider = new TypedSubAppItemProviderEmfCompare(this);
 		}
-		return subAppItemProvider;
+		return typedSubAppItemProvider;
+	}
+
+	@Override
+	public Adapter createUntypedSubAppAdapter() {
+		if (untypedSubAppItemProvider == null) {
+			untypedSubAppItemProvider = new UntypedSubAppItemProviderEmfCompare(this);
+		}
+		return untypedSubAppItemProvider;
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/TypedSubAppItemProviderEmfCompare.java
similarity index 87%
rename from plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
rename to plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/TypedSubAppItemProviderEmfCompare.java
index d662c08..9394256 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/TypedSubAppItemProviderEmfCompare.java
@@ -20,11 +20,11 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.systemmanagement.ui.providers.SubAppItemProviderForSystem;
+import org.eclipse.fordiac.ide.systemmanagement.ui.providers.TypedSubAppItemProviderForSystem;
 
-public class SubAppItemProviderEmfCompare extends SubAppItemProviderForSystem {
+public class TypedSubAppItemProviderEmfCompare extends TypedSubAppItemProviderForSystem {
 
-	public SubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
+	public TypedSubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/UntypedSubAppItemProviderEmfCompare.java
similarity index 87%
copy from plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
copy to plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/UntypedSubAppItemProviderEmfCompare.java
index d662c08..3d7e8e2 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/UntypedSubAppItemProviderEmfCompare.java
@@ -20,11 +20,11 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.systemmanagement.ui.providers.SubAppItemProviderForSystem;
+import org.eclipse.fordiac.ide.systemmanagement.ui.providers.UntypedSubAppItemProviderForSystem;
 
-public class SubAppItemProviderEmfCompare extends SubAppItemProviderForSystem {
+public class UntypedSubAppItemProviderEmfCompare extends UntypedSubAppItemProviderForSystem {
 
-	public SubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
+	public UntypedSubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF
index c71f6f6..69e2c55 100644
--- a/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
  org.eclipse.fordiac.ide.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Compare exported FBs
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export.compare;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF
index 65a4fb7..3e42a3d 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: FORTE Lua Export for FORTE V1.0.x New Generation ST Support
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_lua.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.export.forte_lua.st
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF
index afe90e6..d12eb26 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: FORTE Export for Lua
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_lua;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.xtend.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF
index b766103..613e5b2 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: FORTE Export for FORTE V1.0.x New Generation ST Support
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_ng.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.export.forte_ng.st
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF
index d48593e..07e4542 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: FORTE Export for FORTE V1.0.x New Generation
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_ng;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.export.forte_ng
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF
index c8dbdd1..b1b26d7 100644
--- a/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
  org.eclipse.fordiac.ide.export
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Export UI
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export.ui;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF
index bae3262..8b1745f 100644
--- a/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: XMI Export
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export.xmi;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.export.xmi
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF
index f278a10..11ffc76 100644
--- a/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
  org.eclipse.fordiac.ide.util
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Export Utils
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.export;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF
index 59b4c20..24d1fc3 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
  org.eclipse.core.resources,
  org.eclipse.sirius,
  org.eclipse.sirius.common.acceleo.aql,
- org.eclipse.fordiac.ide.fb.interpreter;bundle-version="2.0.0"
+ org.eclipse.fordiac.ide.fb.interpreter;bundle-version="3.0.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF
index 8d944b3..fa1c91a 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.fb.interpreter.edit;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.fb.interpreter.edit
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.fordiac.ide.fb.interpreter.provider.OperationalSemanticsEditPlugin$Implementation
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF
index 66f44e2..fa60ae0 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.fb.interpreter.editor;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.fb.interpreter.editor
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.fordiac.ide.fb.intepreter.presentation.OperationalSemanticsEditorPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF
index 28aae40..5d0170d 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.fb.interpreter;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.fb.interpreter
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -34,5 +34,6 @@
  org.eclipse.emf.compare.rcp,
  org.eclipse.emf.compare.edit,
  org.eclipse.ui.ide,
- org.eclipse.fordiac.ide.model.commands
+ org.eclipse.fordiac.ide.model.commands,
+ org.eclipse.fordiac.ide.fbtypeeditor.ecc
 Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java
index 37ac878..9a79149 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java
@@ -9,6 +9,7 @@
  *
  * Contributors:
  *   Bianca Wiesmayr - initial API and implementation and/or initial documentation
+ *   Melanie Winter - added synchronization
  *******************************************************************************/
 package org.eclipse.fordiac.ide.fb.interpreter.handler;
 
@@ -31,7 +32,9 @@
 import org.eclipse.fordiac.ide.fb.interpreter.testcasemodel.TestSuite;
 import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType;
 import org.eclipse.fordiac.ide.model.libraryElement.FBType;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 import org.eclipse.ui.handlers.HandlerUtil;
@@ -82,27 +85,48 @@
 		testType.getTypeEntry().save(testType, monitor);
 
 		// matches the expected with the actual behaviour
-		final FBType matchType = new MatchFBGenerator(type, testSuite).generateMatchFB();
-		matchType.getTypeEntry().save(matchType, monitor);
-
-		// sends the outcome of the test and the testname to the outputs of the
-		// composite
-		final FBType muxType = new MuxFBGenerator(type, testSuite).generateMuxFB();
-		muxType.getTypeEntry().save(muxType, monitor);
-
-		// generates the signals for the testsignal and mux fb
-		final FBType runAllType = new RunAllFBGenerator(type, testSuite).generateRunAllFB();
-		runAllType.getTypeEntry().save(runAllType, monitor);
-
-		// don't change order, generateCompositeFB won't work then
 		final List<FBType> list = new ArrayList<>();
-		list.add(testType);
-		list.add(type);
-		list.add(matchType);
-		list.add(muxType);
-		list.add(runAllType);
+		Display.getDefault().syncExec(() -> {
+			final FBType matchType = new MatchFBGenerator(type, testSuite).generateMatchFB();
 
-		final CompositeFBType compositeType = new CompositeTestFBGenerator(type, testSuite, list).generateCompositeFB();
-		compositeType.getTypeEntry().save(compositeType, monitor);
+			try {
+				matchType.getTypeEntry().save(matchType, monitor);
+			} catch (final CoreException e) {
+				FordiacLogHelper.logError(e.getMessage());
+			}
+
+			// sends the outcome of the test and the testname to the outputs of the
+			// composite
+			final FBType muxType = new MuxFBGenerator(type, testSuite).generateMuxFB();
+			try {
+				muxType.getTypeEntry().save(muxType, monitor);
+			} catch (final CoreException e) {
+				FordiacLogHelper.logError(e.getMessage());
+			}
+
+			// generates the signals for the testsignal and mux fb
+			final FBType runAllType = new RunAllFBGenerator(type, testSuite).generateRunAllFB();
+			try {
+				runAllType.getTypeEntry().save(runAllType, monitor);
+			} catch (final CoreException e) {
+				FordiacLogHelper.logError(e.getMessage());
+			}
+
+			// don't change order, generateCompositeFB won't work then
+			list.add(testType);
+			list.add(type);
+			list.add(matchType);
+			list.add(muxType);
+			list.add(runAllType);
+
+			final CompositeFBType compositeType = new CompositeTestFBGenerator(type, testSuite, list)
+					.generateCompositeFB();
+
+			try {
+				compositeType.getTypeEntry().save(compositeType, monitor);
+			} catch (final CoreException e) {
+				FordiacLogHelper.logError(e.getMessage());
+			}
+		});
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java
index 3d16459..9dde94a 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java
@@ -118,9 +118,9 @@
 	protected void addFBsToNetwork() {
 		final FBNetwork net = LibraryElementFactory.eINSTANCE.createFBNetwork();
 		compositeFB.setFBNetwork(net);
-		addedSourceType = addFBToNetwork(net, sourceType.getTypeEntry(), 400, 0);
+		addedSourceType = addFBToNetwork(net, sourceType, 400, 0);
 		for (int i = 0; i < monitorFBs.size(); i++) {
-			addedMonitorFBs.add(addFBToNetwork(net, monitorFBs.get(i).getTypeEntry(), 400, 300 * (i + 1)));
+			addedMonitorFBs.add(addFBToNetwork(net, monitorFBs.get(i), 400, 300 * (i + 1)));
 		}
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java
index 0519db5..b15ef92 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java
@@ -16,7 +16,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.fordiac.ide.fb.interpreter.testappgen.internal.AbstractCompositeFBGenerator;
 import org.eclipse.fordiac.ide.fb.interpreter.testcasemodel.TestSuite;
 import org.eclipse.fordiac.ide.model.FordiacKeywords;
@@ -79,7 +78,8 @@
 					x = 50 + 400 * j;
 					y = 50 + 250 * i;
 				}
-				final FB addedBlock = addFBToNetwork(net, blocksToAdd.get(j).getTypeEntry(), x, y);
+
+				final FB addedBlock = addFBToNetwork(net, blocksToAdd.get(j), x, y);
 				// the actual instance of the added blocks get saved to a list for easier access
 				// when creating connections
 				addBlockToAccordingList(addedBlock, i, j);
@@ -113,18 +113,19 @@
 		compEl.setTypeEntry(compType);
 		addPosition(compEl, x + 200, y + 150);
 
-		compEl.setInterface(EcoreUtil.copy(compEl.getType().getInterfaceList()));
+		compEl.setInterface(compEl.getType().getInterfaceList().copy());
 
 		net.getNetworkElements().add(compEl);
 		final String name = NameRepository.createUniqueName(compEl, "TESTAPPFB1");//$NON-NLS-1$
 		compEl.setName(name);
 
 		// connection between matchFB and timeOut
+
 		final AdapterConnection a = createAdapterConnection(
 				matchFBs.get(matchFBs.size() - 1).getInterface().getPlugs().get(0),
 				compositeFB.getFBNetwork().getFBNamed(name).getInterface().getSockets().get(0));
 		compositeFB.getFBNetwork().getAdapterConnections().add(a);
-	}
+}
 
 	private static AdapterConnection createAdapterConnection(final AdapterDeclaration source,
 			final AdapterDeclaration dest) {
@@ -188,9 +189,11 @@
 		compositeFB.getFBNetwork().getEventConnections()
 				.add(createEventConnection(matchFBs.get(index).getInterface().getEventOutputs().get(0),
 						muxFB.getInterface().getEventInputs().get(muxFB.getInterface().getEventInputs().size() - 2)));
-		compositeFB.getFBNetwork().getEventConnections()
-				.add(createEventConnection(matchFBs.get(index).getInterface().getEventOutputs().get(1),
-						muxFB.getInterface().getEventInputs().get(muxFB.getInterface().getEventInputs().size() - 1)));
+
+		final Event dest = matchFBs.get(index).getInterface().getEventOutputs().get(1);
+		final Event source = muxFB.getInterface().getEventInputs()
+				.get(muxFB.getInterface().getEventInputs().size() - 1);
+		compositeFB.getFBNetwork().getEventConnections().add(createEventConnection(dest, source));
 		compositeFB.getFBNetwork().getEventConnections()
 				.add(createEventConnection(runAllFB.getInterface().getEventOutputs().get(index),
 						muxFB.getInterface().getEventInputs().get(index)));
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java
index 78d3b9e..8e4ca6c 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java
@@ -18,6 +18,7 @@
 
 import org.eclipse.fordiac.ide.fb.interpreter.testappgen.internal.AbstractBasicFBGenerator;
 import org.eclipse.fordiac.ide.fb.interpreter.testcasemodel.TestSuite;
+import org.eclipse.fordiac.ide.fbtypeeditor.ecc.contentprovider.ECCContentAndLabelProvider;
 import org.eclipse.fordiac.ide.model.FordiacKeywords;
 import org.eclipse.fordiac.ide.model.NameRepository;
 import org.eclipse.fordiac.ide.model.commands.create.CreateInterfaceElementCommand;
@@ -94,7 +95,9 @@
 
 				// timeout action for wait state
 				final ECAction waitAct = TestEccGenerator.createAction();
-				waitAct.setOutput(plug.getAdapterFB().getInterface().getEventInputs().get(0));
+
+				waitAct.setOutput(ECCContentAndLabelProvider.getOutputEvents(destinationFB).stream()
+						.filter(s -> s.getName().equals("START")).findFirst().orElse(null));
 				waitAct.setAlgorithm(createTimeOutAlg(destinationFB));
 				eccGen.getLastState().getECAction().add(waitAct);
 
@@ -113,16 +116,17 @@
 				eccGen.getLastState().setName(NameRepository.createUniqueName(eccGen.getLastState(), "ERROR_1")); //$NON-NLS-1$
 				createErrorTransitions(eccGen, splitName[i]);
 				eccGen.createTransitionFromTo(eccGen.getNTimesLast(1), eccGen.getLastState(),
-						plug.getAdapterFB().getInterface().getEventOutputs().get(0));
+						ECCContentAndLabelProvider.getInputEvents(destinationFB)
+								.get(ECCContentAndLabelProvider.getInputEvents(destinationFB).size() - 1));
 				eccGen.createTransitionFromTo(eccGen.getLastState(), errState, null);
 				eccGen.decreaseCaseCount();
 
 				if (i == splitName.length - 2) {
 					// before the success/match state a state with timeout is inserted to check for
 					// any additional incoming events
-					createTimeOutState(eccGen, plug, splitName[i], errState, i);
+					createTimeOutState(eccGen, splitName[i], errState, i);
 					// success/match state, sends success event when reached and checks data
-					createMatchState(eccGen, plug, event, sucState, errState, i);
+					createMatchState(eccGen, event, sucState, errState, i);
 				}
 			}
 
@@ -131,14 +135,16 @@
 		}
 	}
 
-	private void createTimeOutState(final TestEccGenerator eccGen, final AdapterDeclaration plug, final String name,
-			final ECState errState, final int i) {
+	private void createTimeOutState(final TestEccGenerator eccGen, final String name, final ECState errState,
+			final int i) {
 		// state
 		eccGen.createState("WAIT", i + 1); //$NON-NLS-1$
 		eccGen.getLastState().setName(NameRepository.createUniqueName(eccGen.getLastState(), "WAIT_1")); //$NON-NLS-1$
 		// action
 		final ECAction waitAct = TestEccGenerator.createAction();
-		waitAct.setOutput(plug.getAdapterFB().getInterface().getEventInputs().get(0));
+
+		waitAct.setOutput(ECCContentAndLabelProvider.getOutputEvents(destinationFB).stream()
+				.filter(s -> s.getName().equals("START")).findFirst().orElse(null)); //$NON-NLS-1$
 		// algorithm
 		waitAct.setAlgorithm(createTimeOutAlg(destinationFB));
 		eccGen.getLastState().getECAction().add(waitAct);
@@ -155,8 +161,8 @@
 
 	}
 
-	private void createMatchState(final TestEccGenerator eccGen, final AdapterDeclaration plug, final Event event,
-			final ECState sucState, final ECState errState, final int i) {
+	private void createMatchState(final TestEccGenerator eccGen, final Event event, final ECState sucState,
+			final ECState errState, final int i) {
 		eccGen.createState(event.getName() + "_match", i + 2); //$NON-NLS-1$
 		eccGen.getLastState()
 				.setName(NameRepository.createUniqueName(eccGen.getLastState(), event.getName() + "_MATCH_1")); //$NON-NLS-1$
@@ -170,8 +176,10 @@
 					destinationFB.getInterfaceList().getOutputVars().get(0).getName());
 			sucAct.setAlgorithm(alg);
 		}
+
 		eccGen.createTransitionFromTo(eccGen.getNTimesLast(2), eccGen.getLastState(),
-				plug.getAdapterFB().getInterface().getEventOutputs().get(0));
+				ECCContentAndLabelProvider.getInputEvents(destinationFB)
+						.get(ECCContentAndLabelProvider.getInputEvents(destinationFB).size() - 1));
 
 		eccGen.createTransitionFromTo(eccGen.getLastState(), sucState, null);
 		eccGen.createTransitionFromTo(eccGen.getLastState(), errState, null);
@@ -190,13 +198,16 @@
 		eccGen.createTransitionFromTo(eccGen.getEcc().getStart(), eccGen.getLastState(), getEventInput("expected")); //$NON-NLS-1$
 		final ECAction act = TestEccGenerator.createAction();
 		act.setAlgorithm(createTimeOutAlg(destinationFB));
-		act.setOutput(plug.getAdapterFB().getInterface().getEventInputs().get(0));
+
+		act.setOutput(ECCContentAndLabelProvider.getOutputEvents(destinationFB).stream()
+				.filter(s -> s.getName().equals("START")).findFirst().orElse(null)); //$NON-NLS-1$
 		eccGen.getLastState().getECAction().add(act);
 
 		eccGen.createState("S1", 1); //$NON-NLS-1$
 		eccGen.getLastState().setName(NameRepository.createUniqueName(eccGen.getLastState(), "S1")); //$NON-NLS-1$
+
 		eccGen.createTransitionFromTo(eccGen.getNTimesLast(1), eccGen.getLastState(),
-				plug.getAdapterFB().getInterface().getEventOutputs().get(0));
+				plug.getType().getInterfaceList().getEventOutputs().get(0));
 		eccGen.createTransitionFromTo(eccGen.getLastState(), eccGen.getEcc().getStart(), null);
 		final ECAction actSuc = TestEccGenerator.createAction();
 		actSuc.setOutput(destinationFB.getInterfaceList().getEventOutputs().get(1));
@@ -219,9 +230,14 @@
 		final AdapterTypeEntry timeOutEntry = typelib.getAdapterTypeEntry("ATimeOut"); //$NON-NLS-1$
 		final CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(timeOutEntry.getType(), "timeOut", //$NON-NLS-1$
 				sourceType.getInterfaceList(), false, -1);
-		cmd.execute();
+
+		try {
+			cmd.execute();
+		} catch (final Exception e) {
+			System.out.print(e.getMessage());
+		}
+
 		final AdapterDeclaration timeOutPlug = (AdapterDeclaration) cmd.getCreatedElement();
-		timeOutPlug.setType(timeOutEntry.getType());
 		destinationFB.getInterfaceList().getPlugs().add(timeOutPlug);
 		return timeOutPlug;
 	}
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java
index 112cb5c..8138d51 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java
@@ -14,7 +14,6 @@
 package org.eclipse.fordiac.ide.fb.interpreter.testappgen.internal;
 
 import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.fordiac.ide.model.NameRepository;
 import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType;
 import org.eclipse.fordiac.ide.model.libraryElement.DataConnection;
@@ -26,7 +25,6 @@
 import org.eclipse.fordiac.ide.model.libraryElement.FBType;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
 
 public abstract class AbstractCompositeFBGenerator extends AbstractBlockGenerator {
 	protected CompositeFBType compositeFB;
@@ -73,15 +71,18 @@
 		return con;
 	}
 
-	protected static FB addFBToNetwork(final FBNetwork net, final TypeEntry blockToAdd, final int x, final int y) {
+	protected static FB addFBToNetwork(final FBNetwork net, final FBType blockToAdd, final int x, final int y) {
+
 		final FBNetworkElement el = LibraryElementFactory.eINSTANCE.createFB();
-		el.setTypeEntry(blockToAdd);
+		el.setTypeEntry(blockToAdd.getTypeEntry());
 		addPosition(el, x, y);
-		el.setInterface(EcoreUtil.copy(el.getType().getInterfaceList()));
+		el.setInterface(blockToAdd.getInterfaceList().copy());
+
 		net.getNetworkElements().add(el);
 		final String name = NameRepository.createUniqueName(el, "TESTAPPFB1"); //$NON-NLS-1$
 		el.setName(name);
 		return net.getFBNamed(name);
+
 	}
 
 	// some values might be null, so to be sure every value gets set again
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF
index 6c7a4ae..b7d3e9c 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF
@@ -1,11 +1,15 @@
 Manifest-Version: 1.0
 Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.externaltools,
+ org.eclipse.core.runtime,
  org.eclipse.core.runtime,
  org.eclipse.fordiac.ide.runtime,
- org.eclipse.debug.core
+ org.eclipse.debug.core,
+ org.eclipse.debug.ui,
+ org.eclipse.fordiac.ide.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: FBRT Launcher
 Bundle-Activator: org.eclipse.fordiac.ide.fbrtlauncher.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml
index afc9b42..2b1992e 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml
@@ -22,5 +22,29 @@
             class="org.eclipse.fordiac.ide.fbrtlauncher.preferences.PreferenceInitializer">
       </initializer>
    </extension>
-
+   
+   <extension point="org.eclipse.debug.core.launchConfigurationTypes">
+		<launchConfigurationType
+    		name="Local FBRT"
+    		delegate="org.eclipse.core.externaltools.internal.launchConfigurations.ProgramLaunchDelegate"
+    		modes="run"               
+    		id="org.eclipse.fordiac.ide.runLocalFBRT">        
+		</launchConfigurationType>
+	</extension>
+	<extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+		<launchConfigurationTabGroup
+			type="org.eclipse.fordiac.ide.runLocalFBRT"
+			class="org.eclipse.fordiac.ide.fbrtlauncher.FBRTLaunchGroup"
+			id="org.eclipse.fordiac.ide.fbrtlauncher.launchConfigurationTabGroup">
+		</launchConfigurationTabGroup>
+	</extension>
+	
+	<extension
+         point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+      <launchConfigurationTypeImage
+            configTypeID="org.eclipse.fordiac.ide.runLocalFBRT"
+			icon="platform:/plugin/org.eclipse.ui/icons/full/obj16/elements_obj.png"
+            id="org.eclipse.fordiac.ide.launchConfigurationTypeImage.runLocalFBRT">
+      </launchConfigurationTypeImage>
+   </extension>
 </plugin>
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchGroup.java b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchGroup.java
new file mode 100644
index 0000000..c563806
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchGroup.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fbrtlauncher;
+
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+
+public class FBRTLaunchGroup extends AbstractLaunchConfigurationTabGroup {
+	@Override
+	public void createTabs(final ILaunchConfigurationDialog dialog, final String mode) {
+		setTabs(new FBRTLaunchTab(), new CommonTab());
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchTab.java b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchTab.java
new file mode 100644
index 0000000..0c5a690
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchTab.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2024 Profactor GmbH, TU Wien ACIN, fortiss GmbH,
+ *                          Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *  Alois Zoitl - extracted and based on FBRTLauncher
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fbrtlauncher;
+
+import java.io.File;
+import java.util.Arrays;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.fordiac.ide.fbrtlauncher.preferences.PreferenceConstants;
+import org.eclipse.fordiac.ide.runtime.LaunchRuntimeUtils;
+import org.eclipse.fordiac.ide.runtime.RuntimeLaunchTab;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+import org.eclipse.fordiac.ide.ui.widget.FileChooserControl;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class FBRTLaunchTab extends RuntimeLaunchTab {
+
+	private static final String DEFAULT_FBRT_PORT = "61500"; //$NON-NLS-1$
+	private static final String ATTR_FBRT_LOCATION = "org.eclipse.fordiac.ide.fbrtlauncher.location"; //$NON-NLS-1$
+	private static final String ATTR_FBRT_DEV_TYPE = "org.eclipse.fordiac.ide.fbrtlauncher.deviceType"; //$NON-NLS-1$
+	private static final String ATTR_FBRT_LIB = "org.eclipse.fordiac.ide.fbrtlauncher.lib"; //$NON-NLS-1$
+	private static final String ATTR_FBRT_PORT = "org.eclipse.fordiac.ide.fbrtlauncher.port"; //$NON-NLS-1$
+
+	private static final String[] FBRT_DEV_TYPES = { "RMT_FRAME", "RMT_DEV" }; //$NON-NLS-1$ //$NON-NLS-2$
+	private static final String DEFAULT_FBRT_DEV_TYPE = FBRT_DEV_TYPES[0];
+
+	private FileChooserControl fbrtChooser;
+	private Text library;
+	private Combo devType;
+
+	@Override
+	public void createControl(final Composite parent) {
+		GridLayoutFactory.swtDefaults().applyTo(parent);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(parent);
+		final Composite comp = new Composite(parent, SWT.NONE);
+		GridLayoutFactory.swtDefaults().numColumns(2).applyTo(comp);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(comp);
+		setControl(comp);
+
+		fbrtChooser = new FileChooserControl(comp, SWT.NONE, Messages.FBRTPreferencePage_FBRTLocation, true);
+		fbrtChooser.addChooserValueChangedListener(newVal -> scheduleUpdateJob());
+
+		createLibrary(comp);
+		createDevType(comp);
+		createPortSelection(comp);
+
+	}
+
+	@Override
+	public void setDefaults(final ILaunchConfigurationWorkingCopy configuration) {
+		super.setDefaults(configuration);
+
+		configuration.setAttribute(ATTR_LOCATION, getJavaRte());
+
+		final String fbrtPath = Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.P_PATH);
+		configuration.setAttribute(ATTR_FBRT_LOCATION, (fbrtPath != null && !fbrtPath.isBlank()) ? fbrtPath : ""); //$NON-NLS-1$
+
+		configuration.setAttribute(ATTR_FBRT_LIB,
+				Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.P_LIB));
+		configuration.setAttribute(ATTR_FBRT_DEV_TYPE, DEFAULT_FBRT_DEV_TYPE);
+		configuration.setAttribute(ATTR_FBRT_PORT, DEFAULT_FBRT_PORT);
+
+		updateLaunchArguments(configuration);
+	}
+
+	@Override
+	public void initializeFrom(final ILaunchConfiguration configuration) {
+		try {
+			fbrtChooser.setValue(configuration.getAttribute(ATTR_FBRT_LOCATION, "")); //$NON-NLS-1$
+			library.setText(configuration.getAttribute(ATTR_FBRT_LIB, "")); //$NON-NLS-1$
+			devType.select(
+					getSelectedDevTypeIndex(configuration.getAttribute(ATTR_FBRT_DEV_TYPE, DEFAULT_FBRT_DEV_TYPE)));
+			setPortValue(configuration.getAttribute(ATTR_FBRT_PORT, DEFAULT_FBRT_PORT));
+		} catch (final CoreException e) {
+			FordiacLogHelper.logWarning(e.getMessage(), e);
+		}
+	}
+
+	@Override
+	public void performApply(final ILaunchConfigurationWorkingCopy configuration) {
+		configuration.setAttribute(ATTR_FBRT_LOCATION, fbrtChooser.getValue());
+		configuration.setAttribute(ATTR_FBRT_LIB, library.getText());
+		configuration.setAttribute(ATTR_FBRT_DEV_TYPE, FBRT_DEV_TYPES[devType.getSelectionIndex()]);
+		configuration.setAttribute(ATTR_FBRT_PORT, getPortValue());
+		updateLaunchArguments(configuration);
+	}
+
+	@Override
+	public String getName() {
+		return Messages.FBRTLaunchTab_TabName;
+	}
+
+	@Override
+	public boolean isValid(final ILaunchConfiguration launchConfig) {
+		if (!super.isValid(launchConfig)) {
+			return false;
+		}
+
+		if (fbrtChooser.getValue().isBlank()) {
+			setErrorMessage(Messages.FBRTLaunchTab_NoFBRTJarSet);
+			return false;
+		}
+		return true;
+	}
+
+	private void createLibrary(final Composite parent) {
+		final Label label = new Label(parent, SWT.NONE);
+		label.setText(Messages.FBRTPreferencePage_FBRTLibrary);
+		library = new Text(parent, SWT.BORDER);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).applyTo(library);
+		library.addModifyListener(ev -> scheduleUpdateJob());
+	}
+
+	private void createDevType(final Composite parent) {
+		final Label label = new Label(parent, SWT.NONE);
+		label.setText(Messages.FBRTLaunchTab_DeviceType);
+
+		devType = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
+		Arrays.stream(FBRT_DEV_TYPES).forEach(devType::add);
+		GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.CENTER).applyTo(devType);
+		devType.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(final SelectionEvent e) {
+				scheduleUpdateJob();
+			}
+		});
+	}
+
+	private static String getJavaRte() {
+		String javaRte = System.getProperty("java.home"); //$NON-NLS-1$
+		if (javaRte.isEmpty()) {
+			return ""; //$NON-NLS-1$
+		}
+		javaRte = javaRte + File.separatorChar + "bin" + File.separatorChar + "java"; //$NON-NLS-1$ //$NON-NLS-2$
+		if (Platform.getOS().equalsIgnoreCase(Platform.OS_WIN32)) {
+			javaRte += ".exe"; //$NON-NLS-1$
+		}
+		return javaRte;
+	}
+
+	private static void updateLaunchArguments(final ILaunchConfigurationWorkingCopy configuration) {
+		try {
+			// update java executable attribute, e.g., using it on a new machine.
+			configuration.setAttribute(ATTR_LOCATION, getJavaRte());
+
+			final File runtimeFile = getRuntimeFile(configuration);
+			final String portNum = configuration.getAttribute(ATTR_FBRT_PORT, DEFAULT_FBRT_PORT);
+			final String devType = configuration.getAttribute(ATTR_FBRT_DEV_TYPE, DEFAULT_FBRT_DEV_TYPE);
+
+			String fbrtPath = "fb.rt."; //$NON-NLS-1$
+			if (FBRT_DEV_TYPES[0].equalsIgnoreCase(devType)) {
+				fbrtPath += "hmi."; //$NON-NLS-1$
+			}
+
+			final String arguments = "-noverify -classpath ./lib" //$NON-NLS-1$
+					+ File.pathSeparatorChar + "./" //$NON-NLS-1$
+					+ runtimeFile.getName() + File.pathSeparatorChar + " " //$NON-NLS-1$
+					+ fbrtPath + devType + " -n " //$NON-NLS-1$
+					+ devType + " -s " //$NON-NLS-1$
+					+ portNum + " -p " //$NON-NLS-1$
+					+ configuration.getAttribute(ATTR_FBRT_LIB, ""); //$NON-NLS-1$
+
+			configuration.setAttribute(LaunchRuntimeUtils.ATTR_TOOL_ARGUMENTS, arguments);
+			final File parentFile = runtimeFile.getParentFile();
+			if (parentFile != null) {
+				configuration.setAttribute(ATTR_WORKING_DIRECTORY, parentFile.getAbsolutePath());
+			}
+
+		} catch (final CoreException e) {
+			FordiacLogHelper.logWarning(e.getMessage(), e);
+		}
+	}
+
+	private static int getSelectedDevTypeIndex(final String devType) {
+		for (int i = 0; i < FBRT_DEV_TYPES.length; i++) {
+			if (FBRT_DEV_TYPES[i].equals(devType)) {
+				return i;
+			}
+		}
+		return 0;
+	}
+
+	private static File getRuntimeFile(final ILaunchConfigurationWorkingCopy configuration) throws CoreException {
+		return new File(configuration.getAttribute(ATTR_FBRT_LOCATION, "")); //$NON-NLS-1$
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java
index 6997aba..f7195f9 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java
@@ -20,7 +20,7 @@
 /**
  * The Class Messages.
  */
-@SuppressWarnings("squid:S3008")  // tell sonar the java naming convention does not make sense for this class
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
 public final class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.fbrtlauncher.messages"; //$NON-NLS-1$
 
@@ -45,6 +45,12 @@
 
 	public static String FBRTPreferencePage_FBRTPreferencePage;
 
+	public static String FBRTLaunchTab_TabName;
+	public static String FBRTLaunchTab_DeviceType;
+	public static String FBRTLaunchTab_Port;
+
+	public static String FBRTLaunchTab_NoFBRTJarSet;
+
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties
index 3ff82e3..1f2b312 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties
@@ -21,5 +21,11 @@
 FBRTLauncher_LABEL_DeviceTypeParam=Device Type
 
 FBRTPreferencePage_FBRTPreferencePage=FBRT Preferences Page
-FBRTPreferencePage_FBRTLibrary=&FBRT library:
-FBRTPreferencePage_FBRTLocation=&FBRT location (fbrt.jar):
+FBRTPreferencePage_FBRTLibrary=FBRT library:
+FBRTPreferencePage_FBRTLocation=FBRT location (fbrt.jar):
+
+FBRTLaunchTab_TabName=Main
+FBRTLaunchTab_DeviceType=Device type:
+FBRTLaunchTab_Port=Port:
+
+FBRTLaunchTab_NoFBRTJarSet=No FBRT Jar set!
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF
index fce4f1c..71f331b 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Type Documentation Editor
 Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor.doc;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Automatic-Module-Name: org.eclipse.fordiac.ide.ftypeeditor.doc
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF
index ec040d7..b0a10d8 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF
@@ -20,7 +20,7 @@
  org.eclipse.fordiac.ide.structuredtextalgorithm.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: ECC Editor
 Bundle-Activator: org.eclipse.fordiac.ide.fbtypeeditor.ecc.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF
index c68d0a7..2c96600 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF
@@ -18,7 +18,7 @@
  org.eclipse.fordiac.ide.model.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Composite FB Network
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor.network;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF
index 6202424..bca6ab5 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF
@@ -19,7 +19,7 @@
  org.eclipse.fordiac.ide.fb.interpreter
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Service Sequence Editor
 Bundle-Activator: org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml
index 3dc5136..7542fd3 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml
@@ -115,6 +115,10 @@
             commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.createMaxCoverageSequences">
       </handler> 
       <handler
+            class="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.handler.LoadServiceSequencesHandler"
+            commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.loadSequences">
+      </handler> 
+      <handler
             class="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.handler.GetCoverageHandler"
             commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.getCoverage">
       </handler> 
@@ -166,8 +170,12 @@
             name="Create max Coverage Sequences">
       </command>
       <command
+            id="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.loadSequences"
+            name="Load Service Sequences from File">
+      </command>
+      <command
             id="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.getCoverage"
-            name="get Coverage">
+            name="Get Coverage">
       </command>
       <command
             id="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.exportServiceSequencesAsTest"
@@ -364,6 +372,21 @@
             	</with>
             </visibleWhen>
        </command>
+       <command
+            commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.loadSequences"
+            label="Load Service Sequences from File"
+            style="push">
+            <visibleWhen checkEnabled="true">
+            	<with variable="selection">
+            		<iterate>
+            			<or>
+            				<instanceof
+                       			value="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.editparts.SequenceRootEditPart" />
+            			</or>
+            		</iterate>
+            	</with>
+            </visibleWhen>
+       </command>
 	   <command
             commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.getCoverage"
             label="get Coverage"
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java
index 6240042..15621c1 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java
@@ -18,19 +18,20 @@
 	static String newLine = System.getProperty("line.separator");
 
 	public static String testIncludeString = """
-			#include "../../core/fbtests/fbtestfixture.h"
+			#include "core/fbtests/fbtestfixture.h"
 			#include <forte_uint.h>
 			#include <forte_bool.h>\n""";
 
 	public static String tester_genString = """
 			#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
-			#include "{0}_tester_gen.cpp"
+			#include "{0}_ServiceSeq_gen.cpp"
 			#endif
 			""";
 
 	public static String testFixtureStruct = "struct {0}_TestFixture : public CFBTestFixtureBase '{'";
 
-	public static String testFixtureBase = "{0}_TestFixture() : " + newLine + "CFBTestFixtureBase(g_nStringId{0}) '{'";
+	public static String testFixtureBase = "{0}_TestFixture() : " + newLine
+			+ "CFBTestFixtureBase(g_nStringIdservSeq__{0}) '{'";
 
 	public static String testFixtureSetup = "CFBTestFixtureBase::setup();" + newLine + "}";
 
@@ -45,11 +46,13 @@
 
 	public static String testCase = "BOOST_AUTO_TEST_CASE({0}) '{'";
 
+	public static String setECCState = "setECCState(CIEC_STATE({0}));";
+
 	public static String triggerEvent = "triggerEvent({0});";
 	public static String triggerEventByID = "triggerEvent(CFBTestFixtureBase::getFB()->getEIID(CStringDictionary::getInstance().getId(\"{0}\")));";
 
-	public static String boostAssertEQUAL = "BOOST_ASSERT(func_EQ({0},{1}));";
-	public static String boostAssertNOTEQUAL = "BOOST_ASSERT(func_NE({0},{1}));";
+	public static String boostAssertEQUAL = "BOOST_TEST({0} == {1});";
+	public static String boostAssertNOTEQUAL = "BOOST_TEST({0} != {1});";
 
 	private CppBoostTestConstants() {
 		// empty private constructor
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java
index f66b012..87f1fd3 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java
@@ -29,6 +29,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.fordiac.ide.model.data.BoolType;
 import org.eclipse.fordiac.ide.model.data.IntType;
+import org.eclipse.fordiac.ide.model.data.StringType;
 import org.eclipse.fordiac.ide.model.data.UintType;
 import org.eclipse.fordiac.ide.model.libraryElement.BasicFBType;
 import org.eclipse.fordiac.ide.model.libraryElement.FBType;
@@ -83,6 +84,12 @@
 		for (final ServiceSequence sequence : serviceSeq) {
 			writer.append(MessageFormat.format(CppBoostTestConstants.testCase, sequence.getName()));
 			writer.newLine();
+			final int stateID = fb.getECC().getECState().indexOf(fb.getECC().getECState().stream()
+					.filter(state -> state.getName().equals(sequence.getStartState())).findFirst().orElse(null));
+			if (stateID > 0) {
+				writer.append(MessageFormat.format(CppBoostTestConstants.setECCState, stateID));
+				writer.newLine();
+			}
 			for (final ServiceTransaction transaction : sequence.getServiceTransaction()) {
 				parseAndAddParameters(writer, transaction.getInputPrimitive().getParameters());
 
@@ -114,7 +121,7 @@
 									param.subSequence(param.indexOf("=") + 1, param.indexOf("(")).toString()));
 					writer.append(MessageFormat.format(CppBoostTestConstants.boostAssertEQUAL,
 							param.subSequence(0, param.indexOf(":")),
-							param.subSequence(param.indexOf("=") + 1, param.length())));
+							param.subSequence(param.indexOf("=") + 1, param.length()).toString().replace("'", "\"")));
 					writer.newLine();
 				}
 			}
@@ -191,6 +198,9 @@
 		if (dataType instanceof UintType) {
 			return "CIEC_UINT";
 		}
+		if (dataType instanceof StringType) {
+			return "CIEC_STRING";
+		}
 		return "";
 	}
 
@@ -199,6 +209,7 @@
 		case "BOOL" -> "CIEC_BOOL";
 		case "UINT" -> "CIEC_UINT";
 		case "INT" -> "CIEC_INT";
+		case "STRING" -> "CIEC_STRING";
 		default -> "";
 		};
 	}
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/handler/LoadServiceSequencesHandler.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/handler/LoadServiceSequencesHandler.java
new file mode 100644
index 0000000..8588101
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/handler/LoadServiceSequencesHandler.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Fabio Gandolfi
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Fabio Gandolfi
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands.CreateServiceSequenceCommand;
+import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.editparts.SequenceRootEditPart;
+import org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class LoadServiceSequencesHandler extends AbstractHandler {
+
+	@Override
+	public Object execute(final ExecutionEvent event) throws ExecutionException {
+		final IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
+		if (!selection.isEmpty() && selection.getFirstElement() instanceof final SequenceRootEditPart serviceSeqEp) {
+
+			final FileDialog fileDialog = new FileDialog(
+					PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+			fileDialog.setText("Open File"); //$NON-NLS-1$
+
+			fileDialog.setFilterExtensions(new String[] { "*.opsem" }); //$NON-NLS-1$
+
+			final String selectedFilePath = fileDialog.open();
+			if (selectedFilePath != null) {
+				final var uri = URI.createFileURI(selectedFilePath);
+				final Resource res = new ResourceSetImpl().getResource(uri, true);
+
+				final CompoundCommand cmds = new CompoundCommand();
+
+				res.getContents().forEach(con -> {
+					if (con instanceof final ServiceSequence seqs) {
+						cmds.add(new CreateServiceSequenceCommand(serviceSeqEp.getFBType().getService(), seqs));
+					}
+				});
+
+				if (cmds.canExecute()) {
+					cmds.execute();
+				}
+			}
+		}
+		return null;
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF
index b04a915..9923385 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Structured Text FB Editor
 Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF
index 3e3db31..3c2e66f 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF
@@ -32,7 +32,7 @@
  org.eclipse.fordiac.ide.model.search
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Function Block Type Editor
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF
index a505a26..8561635 100644
--- a/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@
  org.eclipse.swt
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: FMU exporter
 Bundle-Activator: org.eclipse.fordiac.ide.fmu.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF
index e70a5b6..397bd43 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF
@@ -1,12 +1,14 @@
 Manifest-Version: 1.0
 Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.externaltools,
  org.eclipse.core.runtime,
  org.eclipse.fordiac.ide.runtime,
  org.eclipse.debug.core,
- org.eclipse.fordiac.ide.ui
+ org.eclipse.fordiac.ide.ui,
+ org.eclipse.debug.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Forte Launcher
 Bundle-Activator: org.eclipse.fordiac.ide.fortelauncher.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml b/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml
index 887be2e..231f769 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml
@@ -23,5 +23,31 @@
             class="org.eclipse.fordiac.ide.fortelauncher.preferences.PreferenceInitializer">
       </initializer>
    </extension>
+   
+	<extension point="org.eclipse.debug.core.launchConfigurationTypes">
+		<launchConfigurationType
+    		name="Local 4diac FORTE"
+    		delegate="org.eclipse.core.externaltools.internal.launchConfigurations.ProgramLaunchDelegate"
+    		modes="run"               
+    		id="org.eclipse.fordiac.ide.runLocalFORTE">        
+		</launchConfigurationType>
+	</extension>
+
+	<extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+		<launchConfigurationTabGroup
+			type="org.eclipse.fordiac.ide.runLocalFORTE"
+			class="org.eclipse.fordiac.ide.fortelauncher.ForteLaunchGroup"
+			id="org.eclipse.fordiac.ide.fortelauncher.launchConfigurationTabGroup">
+		</launchConfigurationTabGroup>
+	</extension>
+	
+	<extension
+         point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+      <launchConfigurationTypeImage
+            configTypeID="org.eclipse.fordiac.ide.runLocalFORTE"
+			icon="platform:/plugin/org.eclipse.fordiac.ide.images/images/4diacFORTE.png"
+            id="org.eclipse.fordiac.ide.launchConfigurationTypeImage.runLocalFORTE">
+      </launchConfigurationTypeImage>
+   </extension>
 
 </plugin>
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchGroup.java b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchGroup.java
new file mode 100644
index 0000000..11104c1
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchGroup.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fortelauncher;
+
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+
+public class ForteLaunchGroup extends AbstractLaunchConfigurationTabGroup {
+
+	@Override
+	public void createTabs(final ILaunchConfigurationDialog dialog, final String mode) {
+		setTabs(new ForteLaunchTab(), new CommonTab());
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchTab.java b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchTab.java
new file mode 100644
index 0000000..2213d73
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchTab.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fortelauncher;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.fordiac.ide.fortelauncher.preferences.PreferenceConstants;
+import org.eclipse.fordiac.ide.runtime.LaunchRuntimeUtils;
+import org.eclipse.fordiac.ide.runtime.RuntimeLaunchTab;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+import org.eclipse.fordiac.ide.ui.widget.DirectoryChooserControl;
+import org.eclipse.fordiac.ide.ui.widget.FileChooserControl;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+
+public class ForteLaunchTab extends RuntimeLaunchTab {
+
+	private static final String DEFAULT_FORTE_PORT = "61499"; //$NON-NLS-1$
+	private static final String ATTR_FORTE_PORT = "org.eclipse.fordiac.ide.fortelauncher.port"; //$NON-NLS-1$
+
+	private FileChooserControl forteChooser;
+	private DirectoryChooserControl workingDirChooser;
+
+	@Override
+	public void createControl(final Composite parent) {
+		GridLayoutFactory.swtDefaults().applyTo(parent);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(parent);
+
+		final Composite comp = new Composite(parent, SWT.NONE);
+		GridLayoutFactory.swtDefaults().numColumns(2).applyTo(comp);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(comp);
+		setControl(comp);
+
+		forteChooser = new FileChooserControl(comp, SWT.NONE, Messages.FortePreferencePage_FORTELocation, true);
+		forteChooser.addChooserValueChangedListener(newVal -> scheduleUpdateJob());
+		workingDirChooser = new DirectoryChooserControl(comp, SWT.NONE, Messages.ForteLaunchTab_WorkingDirectory, true);
+		workingDirChooser.addChooserValueChangedListener(newVal -> scheduleUpdateJob());
+		createPortSelection(comp);
+	}
+
+	@Override
+	public void setDefaults(final ILaunchConfigurationWorkingCopy configuration) {
+		super.setDefaults(configuration);
+		final String fortePath = Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.P_PATH);
+		if (fortePath != null && !fortePath.isBlank()) {
+			configuration.setAttribute(ATTR_LOCATION, fortePath);
+		} else {
+			configuration.removeAttribute(ATTR_LOCATION);
+		}
+		configuration.setAttribute(ATTR_FORTE_PORT, DEFAULT_FORTE_PORT);
+	}
+
+	@Override
+	public void initializeFrom(final ILaunchConfiguration configuration) {
+		try {
+			forteChooser.setValue(configuration.getAttribute(ATTR_LOCATION, "")); //$NON-NLS-1$
+			workingDirChooser.setValue(configuration.getAttribute(ATTR_WORKING_DIRECTORY, "")); //$NON-NLS-1$
+			setPortValue(configuration.getAttribute(ATTR_FORTE_PORT, DEFAULT_FORTE_PORT));
+		} catch (final CoreException e) {
+			FordiacLogHelper.logWarning(e.getMessage(), e);
+		}
+	}
+
+	@Override
+	public void performApply(final ILaunchConfigurationWorkingCopy configuration) {
+		configuration.setAttribute(ATTR_LOCATION, forteChooser.getValue());
+
+		final String workingDir = workingDirChooser.getValue();
+		if (!workingDir.isBlank()) {
+			configuration.setAttribute(ATTR_WORKING_DIRECTORY, workingDir);
+		}
+
+		configuration.setAttribute(ATTR_FORTE_PORT, getPortValue());
+		configuration.setAttribute(LaunchRuntimeUtils.ATTR_TOOL_ARGUMENTS, "-c localhost:" + getPortValue()); //$NON-NLS-1$
+	}
+
+	@Override
+	public String getName() {
+		return Messages.ForteLaunchTab_TabTitle;
+	}
+
+	@Override
+	public boolean isValid(final ILaunchConfiguration launchConfig) {
+		if (!super.isValid(launchConfig)) {
+			return false;
+		}
+
+		if (forteChooser.getValue().isBlank()) {
+			setErrorMessage(Messages.ForteLaunchTabError_No4diacFORTEExecutableSet);
+			return false;
+		}
+
+		return true;
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java
index 659cfb0..284e0be 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java
@@ -21,7 +21,7 @@
 /**
  * The Class Messages.
  */
-@SuppressWarnings("squid:S3008")  // tell sonar the java naming convention does not make sense for this class
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
 public final class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.fortelauncher.messages"; //$NON-NLS-1$
 
@@ -31,6 +31,11 @@
 	public static String FortePreferencePage_FORTEPreferencesPage;
 	public static String FortePreferencePage_FORTELocation;
 
+	public static String ForteLaunchTab_TabTitle;
+	public static String ForteLaunchTab_WorkingDirectory;
+
+	public static String ForteLaunchTabError_No4diacFORTEExecutableSet;
+
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties
index 16ce1a5..5f27044 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties
@@ -18,4 +18,10 @@
 ForteLauncher_ERROR_WrongPort=Wrong Port number. Only values allowed between 1024 and 65535.
 ForteLauncher_LABEL_PortParam=Port
 FortePreferencePage_FORTEPreferencesPage=FORTE Preferences Page
-FortePreferencePage_FORTELocation=&FORTE location (e.g. forte.exe):
+FortePreferencePage_FORTELocation=FORTE location (e.g. forte.exe):
+
+ForteLaunchTab_TabTitle=Main
+ForteLaunchTab_WorkingDirectory=Working directory:
+
+
+ForteLaunchTabError_No4diacFORTEExecutableSet=No 4diac FORTE executable set!
diff --git a/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF
index 9f1bb7c..62288a1 100644
--- a/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF
@@ -48,7 +48,7 @@
  org.eclipse.xtext.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Graphical Utilites
 Bundle-Activator: org.eclipse.fordiac.ide.gef.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF
index f9c29d3..f0f2f92 100644
--- a/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Gitlab
 Bundle-SymbolicName: org.eclipse.fordiac.ide.gitlab;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Import-Package: org.eclipse.ui.preferences
 Require-Bundle: org.eclipse.ui.ide,
  org.eclipse.core.resources,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF
index be71832..b6c9629 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.ide
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.ide; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.globalconstantseditor,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF
index 426073e..f24222f 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: ST Global Constants Model
 Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.model;singleton:=true
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Export-Package: org.eclipse.fordiac.ide.globalconstantseditor.globalConstants,
  org.eclipse.fordiac.ide.globalconstantseditor.globalConstants.impl,
  org.eclipse.fordiac.ide.globalconstantseditor.globalConstants.util
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF
index adb4412..496c419 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.tests
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.tests; singleton:=true
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.fordiac.ide.globalconstantseditor.tests
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF
index 3b59acd..423d7ab 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.ui.tests
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.ui.tests; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.globalconstantseditor.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF
index 6ed1591..bffac20 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.ui
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.ui; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.globalconstantseditor,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF
index 2c0842e..c11dfa2 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF
index 90af615..09e6f45 100644
--- a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.hierarchymanager.model.edit;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.hierarchymanager.model.edit
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.fordiac.ide.hierarchymanager.model.hierarchy.provider.HierarchyEditPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF
index 8bffa21..dba3da9 100644
--- a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.hierarchymanager.model;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.hierarchymanager.model
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF
index 22f9fbe..089fb09 100644
--- a/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Hierarchy Manager UI
 Bundle-SymbolicName: org.eclipse.fordiac.ide.hierarchymanager.ui;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.core.resources,
  org.eclipse.core.runtime,
  org.eclipse.emf.edit,
diff --git a/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF
index 251b073..f150868 100644
--- a/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Images
 Bundle-SymbolicName: org.eclipse.fordiac.ide.images
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Fragment-Host: org.eclipse.fordiac.ide.ui
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Vendor: Eclipse 4diac
diff --git a/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties b/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties
index f7ff886..e1181aa 100644
--- a/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties
+++ b/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties
@@ -18,6 +18,7 @@
 
 ICON_4DIAC_16=fordiac16.gif
 ICON_4DIAC_32=fordiac32.gif
+ICON_4DIAC_FORTE=4diacFORTE.png
 ICON_ADAPTER_LIST=adapter_list.png
 ICON_ADAPTER_TYPE=adapter_type.png
 ICON_ADD_STATE=ecc_add_state.png
diff --git a/plugins/org.eclipse.fordiac.ide.images/images/4diacFORTE.png b/plugins/org.eclipse.fordiac.ide.images/images/4diacFORTE.png
new file mode 100644
index 0000000..fadefaf
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.images/images/4diacFORTE.png
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs
index 99f26c0..d72d956 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs
+++ b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,3 @@
 eclipse.preferences.version=1
+encoding//model/library.xsd=UTF8
 encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs
index 62ef348..23712ca 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs
@@ -7,3 +7,400 @@
 org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.release=enabled
 org.eclipse.jdt.core.compiler.source=17
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=true
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_permitted_types_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow=20
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags=false
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator=false
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..6b4802f
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,147 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=23
+sp_cleanup.add_all=false
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.also_simplify_lambda=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.array_with_curly=false
+sp_cleanup.arrays_fill=false
+sp_cleanup.bitwise_conditional_expression=false
+sp_cleanup.boolean_literal=false
+sp_cleanup.boolean_value_rather_than_comparison=true
+sp_cleanup.break_loop=false
+sp_cleanup.collection_cloning=false
+sp_cleanup.comparing_on_criteria=false
+sp_cleanup.comparison_statement=false
+sp_cleanup.controlflow_merge=false
+sp_cleanup.convert_functional_interfaces=true
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
+sp_cleanup.convert_to_switch_expressions=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.do_while_rather_than_while=false
+sp_cleanup.double_negation=false
+sp_cleanup.else_if=true
+sp_cleanup.embedded_if=true
+sp_cleanup.evaluate_nullable=true
+sp_cleanup.extract_increment=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.hash=false
+sp_cleanup.if_condition=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.instanceof=true
+sp_cleanup.instanceof_keyword=false
+sp_cleanup.invert_equals=false
+sp_cleanup.join=false
+sp_cleanup.lazy_logical_operator=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=true
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.map_cloning=false
+sp_cleanup.merge_conditional_blocks=false
+sp_cleanup.multi_catch=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.no_string_creation=false
+sp_cleanup.no_super=true
+sp_cleanup.number_suffix=true
+sp_cleanup.objects_equals=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+sp_cleanup.operand_factorization=false
+sp_cleanup.organize_imports=true
+sp_cleanup.overridden_assignment=false
+sp_cleanup.overridden_assignment_move_decl=true
+sp_cleanup.plain_replacement=false
+sp_cleanup.precompile_regex=false
+sp_cleanup.primitive_comparison=false
+sp_cleanup.primitive_parsing=false
+sp_cleanup.primitive_rather_than_wrapper=false
+sp_cleanup.primitive_serialization=false
+sp_cleanup.pull_out_if_from_if_else=false
+sp_cleanup.pull_up_assignment=true
+sp_cleanup.push_down_negation=false
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.reduce_indentation=true
+sp_cleanup.redundant_comparator=false
+sp_cleanup.redundant_falling_through_block_end=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=true
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=true
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_method_parameters=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.replace_deprecated_calls=false
+sp_cleanup.return_expression=false
+sp_cleanup.simplify_lambda_expression_and_method_ref=true
+sp_cleanup.single_used_field=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.standard_comparison=false
+sp_cleanup.static_inner_class=false
+sp_cleanup.strictly_equal_or_different=false
+sp_cleanup.stringbuffer_to_stringbuilder=false
+sp_cleanup.stringbuilder=false
+sp_cleanup.stringbuilder_for_local_vars=true
+sp_cleanup.stringconcat_stringbuffer_stringbuilder=true
+sp_cleanup.stringconcat_to_textblock=true
+sp_cleanup.substring=false
+sp_cleanup.switch=false
+sp_cleanup.system_property=false
+sp_cleanup.system_property_boolean=false
+sp_cleanup.system_property_file_encoding=false
+sp_cleanup.system_property_file_separator=false
+sp_cleanup.system_property_line_separator=false
+sp_cleanup.system_property_path_separator=false
+sp_cleanup.ternary_operator=false
+sp_cleanup.try_with_resource=false
+sp_cleanup.unlooped_while=false
+sp_cleanup.unreachable_block=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_string_is_blank=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
+sp_cleanup.use_var=false
+sp_cleanup.useless_continue=false
+sp_cleanup.useless_return=false
+sp_cleanup.valueof_rather_than_instantiation=false
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF
index 8addada..8a990f1 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@
 Automatic-Module-Name: org.eclipse.fordiac.ide.library.model
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Export-Package: org.eclipse.fordiac.ide.library.model.library,
@@ -14,5 +14,7 @@
  org.eclipse.fordiac.ide.library.model.util
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.emf.ecore;visibility:=reexport,
- org.eclipse.emf.ecore.xmi;visibility:=reexport
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.core.resources,
+ org.eclipse.fordiac.ide.ui
 Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java
new file mode 100644
index 0000000..4208d7e
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2024  Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Patrick Aigner
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.library.model.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Collection;
+import java.util.Optional;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.fordiac.ide.library.model.library.LibraryFactory;
+import org.eclipse.fordiac.ide.library.model.library.Manifest;
+import org.eclipse.fordiac.ide.library.model.library.Product;
+import org.eclipse.fordiac.ide.library.model.library.Required;
+import org.eclipse.fordiac.ide.library.model.library.VersionInfo;
+import org.eclipse.fordiac.ide.library.model.library.util.LibraryResourceFactoryImpl;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+
+public final class ManifestHelper {
+	private static final String MANIFEST_FILENAME = "MANIFEST.MF";
+	private static final String SCOPE_PROJECT = "Project";
+	private static final String SCOPE_LIBRARY = "Library";
+	private static final String BASE_VERSION = "1.0.0";
+
+	private static LibraryFactory factory = LibraryFactory.eINSTANCE;
+	private static LibraryResourceFactoryImpl resourceFactory = new LibraryResourceFactoryImpl();
+
+	public static Manifest getContainerManifest(final IContainer container) {
+		if (container == null) {
+			return null;
+		}
+		final IFile manifest = container.getFile(new Path(MANIFEST_FILENAME));
+		if (!manifest.exists()) {
+			return null;
+		}
+		return getManifest(URI.createURI(manifest.getLocationURI().toString()));
+	}
+
+	public static Manifest getFolderManifest(final File container) {
+		if (container == null || !container.isDirectory()) {
+			return null;
+		}
+		final File[] files = container.listFiles((dir, name) -> MANIFEST_FILENAME.equals(name));
+		if (files.length == 0) {
+			return null;
+		}
+		return getManifest(URI.createURI(files[0].toURI().toString()));
+	}
+
+	public static Manifest createProjectManifest(final IProject project, final Collection<Required> dependencies) {
+		final Manifest manifest = createManifest(SCOPE_PROJECT);
+		final IFile manifestFile = project.getFile(MANIFEST_FILENAME);
+		final Resource resource = createResource(URI.createURI(manifestFile.getLocationURI().toString()));
+
+		if (dependencies != null) {
+			for (final Required req : dependencies) {
+				addDependency(manifest, req);
+			}
+		}
+
+		resource.getContents().add(manifest);
+		try {
+			resource.save(null);
+		} catch (final IOException e) {
+			FordiacLogHelper.logWarning("Could not create project manifest", e); //$NON-NLS-1$
+		}
+		return manifest;
+	}
+
+	public static Manifest createManifest(final String scope) {
+		final Manifest manifest = factory.createManifest();
+		manifest.setScope(scope);
+
+		final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+		final VersionInfo versionInfo = factory.createVersionInfo();
+		versionInfo.setAuthor("");
+		versionInfo.setVersion(BASE_VERSION);
+		versionInfo.setDate(formatter.format(LocalDate.now()));
+
+		final Product product = factory.createProduct();
+		product.setVersionInfo(versionInfo);
+		manifest.setProduct(product);
+
+		return manifest;
+	}
+
+	public static boolean isProject(final Manifest manifest) {
+		return SCOPE_PROJECT.equals(manifest.getScope());
+	}
+
+	public static boolean isLibrary(final Manifest manifest) {
+		return SCOPE_LIBRARY.equals(manifest.getScope());
+	}
+
+	public static void addDependency(final Manifest manifest, final Required dependency) {
+		if (manifest.getDependencies() == null) {
+			manifest.setDependencies(factory.createDependencies());
+		}
+		final EList<Required> reqList = manifest.getDependencies().getRequired();
+		final Optional<Required> result = reqList.stream()
+				.filter(r -> r.getSymbolicName().equals(dependency.getSymbolicName())).findAny();
+		if (result.isPresent()) {
+			reqList.remove(result.get());
+		}
+		reqList.add(dependency);
+	}
+
+	public static void removeDependency(final Manifest manifest, final Required dependency) {
+		if (manifest.getDependencies() == null) {
+			return;
+		}
+		final EList<Required> reqList = manifest.getDependencies().getRequired();
+		reqList.remove(dependency);
+	}
+
+	public static Resource createResource(final URI uri) {
+		final XMLResource resource = (XMLResource) resourceFactory.createResource(uri);
+		resource.getDefaultSaveOptions().put(XMLResource.OPTION_ENCODING, "UTF-8");
+		resource.getDefaultLoadOptions().put(XMLResource.OPTION_ENCODING, "UTF-8");
+		return resource;
+	}
+
+	public static Manifest getManifest(final URI uri) {
+		final Resource resource = createResource(uri);
+		try {
+			resource.load(null);
+		} catch (final IOException e) {
+			FordiacLogHelper.logWarning("Could not load manifest", e); //$NON-NLS-1$
+			return null;
+		}
+		return (Manifest) resource.getContents().get(0);
+	}
+
+	public static Required createRequired(final String symbolicName, final String version) {
+		final Required required = factory.createRequired();
+		required.setSymbolicName(symbolicName);
+		required.setVersion(version);
+		return required;
+	}
+
+	private ManifestHelper() {
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java
index 6ac77a5..d51f2e3 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java
+++ b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java
@@ -19,8 +19,8 @@
 
 	@Override
 	public int compare(String o1, String o2) {
-		if (o1 == o2) return 0;
-		if (o1 == null) return -1;
+		if (o1 == null) return (o2 == null) ? 0 : -1;
+		if (o1.equals(o2)) return 0;
 		if (o2 == null) return 1;
 		
 		String[] v1 = o1.split("\\.");
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF
index a07c586..3a463a5 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: Commands
 Bundle-ActivationPolicy: lazy
 Bundle-SymbolicName: org.eclipse.fordiac.ide.model.commands;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional, 
  org.eclipse.fordiac.ide.model,
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java
index 3643b23..81422f1 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java
@@ -14,8 +14,11 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.model.commands.change;
 
+import java.util.HashSet;
 import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.fordiac.ide.model.commands.ScopedCommand;
@@ -119,10 +122,15 @@
 
 	@Override
 	public Set<EObject> getAffectedObjects() {
-		if (parent != null) {
-			return Set.of(parent);
+		final Set<EObject> result = Stream.of(parent, connection).filter(Objects::nonNull)
+				.collect(Collectors.toCollection(HashSet::new));
+		if (connectionCreateCmd != null) {
+			result.addAll(connectionCreateCmd.getAffectedObjects());
 		}
-		return Set.of(connection);
+		if (deleteConnectionCmd != null) {
+			result.addAll(deleteConnectionCmd.getAffectedObjects());
+		}
+		return Set.copyOf(result);
 	}
 
 	protected abstract AbstractConnectionCreateCommand createConnectionCreateCommand(FBNetwork parent);
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java
index 111a671..28670a8 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java
@@ -129,8 +129,10 @@
 		// set Visible attribute after reconnect, to not hide connected In/Outputs
 		// transfer attributes from type first (for new vars), then override them from
 		// old instance
-		transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getInputVars());
-		transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getOutputVars());
+		if (newElement.getType() != null) {
+			transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getInputVars());
+			transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getOutputVars());
+		}
 		transferVisibleAndVarConfigAttributes(oldElement.getInterface().getInputVars());
 		transferVisibleAndVarConfigAttributes(oldElement.getInterface().getOutputVars());
 
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java
index 6c82c99..a224a37 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java
@@ -203,7 +203,7 @@
 	}
 
 	private FBNetworkElement createTargetUntypedSubApp() {
-		final SubApp element = LibraryElementFactory.eINSTANCE.createSubApp();
+		final SubApp element = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 		element.setPosition(EcoreUtil.copy(srcElement.getPosition()));
 		element.setInterface(LibraryElementFactory.eINSTANCE.createInterfaceList());
 		element.setInterface(EcoreUtil.copy(srcElement.getInterface()));
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java
index 715c5ed..8b37be9 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java
@@ -12,63 +12,33 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.model.commands.change;
 
-import java.util.Objects;
-import java.util.Set;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.fordiac.ide.model.commands.Messages;
-import org.eclipse.fordiac.ide.model.commands.ScopedCommand;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.fordiac.ide.model.helpers.FBNetworkHelper;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.model.typelibrary.SubAppTypeEntry;
-import org.eclipse.gef.commands.Command;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 
-public class UntypeSubAppCommand extends Command implements ScopedCommand {
-	private final SubApp subapp;
-	private final SubAppTypeEntry typeEntry;
+public class UntypeSubAppCommand extends AbstractUpdateFBNElementCommand {
 
 	public UntypeSubAppCommand(final SubApp subapp) {
-		super(Messages.UntypeSubappCommand_Label);
-		this.subapp = Objects.requireNonNull(subapp);
-		typeEntry = (SubAppTypeEntry) subapp.getTypeEntry();
-	}
-
-	public SubApp getSubapp() {
-		return subapp;
+		super(subapp);
 	}
 
 	@Override
 	public boolean canExecute() {
-		return null != typeEntry;
+		return super.canExecute() && oldElement instanceof final TypedSubApp subapp && subapp.getType() != null;
 	}
 
 	@Override
-	public void execute() {
-		if (subapp.getSubAppNetwork() == null) {
-			// the subapp network was not yet copied from the type, i.e., subapp was never
-			// shown in viewer
-			subapp.setSubAppNetwork(
-					FBNetworkHelper.copyFBNetWork(subapp.getType().getFBNetwork(), subapp.getInterface()));
-		}
-		removeType();
-	}
-
-	@Override
-	public void redo() {
-		removeType();
-	}
-
-	@Override
-	public void undo() {
-		subapp.setTypeEntry(typeEntry);
-	}
-
-	private void removeType() {
-		subapp.setTypeEntry(null);
-	}
-
-	@Override
-	public Set<EObject> getAffectedObjects() {
-		return Set.of(subapp);
+	protected void createNewFB() {
+		newElement = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
+		newElement.setName(oldElement.getName());
+		newElement.setPosition(EcoreUtil.copy(oldElement.getPosition()));
+		newElement.setInterface(oldElement.getType().getInterfaceList().copy());
+		createValues();
+		transferInstanceComments();
+		((UntypedSubApp) newElement).setSubAppNetwork(FBNetworkHelper
+				.copyFBNetWork(((TypedSubApp) oldElement).getType().getFBNetwork(), newElement.getInterface()));
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java
index 1e012a9..e10dad8 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java
@@ -18,7 +18,10 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.model.commands.create;
 
+import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.fordiac.ide.model.ConnectionLayoutTagger;
@@ -304,9 +307,7 @@
 
 	@Override
 	public Set<EObject> getAffectedObjects() {
-		if (parent != null) {
-			return Set.of(parent);
-		}
-		return Set.of();
+		return Stream.of(parent, connection, source, destination).filter(Objects::nonNull)
+				.collect(Collectors.toUnmodifiableSet());
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java
index dcb7e4f..f76b42d 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java
@@ -18,6 +18,7 @@
 import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
 import org.eclipse.fordiac.ide.model.libraryElement.FBType;
+import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
 import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
 import org.eclipse.fordiac.ide.model.typelibrary.FBTypeEntry;
@@ -42,8 +43,11 @@
 			// we are creating the adapter FB in a CFB we need to set the adapter network fb
 			// field here, nothing needs to be done in undo or redo
 			adapterDecl.setAdapterNetworkFB(getAdapterFB());
+		} else {
+			adapterDecl.setAdapterFB(getAdapterFB());
 		}
 		super.execute();
+
 	}
 
 	@Override
@@ -61,4 +65,9 @@
 		return null;
 	}
 
+	@Override
+	protected InterfaceList createInterfaceList() {
+		return getAdapterFB().getType().getInterfaceList().copy();
+	}
+
 }
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java
index 86d02e8..6cdee01 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java
@@ -17,16 +17,16 @@
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
 import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
 import org.eclipse.fordiac.ide.model.typelibrary.SubAppTypeEntry;
 
 public class CreateSubAppInstanceCommand extends AbstractCreateFBNetworkElementCommand {
 
 	private final SubAppTypeEntry typeEntry;
 
-	public CreateSubAppInstanceCommand(final SubAppTypeEntry typeEntry, final FBNetwork fbNetwork,
-			final int x, final int y) {
-		super(fbNetwork, LibraryElementFactory.eINSTANCE.createSubApp(), x, y);
+	public CreateSubAppInstanceCommand(final SubAppTypeEntry typeEntry, final FBNetwork fbNetwork, final int x,
+			final int y) {
+		super(fbNetwork, LibraryElementFactory.eINSTANCE.createTypedSubApp(), x, y);
 		this.typeEntry = typeEntry;
 		setLabel(Messages.CreateSubAppInstanceCommand_CreateSubapplicationInstance);
 		getSubApp().setTypeEntry(typeEntry);
@@ -42,8 +42,8 @@
 		return typeEntry.getType().getInterfaceList().copy();
 	}
 
-	public SubApp getSubApp() {
-		return (SubApp) getElement();
+	public TypedSubApp getSubApp() {
+		return (TypedSubApp) getElement();
 	}
 
 	public SubAppTypeEntry getTypeEntry() {
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java
index 892c254..f9f8369 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java
@@ -21,6 +21,8 @@
 
 import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.fordiac.ide.model.commands.Messages;
@@ -171,9 +173,7 @@
 
 	@Override
 	public Set<EObject> getAffectedObjects() {
-		if (connectionParent != null) {
-			return Set.of(connectionParent);
-		}
-		return Set.of(connection);
+		return Stream.of(connectionParent, connection, source, destination).filter(Objects::nonNull)
+				.collect(Collectors.toUnmodifiableSet());
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java
index 296a6f6..3e9e36b 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java
@@ -79,7 +79,8 @@
 
 	@Override
 	public boolean canExecute() {
-		return (variable != null) && !(variable instanceof ErrorMarkerInterface);
+		return (variable != null) && !(variable instanceof ErrorMarkerInterface)
+				&& variable.getOutputConnections().isEmpty();
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF
index 82cc57f..4299699 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.model.edit;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.model.edit
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.fordiac.ide.model.data.provider.FordiacEditPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_TypedSubApp.gif
new file mode 100644
index 0000000..5b7a810
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_UntypedSubApp.gif
new file mode 100644
index 0000000..847c1de
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_TypedSubApp.gif
new file mode 100644
index 0000000..788abfe
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_UntypedSubApp.gif
new file mode 100644
index 0000000..578475a
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_TypedSubApp.gif
new file mode 100644
index 0000000..8c450d0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_UntypedSubApp.gif
new file mode 100644
index 0000000..ed8ee38
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_TypedSubApp.gif
new file mode 100644
index 0000000..8c450d0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_UntypedSubApp.gif
new file mode 100644
index 0000000..ed8ee38
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_TypedSubApp.gif
new file mode 100644
index 0000000..8c450d0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_UntypedSubApp.gif
new file mode 100644
index 0000000..ed8ee38
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateUntypedSubApp_subAppNetwork_FBNetwork.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateUntypedSubApp_subAppNetwork_FBNetwork.gif
new file mode 100644
index 0000000..14f3b47
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateUntypedSubApp_subAppNetwork_FBNetwork.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/TypedSubApp.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/UntypedSubApp.gif
new file mode 100644
index 0000000..83afb9b
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties b/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties
index be0fb7b..89fa78c 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties
@@ -712,3 +712,8 @@
 _UI_ConfigurableFB_type = Configurable FB
 _UI_ConfigurableMoveFB_type = Configurable Move FB
 _UI_ConfigurableMoveFB_dataType_feature = Data Type
+_UI_TypedSubApp_type = Typed Sub App
+_UI_UntypedSubApp_type = Untyped Sub App
+_UI_SubApp_locked_feature = Locked
+_UI_TypedSubApp_subAppNetwork_feature = Sub App Network
+_UI_UntypedSubApp_subAppNetwork_feature = Sub App Network
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java
index d3d0686..7300b3c 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java
@@ -1,13 +1,13 @@
 /**
  * *******************************************************************************
  *  Copyright (c) 2008 - 2017 Profactor GmbH, TU Wien ACIN, fortiss GmbH
- * 
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
  *      - initial API and implementation and/or initial documentation
@@ -36,22 +36,31 @@
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
 import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
 
-/** This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork} object. <!--
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork} object. <!--
  * begin-user-doc --> <!-- end-user-doc -->
- * 
- * @generated */
+ *
+ * @generated
+ */
 public class FBNetworkItemProvider 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 */
+	/**
+	 * This constructs an instance from a factory and a notifier. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
 	public FBNetworkItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
-	/** This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated */
+	/**
+	 * 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) {
@@ -61,12 +70,13 @@
 		return itemPropertyDescriptors;
 	}
 
-	/** This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	/**
+	 * 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 */
+	 * {@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) {
@@ -76,9 +86,10 @@
 		return childrenFeatures;
 	}
 
-	/** <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated */
+	/**
+	 * <!-- 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
@@ -87,85 +98,155 @@
 		return super.getChildFeature(object, child);
 	}
 
-	/** This returns FBNetwork.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated not */
+	/**
+	 * This returns FBNetwork.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated not
+	 */
 	@Override
-	public Object getImage(Object object) {
+	public Object getImage(final Object object) {
 		return overlayImage(object, FordiacImage.ICON_FB_NETWORK.getImage());
 	}
 
-	/** This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated */
+	/**
+	 * 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_FBNetwork_type"); //$NON-NLS-1$
 	}
 
-	/** 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 */
+	/**
+	 * 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(FBNetwork.class)) {
-		case LibraryElementPackage.FB_NETWORK__DATA_CONNECTIONS:
-		case LibraryElementPackage.FB_NETWORK__EVENT_CONNECTIONS:
-		case LibraryElementPackage.FB_NETWORK__ADAPTER_CONNECTIONS:
-			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-			return;
-		case LibraryElementPackage.FB_NETWORK__NETWORK_ELEMENTS:
-			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
-			return;
-		default:
-			super.notifyChanged(notification);
-			return;
-		}
+			case LibraryElementPackage.FB_NETWORK__DATA_CONNECTIONS:
+			case LibraryElementPackage.FB_NETWORK__EVENT_CONNECTIONS:
+			case LibraryElementPackage.FB_NETWORK__ADAPTER_CONNECTIONS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case LibraryElementPackage.FB_NETWORK__NETWORK_ELEMENTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+			default:
+				super.notifyChanged(notification);
+				return;
+			}
 	}
 
-	/** 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 */
+	/**
+	 * 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(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
-				LibraryElementFactory.eINSTANCE.createFB()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createFB()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
-				LibraryElementFactory.eINSTANCE.createSubApp()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createAdapterFB()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
-				LibraryElementFactory.eINSTANCE.createResourceTypeFB()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createCFBInstance()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
-				LibraryElementFactory.eINSTANCE.createAdapterFB()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createComment()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
-				LibraryElementFactory.eINSTANCE.createDemultiplexer()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createCommunicationChannel()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
-				LibraryElementFactory.eINSTANCE.createMultiplexer()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createConfigurableMoveFB()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__DATA_CONNECTIONS,
-				LibraryElementFactory.eINSTANCE.createDataConnection()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createStructManipulator()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__EVENT_CONNECTIONS,
-				LibraryElementFactory.eINSTANCE.createEventConnection()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createDemultiplexer()));
 
-		newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__ADAPTER_CONNECTIONS,
-				LibraryElementFactory.eINSTANCE.createAdapterConnection()));
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createErrorMarkerFBNElement()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createGroup()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createMultiplexer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createResourceTypeFB()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createTypedSubApp()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+				 LibraryElementFactory.eINSTANCE.createUntypedSubApp()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__DATA_CONNECTIONS,
+				 LibraryElementFactory.eINSTANCE.createDataConnection()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__EVENT_CONNECTIONS,
+				 LibraryElementFactory.eINSTANCE.createEventConnection()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.FB_NETWORK__ADAPTER_CONNECTIONS,
+				 LibraryElementFactory.eINSTANCE.createAdapterConnection()));
 	}
 
-	/** Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated */
+	/**
+	 * Return the resource locator for this item provider's resources. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
 	@Override
 	public ResourceLocator getResourceLocator() {
 		return FordiacEditPlugin.INSTANCE;
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java
index b375741..47182c1 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java
@@ -1831,29 +1831,6 @@
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected SubAppItemProvider subAppItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createSubAppAdapter() {
-		if (subAppItemProvider == null) {
-			subAppItemProvider = new SubAppItemProvider(this);
-		}
-
-		return subAppItemProvider;
-	}
-
-	/**
 	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.StructManipulator} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1946,6 +1923,52 @@
 	}
 
 	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TypedSubAppItemProvider typedSubAppItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTypedSubAppAdapter() {
+		if (typedSubAppItemProvider == null) {
+			typedSubAppItemProvider = new TypedSubAppItemProvider(this);
+		}
+
+		return typedSubAppItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UntypedSubAppItemProvider untypedSubAppItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createUntypedSubAppAdapter() {
+		if (untypedSubAppItemProvider == null) {
+			untypedSubAppItemProvider = new UntypedSubAppItemProvider(this);
+		}
+
+		return untypedSubAppItemProvider;
+	}
+
+	/**
 	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Value} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java
index 7d3e7ca..680c8a5 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java
@@ -675,11 +675,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
-				 LibraryElementFactory.eINSTANCE.createSubApp()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
 				 LibraryElementFactory.eINSTANCE.createSubAppType()));
 
 		newChildDescriptors.add
@@ -690,6 +685,16 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
+				 LibraryElementFactory.eINSTANCE.createTypedSubApp()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
+				 LibraryElementFactory.eINSTANCE.createUntypedSubApp()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
 				 LibraryElementFactory.eINSTANCE.createValue()));
 
 		newChildDescriptors.add
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java
index 36e8dff..1a9a0b4 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java
@@ -16,59 +16,57 @@
 package org.eclipse.fordiac.ide.model.libraryElement.provider;
 
 import java.util.Collection;
-import java.util.List;
 
+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;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
 
-/** This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp} object. <!--
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp} object. <!--
  * begin-user-doc --> <!-- end-user-doc -->
  *
- * @generated */
+ * @generated
+ */
 public class SubAppItemProvider extends FBNetworkElementItemProvider {
-	/** This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+	/**
+	 * This constructs an instance from a factory and a notifier. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
 	 *
-	 * @generated */
+	 * @generated
+	 */
 	public SubAppItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
-	/** This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
-	 * @generated */
+	/**
+	 * 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);
 
-			addSubAppNetworkPropertyDescriptor(object);
+			addWidthPropertyDescriptor(object);
+			addHeightPropertyDescriptor(object);
+			addLockedPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
-	/** This adds a property descriptor for the Sub App Network feature. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
-	 * @generated */
-	protected void addSubAppNetworkPropertyDescriptor(Object object) {
-		itemPropertyDescriptors
-				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-						getResourceLocator(), getString("_UI_SubApp_subAppNetwork_feature"), //$NON-NLS-1$
-						getString("_UI_PropertyDescriptor_description", "_UI_SubApp_subAppNetwork_feature", //$NON-NLS-1$ //$NON-NLS-2$
-								"_UI_SubApp_type"),  //$NON-NLS-1$
-						LibraryElementPackage.Literals.SUB_APP__SUB_APP_NETWORK, true, false, true, null, null, null));
-	}
-
 	/**
 	 * This adds a property descriptor for the Width feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected void addWidthPropertyDescriptor(Object object) {
@@ -89,8 +87,8 @@
 
 	/**
 	 * This adds a property descriptor for the Height feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected void addHeightPropertyDescriptor(Object object) {
@@ -111,8 +109,8 @@
 
 	/**
 	 * This adds a property descriptor for the Locked feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected void addLockedPropertyDescriptor(Object object) {
@@ -120,8 +118,8 @@
 			(createItemPropertyDescriptor
 				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
 				 getResourceLocator(),
-				 getString("_UI_SubApp_Locked_feature"), //$NON-NLS-1$
-				 getString("_UI_PropertyDescriptor_description", "_UI_SubApp_Locked_feature", "_UI_SubApp_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 getString("_UI_SubApp_locked_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_SubApp_locked_feature", "_UI_SubApp_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 				 LibraryElementPackage.Literals.SUB_APP__LOCKED,
 				 true,
 				 false,
@@ -131,66 +129,49 @@
 				 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(LibraryElementPackage.Literals.SUB_APP__SUB_APP_NETWORK);
-		}
-		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 SubApp.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
-	 * @generated not */
-	@Override
-	public Object getImage(Object object) {
-		FordiacImage subappImage = (((SubApp) object).isTyped()) ? FordiacImage.ICON_SUB_APP_TYPE
-				: FordiacImage.ICON_SUB_APP;
-		return overlayImage(object, subappImage.getImage());
-	}
-
-	/** This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
-	 * @generated not */
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((SubApp) object).getName();
-		return label == null || label.length() == 0 ? getString("_UI_SubApp_type") : label; //$NON-NLS-1$
+		String label = ((SubApp)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_SubApp_type") : //$NON-NLS-1$
+			getString("_UI_SubApp_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
-	/** 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 */
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(SubApp.class)) {
+			case LibraryElementPackage.SUB_APP__WIDTH:
+			case LibraryElementPackage.SUB_APP__HEIGHT:
+			case LibraryElementPackage.SUB_APP__LOCKED:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			default:
+				super.notifyChanged(notification);
+				return;
+			}
 	}
 
-	/** 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 */
+	/**
+	 * 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/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/TypedSubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/TypedSubAppItemProvider.java
new file mode 100644
index 0000000..7bd7466
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/TypedSubAppItemProvider.java
@@ -0,0 +1,138 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ *               2022-2023 Martin Erich Jobst
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ *      - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.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.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+
+import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypedSubAppItemProvider extends SubAppItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypedSubAppItemProvider(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);
+
+			addSubAppNetworkPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Sub App Network feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSubAppNetworkPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TypedSubApp_subAppNetwork_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_TypedSubApp_subAppNetwork_feature", "_UI_TypedSubApp_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 LibraryElementPackage.Literals.TYPED_SUB_APP__SUB_APP_NETWORK,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns TypedSubApp.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated not
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, FordiacImage.ICON_SUB_APP_TYPE.getImage()); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated not
+	 */
+	@Override
+	public String getText(Object object) {
+		final String label = ((TypedSubApp) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_SubApp_type") : label; //$NON-NLS-1$
+	}
+
+
+	/**
+	 * 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/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/UntypedSubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/UntypedSubAppItemProvider.java
new file mode 100644
index 0000000..b9f9240
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/UntypedSubAppItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ *               2022-2023 Martin Erich Jobst
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ *      - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
+
+import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UntypedSubAppItemProvider extends SubAppItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UntypedSubAppItemProvider(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(LibraryElementPackage.Literals.UNTYPED_SUB_APP__SUB_APP_NETWORK);
+		}
+		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 UntypedSubApp.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated not
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, FordiacImage.ICON_SUB_APP.getImage()); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated not
+	 */
+	@Override
+	public String getText(Object object) {
+		final String label = ((UntypedSubApp) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_SubApp_type") : label; //$NON-NLS-1$
+	}
+
+
+	/**
+	 * 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(UntypedSubApp.class)) {
+			case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+			default:
+				super.notifyChanged(notification);
+				return;
+			}
+	}
+
+	/**
+	 * 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
+				(LibraryElementPackage.Literals.UNTYPED_SUB_APP__SUB_APP_NETWORK,
+				 LibraryElementFactory.eINSTANCE.createFBNetwork()));
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF
index 0d2b234..c350935 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Evaluator
 Bundle-SymbolicName: org.eclipse.fordiac.ide.model.eval.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.model.eval.st
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF
index 31fb24c..874425e 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Evaluator
 Bundle-SymbolicName: org.eclipse.fordiac.ide.model.eval;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.model.eval
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java
index 38abf51..de51698 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -16,6 +16,7 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.StringJoiner;
+import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 import org.eclipse.fordiac.ide.model.data.ArrayType;
@@ -83,40 +84,50 @@
 
 	@Override
 	public String toString() {
+		return toString(true);
+	}
+
+	@Override
+	public String toString(final boolean pretty) {
 		if (elements.size() > getCollapseElementsSize()) {
-			return toCollapsedString();
+			return toCollapsedString(pretty);
 		}
-		return elements.toString();
+		return elements.stream().map(element -> element.toString(pretty))
+				.collect(Collectors.joining(pretty ? ", " : ",", "[", "]")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 	}
 
 	public String toCollapsedString() {
-		final StringJoiner result = new StringJoiner(", ", "[", "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return toCollapsedString(true);
+	}
+
+	public String toCollapsedString(final boolean pretty) {
+		final StringJoiner result = new StringJoiner(pretty ? ", " : ",", "[", "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		int count = 0;
 		Value lastValue = null;
 		for (final Variable<?> element : elements) {
 			if (lastValue != null && !Objects.equals(lastValue, element.getValue())) {
-				result.add(toElementString(lastValue, count));
+				result.add(toElementString(lastValue, count, pretty));
 				count = 0;
 			}
 			lastValue = element.getValue();
 			count++;
 		}
 		if (lastValue != null) {
-			result.add(toElementString(lastValue, count));
+			result.add(toElementString(lastValue, count, pretty));
 		}
 		return result.toString();
 	}
 
-	protected static CharSequence toElementString(final Value value, final int count) {
+	protected static CharSequence toElementString(final Value value, final int count, final boolean pretty) {
 		if (count > 1) {
 			final StringBuilder builder = new StringBuilder();
 			builder.append(count);
 			builder.append("("); //$NON-NLS-1$
-			builder.append(value);
+			builder.append(value.toString(pretty));
 			builder.append(")"); //$NON-NLS-1$
 			return builder;
 		}
-		return value.toString();
+		return value.toString(pretty);
 	}
 
 	@SuppressWarnings("static-method")
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java
index b9ed716..d1d6f23 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -58,8 +58,14 @@
 
 	@Override
 	public String toString() {
-		return members.values().stream().map(member -> member.getName() + " := " + member.getValue()) //$NON-NLS-1$
-				.collect(Collectors.joining(", ", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return toString(true);
+	}
+
+	@Override
+	public String toString(final boolean pretty) {
+		return members.values().stream()
+				.map(member -> member.getName() + (pretty ? " := " : ":=") + member.toString(pretty)) //$NON-NLS-1$ //$NON-NLS-2$
+				.collect(Collectors.joining(pretty ? ", " : ",", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java
index c17cfa6..eab6135 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -57,8 +57,14 @@
 
 	@Override
 	public String toString() {
-		return members.values().stream().map(member -> member.getName() + " := " + member.getValue()) //$NON-NLS-1$
-				.collect(Collectors.joining(", ", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return toString(true);
+	}
+
+	@Override
+	public String toString(final boolean pretty) {
+		return members.values().stream()
+				.map(member -> member.getName() + (pretty ? " := " : ":=") + member.toString(pretty)) //$NON-NLS-1$ //$NON-NLS-2$
+				.collect(Collectors.joining(pretty ? ", " : ",", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java
index ed68dab..abc298d 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -21,4 +21,17 @@
 	 * @return The type
 	 */
 	INamedElement getType();
+
+	/**
+	 * Returns a string representation of the value, with optional pretty
+	 * formatting.
+	 *
+	 * @param pretty whether to use pretty formatting
+	 * @see java.lang.Object#toString()
+	 * @implNote defaults to {@link #toString()} if no optional pretty formatting is
+	 *           supported
+	 */
+	default String toString(final boolean pretty) {
+		return toString();
+	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java
index 21e3771..6553ba1 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -30,11 +30,16 @@
 
 	@Override
 	public String toString() {
+		return toString(true);
+	}
+
+	@Override
+	public String toString(final boolean pretty) {
 		if (type instanceof final DataType dataType && IecTypes.GenericTypes.isAnyType(dataType)
 				&& !(getValue().getType() instanceof AnyDurationType || getValue().getType() instanceof AnyDateType)) {
-			return getValue().getType().getName() + '#' + getValue();
+			return getValue().getType().getName() + '#' + getValue().toString(pretty);
 		}
-		return getValue().toString();
+		return getValue().toString(pretty);
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java
index 0f78be0..ada9a2e 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -62,4 +62,13 @@
 	 * @return true if the value is valid, false otherwise
 	 */
 	boolean validateValue(final String value);
+
+	/**
+	 * Returns a string representation of the variable, with optional pretty
+	 * formatting.
+	 *
+	 * @param pretty whether to use pretty formatting
+	 * @see java.lang.Object#toString()
+	 */
+	String toString(boolean pretty);
 }
diff --git a/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF
index aa36c92..e4ffcbc 100644
--- a/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Search
 Bundle-SymbolicName: org.eclipse.fordiac.ide.model.search;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.model.search
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java b/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java
index ef358be..2c24888 100644
--- a/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java
+++ b/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java
@@ -96,7 +96,13 @@
 		searchResources(sys);
 	}
 
-	private void searchApplication(final Application app) {
+	/**
+	 * (mis)used for search in 4diac Analytics until this functionality is
+	 * refactored out of this class
+	 *
+	 * @param app
+	 */
+	public void searchApplication(final Application app) {
 		if (matchEObject(app)) {
 			searchResult.addResult(app);
 		}
diff --git a/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF
index f10f202..abbc07e 100644
--- a/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: Model UI
 Bundle-ActivationPolicy: lazy
 Bundle-SymbolicName: org.eclipse.fordiac.ide.model.ui;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.emf.ecore.editor,
  org.eclipse.fordiac.ide.model,
diff --git a/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF
index 387d1cf..363b533 100644
--- a/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF
@@ -42,7 +42,7 @@
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.fordiac.ide.model.ModelPlugin
 Bundle-ClassPath: .
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Localization: plugin
 Bundle-Name: %pluginName
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel b/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel
index 93fc4d8..ae24c8e 100644
--- a/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel
+++ b/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel
@@ -719,16 +719,15 @@
     <genClasses ecoreClass="lib.ecore#//STFunction"/>
     <genClasses ecoreClass="lib.ecore#//STFunctionBody"/>
     <genClasses ecoreClass="lib.ecore#//STMethod"/>
-    <genClasses ecoreClass="lib.ecore#//SubApp">
-      <genFeatures notify="false" children="true" createChild="false" propertySortChoices="true"
-          ecoreFeature="ecore:EReference lib.ecore#//SubApp/subAppNetwork"/>
+    <genClasses image="false" ecoreClass="lib.ecore#//SubApp">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/width"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/height"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/Locked"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/locked"/>
       <genOperations ecoreOperation="lib.ecore#//SubApp/getType" body="//this cannot be moved to the annotation class because there we don't have the super access!!!&#xD;&#xA;org.eclipse.fordiac.ide.model.libraryElement.LibraryElement type = super.getType();&#xD;&#xA;if(type instanceof SubAppType){&#xD;&#xA;   return (SubAppType) type; &#xD;&#xA;}&#xD;&#xA;return null;"/>
       <genOperations ecoreOperation="lib.ecore#//SubApp/isUnfolded" body="org.eclipse.fordiac.ide.model.libraryElement.Attribute attr = this.getAttribute(org.eclipse.fordiac.ide.model.LibraryElementTags.SUBAPP_REPRESENTATION_ATTRIBUTE);&#xA;return (attr != null) &amp;&amp; &quot;true&quot;.equals(attr.getValue()); //$NON-NLS-1$&#xA;"/>
-      <genOperations ecoreOperation="lib.ecore#//SubApp/isTyped" body="return (getType() != null);"/>
-      <genOperations ecoreOperation="lib.ecore#//SubApp/loadSubAppNetwork" body="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
+      <genOperations ecoreOperation="lib.ecore#//SubApp/isTyped"/>
+      <genOperations ecoreOperation="lib.ecore#//SubApp/getSubAppNetwork"/>
+      <genOperations ecoreOperation="lib.ecore#//SubApp/loadSubAppNetwork"/>
       <genOperations ecoreOperation="lib.ecore#//SubApp/getVisibleWidth" body="return isUnfolded() ? getWidth() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getWidth(this);"/>
       <genOperations ecoreOperation="lib.ecore#//SubApp/getVisibleHeight" body="return isUnfolded() ? getHeight() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getHeight(this);"/>
     </genClasses>
@@ -792,6 +791,21 @@
         <genParameters ecoreParameter="lib.ecore#//TypedConfigureableObject/validateType/context"/>
       </genOperations>
     </genClasses>
+    <genClasses ecoreClass="lib.ecore#//TypedSubApp">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference lib.ecore#//TypedSubApp/subAppNetwork"/>
+      <genOperations ecoreOperation="lib.ecore#//TypedSubApp/isTyped" body="return true;"/>
+      <genOperations ecoreOperation="lib.ecore#//TypedSubApp/loadSubAppNetwork" body="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
+    </genClasses>
+    <genClasses ecoreClass="lib.ecore#//UntypedSubApp">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference lib.ecore#//UntypedSubApp/subAppNetwork"/>
+      <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/getType" body="return null;"/>
+      <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/isTyped" body="return false;"/>
+      <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/setTypeEntry" body="throw new UnsupportedOperationException(&quot;Setting the type entry of an untyped subapp is not supported!&quot;);">
+        <genParameters ecoreParameter="lib.ecore#//UntypedSubApp/setTypeEntry/typeEntry"/>
+      </genOperations>
+      <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/loadSubAppNetwork"
+          body="return getSubAppNetwork();"/>
+    </genClasses>
     <genClasses ecoreClass="lib.ecore#//Value">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//Value/value"/>
       <genOperations ecoreOperation="lib.ecore#//Value/getParentIE" body="return (IInterfaceElement) eContainer();"/>
@@ -834,6 +848,16 @@
         <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutIsWithed/diagnostics"/>
         <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutIsWithed/context"/>
       </genOperations>
+      <genOperations ecoreOperation="lib.ecore#//VarDeclaration/validateVarInOutSubappInterface"
+          body="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappInterface(this, diagnostics, context);">
+        <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappInterface/diagnostics"/>
+        <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappInterface/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="lib.ecore#//VarDeclaration/validateVarInOutSubappNetwork"
+          body="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappNetwork(this, diagnostics, context);">
+        <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappNetwork/diagnostics"/>
+        <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappNetwork/context"/>
+      </genOperations>
     </genClasses>
     <genClasses ecoreClass="lib.ecore#//VersionInfo">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//VersionInfo/author"/>
diff --git a/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore b/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore
index c85f715..9f4617d 100644
--- a/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore
+++ b/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore
@@ -246,7 +246,7 @@
       </eAnnotations>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="cfbNetwork" eType="#//FBNetwork"
-        containment="true"/>
+        transient="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Color">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="red" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"
@@ -1922,7 +1922,7 @@
   <eClassifiers xsi:type="ecore:EClass" name="STFunction" eSuperTypes="#//TextFunction"/>
   <eClassifiers xsi:type="ecore:EClass" name="STFunctionBody" eSuperTypes="#//TextFunctionBody"/>
   <eClassifiers xsi:type="ecore:EClass" name="STMethod" eSuperTypes="#//TextMethod"/>
-  <eClassifiers xsi:type="ecore:EClass" name="SubApp" eSuperTypes="#//FBNetworkElement">
+  <eClassifiers xsi:type="ecore:EClass" name="SubApp" abstract="true" eSuperTypes="#//FBNetworkElement">
     <eOperations name="getType" lowerBound="1" eType="#//SubAppType">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="body" value="//this cannot be moved to the annotation class because there we don't have the super access!!!&#xD;&#xA;org.eclipse.fordiac.ide.model.libraryElement.LibraryElement type = super.getType();&#xD;&#xA;if(type instanceof SubAppType){&#xD;&#xA;   return (SubAppType) type; &#xD;&#xA;}&#xD;&#xA;return null;"/>
@@ -1933,17 +1933,9 @@
         <details key="body" value="org.eclipse.fordiac.ide.model.libraryElement.Attribute attr = this.getAttribute(org.eclipse.fordiac.ide.model.LibraryElementTags.SUBAPP_REPRESENTATION_ATTRIBUTE);&#xA;return (attr != null) &amp;&amp; &quot;true&quot;.equals(attr.getValue()); //$NON-NLS-1$&#xA;"/>
       </eAnnotations>
     </eOperations>
-    <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="return (getType() != null);"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="loadSubAppNetwork" eType="#//FBNetwork">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
-        <details key="documentation" value="if it is an untyped subapp and the fbnetwork is not yet loaded load it from the type"/>
-      </eAnnotations>
-    </eOperations>
+    <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"/>
+    <eOperations name="getSubAppNetwork" eType="#//FBNetwork"/>
+    <eOperations name="loadSubAppNetwork" eType="#//FBNetwork"/>
     <eOperations name="getVisibleWidth" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="body" value="return isUnfolded() ? getWidth() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getWidth(this);"/>
@@ -1954,13 +1946,11 @@
         <details key="body" value="return isUnfolded() ? getHeight() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getHeight(this);"/>
       </eAnnotations>
     </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="subAppNetwork" eType="#//FBNetwork"
-        containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"
         defaultValueLiteral="200"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"
         defaultValueLiteral="100"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="Locked" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="locked" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
         defaultValueLiteral="false"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="StructManipulator" eSuperTypes="#//ConfigurableFB">
@@ -2083,6 +2073,47 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeEntry" eType="#//TypeEntry"
         transient="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TypedSubApp" eSuperTypes="#//SubApp">
+    <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return true;"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="loadSubAppNetwork" eType="#//FBNetwork">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
+        <details key="documentation" value=""/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subAppNetwork" eType="#//FBNetwork"
+        transient="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="UntypedSubApp" eSuperTypes="#//SubApp">
+    <eOperations name="getType" lowerBound="1" eType="#//SubAppType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return null;"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return false;"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="setTypeEntry">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="throw new UnsupportedOperationException(&quot;Setting the type entry of an untyped subapp is not supported!&quot;);"/>
+      </eAnnotations>
+      <eParameters name="typeEntry" eType="#//TypeEntry"/>
+    </eOperations>
+    <eOperations name="loadSubAppNetwork" eType="#//FBNetwork">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return getSubAppNetwork();"/>
+        <details key="documentation" value=""/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subAppNetwork" eType="#//FBNetwork"
+        containment="true"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Value">
     <eOperations name="getParentIE" lowerBound="1" eType="#//IInterfaceElement">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2199,6 +2230,36 @@
         </eGenericType>
       </eParameters>
     </eOperations>
+    <eOperations name="validateVarInOutSubappInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+        <details key="invariant" value="true"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappInterface(this, diagnostics, context);"/>
+      </eAnnotations>
+      <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="validateVarInOutSubappNetwork" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+        <details key="invariant" value="true"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappNetwork(this, diagnostics, context);"/>
+      </eAnnotations>
+      <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="arraySize" eType="#//ArraySize"
         containment="true" eOpposite="#//ArraySize/varDeclaration"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="withs" upperBound="-1"
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java
index 33e27ad..345afbd 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java
@@ -35,22 +35,22 @@
  */
 public interface CFBInstance extends FB {
 	/**
-	 * Returns the value of the '<em><b>Cfb Network</b></em>' containment reference.
+	 * Returns the value of the '<em><b>Cfb Network</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Cfb Network</em>' containment reference.
+	 * @return the value of the '<em>Cfb Network</em>' reference.
 	 * @see #setCfbNetwork(FBNetwork)
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getCFBInstance_CfbNetwork()
-	 * @model containment="true" resolveProxies="true"
+	 * @model transient="true"
 	 * @generated
 	 */
 	FBNetwork getCfbNetwork();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}' containment reference.
+	 * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Cfb Network</em>' containment reference.
+	 * @param value the new value of the '<em>Cfb Network</em>' reference.
 	 * @see #getCfbNetwork()
 	 * @generated
 	 */
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java
index 10e0d2e..53e8c61 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java
@@ -720,15 +720,6 @@
 	STMethod createSTMethod();
 
 	/**
-	 * Returns a new object of class '<em>Sub App</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Sub App</em>'.
-	 * @generated
-	 */
-	SubApp createSubApp();
-
-	/**
 	 * Returns a new object of class '<em>Struct Manipulator</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -765,6 +756,24 @@
 	TypedConfigureableObject createTypedConfigureableObject();
 
 	/**
+	 * Returns a new object of class '<em>Typed Sub App</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Typed Sub App</em>'.
+	 * @generated
+	 */
+	TypedSubApp createTypedSubApp();
+
+	/**
+	 * Returns a new object of class '<em>Untyped Sub App</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Untyped Sub App</em>'.
+	 * @generated
+	 */
+	UntypedSubApp createUntypedSubApp();
+
+	/**
 	 * Returns a new object of class '<em>Value</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java
index 6e93681..835fdce 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java
@@ -2219,7 +2219,7 @@
 	int CFB_INSTANCE__GROUP = FB__GROUP;
 
 	/**
-	 * The feature id for the '<em><b>Cfb Network</b></em>' containment reference.
+	 * The feature id for the '<em><b>Cfb Network</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -4980,7 +4980,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getVarDeclaration()
 	 * @generated
 	 */
-	int VAR_DECLARATION = 99;
+	int VAR_DECLARATION = 101;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -7191,22 +7191,13 @@
 	int SUB_APP__GROUP = FB_NETWORK_ELEMENT__GROUP;
 
 	/**
-	 * The feature id for the '<em><b>Sub App Network</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SUB_APP__SUB_APP_NETWORK = FB_NETWORK_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
 	 * The feature id for the '<em><b>Width</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SUB_APP__WIDTH = FB_NETWORK_ELEMENT_FEATURE_COUNT + 1;
+	int SUB_APP__WIDTH = FB_NETWORK_ELEMENT_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Height</b></em>' attribute.
@@ -7215,7 +7206,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SUB_APP__HEIGHT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 2;
+	int SUB_APP__HEIGHT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Locked</b></em>' attribute.
@@ -7224,7 +7215,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SUB_APP__LOCKED = FB_NETWORK_ELEMENT_FEATURE_COUNT + 3;
+	int SUB_APP__LOCKED = FB_NETWORK_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Sub App</em>' class.
@@ -7233,7 +7224,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SUB_APP_FEATURE_COUNT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 4;
+	int SUB_APP_FEATURE_COUNT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppTypeImpl <em>Sub App Type</em>}' class.
@@ -7391,6 +7382,260 @@
 	int SYSTEM_CONFIGURATION_FEATURE_COUNT = 3;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl <em>Typed Sub App</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypedSubApp()
+	 * @generated
+	 */
+	int TYPED_SUB_APP = 98;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__NAME = SUB_APP__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__COMMENT = SUB_APP__COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__ATTRIBUTES = SUB_APP__ATTRIBUTES;
+
+	/**
+	 * The feature id for the '<em><b>Type Entry</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__TYPE_ENTRY = SUB_APP__TYPE_ENTRY;
+
+	/**
+	 * The feature id for the '<em><b>Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__POSITION = SUB_APP__POSITION;
+
+	/**
+	 * The feature id for the '<em><b>Interface</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__INTERFACE = SUB_APP__INTERFACE;
+
+	/**
+	 * The feature id for the '<em><b>Mapping</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__MAPPING = SUB_APP__MAPPING;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__GROUP = SUB_APP__GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__WIDTH = SUB_APP__WIDTH;
+
+	/**
+	 * The feature id for the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__HEIGHT = SUB_APP__HEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Locked</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__LOCKED = SUB_APP__LOCKED;
+
+	/**
+	 * The feature id for the '<em><b>Sub App Network</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP__SUB_APP_NETWORK = SUB_APP_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Typed Sub App</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_SUB_APP_FEATURE_COUNT = SUB_APP_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl <em>Untyped Sub App</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getUntypedSubApp()
+	 * @generated
+	 */
+	int UNTYPED_SUB_APP = 99;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__NAME = SUB_APP__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__COMMENT = SUB_APP__COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__ATTRIBUTES = SUB_APP__ATTRIBUTES;
+
+	/**
+	 * The feature id for the '<em><b>Type Entry</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__TYPE_ENTRY = SUB_APP__TYPE_ENTRY;
+
+	/**
+	 * The feature id for the '<em><b>Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__POSITION = SUB_APP__POSITION;
+
+	/**
+	 * The feature id for the '<em><b>Interface</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__INTERFACE = SUB_APP__INTERFACE;
+
+	/**
+	 * The feature id for the '<em><b>Mapping</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__MAPPING = SUB_APP__MAPPING;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__GROUP = SUB_APP__GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__WIDTH = SUB_APP__WIDTH;
+
+	/**
+	 * The feature id for the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__HEIGHT = SUB_APP__HEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Locked</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__LOCKED = SUB_APP__LOCKED;
+
+	/**
+	 * The feature id for the '<em><b>Sub App Network</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP__SUB_APP_NETWORK = SUB_APP_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Untyped Sub App</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNTYPED_SUB_APP_FEATURE_COUNT = SUB_APP_FEATURE_COUNT + 1;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ValueImpl <em>Value</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -7398,7 +7643,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getValue()
 	 * @generated
 	 */
-	int VALUE = 98;
+	int VALUE = 100;
 
 	/**
 	 * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -7426,7 +7671,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getVersionInfo()
 	 * @generated
 	 */
-	int VERSION_INFO = 100;
+	int VERSION_INFO = 102;
 
 	/**
 	 * The feature id for the '<em><b>Author</b></em>' attribute.
@@ -7490,7 +7735,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getWith()
 	 * @generated
 	 */
-	int WITH = 101;
+	int WITH = 103;
 
 	/**
 	 * The feature id for the '<em><b>Variables</b></em>' reference.
@@ -7518,7 +7763,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getLanguage()
 	 * @generated
 	 */
-	int LANGUAGE = 102;
+	int LANGUAGE = 104;
 
 	/**
 	 * The meta object id for the '<em>Command Stack</em>' data type.
@@ -7528,7 +7773,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getCommandStack()
 	 * @generated
 	 */
-	int COMMAND_STACK = 103;
+	int COMMAND_STACK = 105;
 
 	/**
 	 * The meta object id for the '<em>IFile</em>' data type.
@@ -7538,7 +7783,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getIFile()
 	 * @generated
 	 */
-	int IFILE = 104;
+	int IFILE = 106;
 
 	/**
 	 * The meta object id for the '<em>Interface Element Stream</em>' data type.
@@ -7548,7 +7793,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getInterfaceElementStream()
 	 * @generated
 	 */
-	int INTERFACE_ELEMENT_STREAM = 105;
+	int INTERFACE_ELEMENT_STREAM = 107;
 
 	/**
 	 * The meta object id for the '<em>IProject</em>' data type.
@@ -7558,7 +7803,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getIProject()
 	 * @generated
 	 */
-	int IPROJECT = 106;
+	int IPROJECT = 108;
 
 	/**
 	 * The meta object id for the '<em>Point</em>' data type.
@@ -7568,7 +7813,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getPoint()
 	 * @generated
 	 */
-	int POINT = 107;
+	int POINT = 109;
 
 	/**
 	 * The meta object id for the '<em>Type Entry</em>' data type.
@@ -7578,7 +7823,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypeEntry()
 	 * @generated
 	 */
-	int TYPE_ENTRY = 108;
+	int TYPE_ENTRY = 110;
 
 	/**
 	 * The meta object id for the '<em>Type Library</em>' data type.
@@ -7588,7 +7833,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypeLibrary()
 	 * @generated
 	 */
-	int TYPE_LIBRARY = 109;
+	int TYPE_LIBRARY = 111;
 
 	/**
 	 * The meta object id for the '<em>Var Decl List</em>' data type.
@@ -7598,7 +7843,7 @@
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getVarDeclList()
 	 * @generated
 	 */
-	int VAR_DECL_LIST = 110;
+	int VAR_DECL_LIST = 112;
 
 
 	/**
@@ -7985,10 +8230,10 @@
 	EClass getCFBInstance();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}'.
+	 * Returns the meta object for the reference '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Cfb Network</em>'.
+	 * @return the meta object for the reference '<em>Cfb Network</em>'.
 	 * @see org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork()
 	 * @see #getCFBInstance()
 	 * @generated
@@ -10295,17 +10540,6 @@
 	EClass getSubApp();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork <em>Sub App Network</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Sub App Network</em>'.
-	 * @see org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork()
-	 * @see #getSubApp()
-	 * @generated
-	 */
-	EReference getSubApp_SubAppNetwork();
-
-	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getWidth <em>Width</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -10606,6 +10840,48 @@
 	EAttribute getTypedConfigureableObject_TypeEntry();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp <em>Typed Sub App</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Typed Sub App</em>'.
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp
+	 * @generated
+	 */
+	EClass getTypedSubApp();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork <em>Sub App Network</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Sub App Network</em>'.
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork()
+	 * @see #getTypedSubApp()
+	 * @generated
+	 */
+	EReference getTypedSubApp_SubAppNetwork();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp <em>Untyped Sub App</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Untyped Sub App</em>'.
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp
+	 * @generated
+	 */
+	EClass getUntypedSubApp();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork <em>Sub App Network</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Sub App Network</em>'.
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork()
+	 * @see #getUntypedSubApp()
+	 * @generated
+	 */
+	EReference getUntypedSubApp_SubAppNetwork();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.fordiac.ide.model.libraryElement.Value <em>Value</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -11190,7 +11466,7 @@
 		EClass CFB_INSTANCE = eINSTANCE.getCFBInstance();
 
 		/**
-		 * The meta object literal for the '<em><b>Cfb Network</b></em>' containment reference feature.
+		 * The meta object literal for the '<em><b>Cfb Network</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
@@ -13080,14 +13356,6 @@
 		EClass SUB_APP = eINSTANCE.getSubApp();
 
 		/**
-		 * The meta object literal for the '<em><b>Sub App Network</b></em>' containment reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference SUB_APP__SUB_APP_NETWORK = eINSTANCE.getSubApp_SubAppNetwork();
-
-		/**
 		 * The meta object literal for the '<em><b>Width</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -13328,6 +13596,42 @@
 		EAttribute TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY = eINSTANCE.getTypedConfigureableObject_TypeEntry();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl <em>Typed Sub App</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl
+		 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypedSubApp()
+		 * @generated
+		 */
+		EClass TYPED_SUB_APP = eINSTANCE.getTypedSubApp();
+
+		/**
+		 * The meta object literal for the '<em><b>Sub App Network</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TYPED_SUB_APP__SUB_APP_NETWORK = eINSTANCE.getTypedSubApp_SubAppNetwork();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl <em>Untyped Sub App</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl
+		 * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getUntypedSubApp()
+		 * @generated
+		 */
+		EClass UNTYPED_SUB_APP = eINSTANCE.getUntypedSubApp();
+
+		/**
+		 * The meta object literal for the '<em><b>Sub App Network</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference UNTYPED_SUB_APP__SUB_APP_NETWORK = eINSTANCE.getUntypedSubApp_SubAppNetwork();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ValueImpl <em>Value</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java
index f2e43ac..42fa6ca 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java
@@ -26,40 +26,25 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork <em>Sub App Network</em>}</li>
  *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getWidth <em>Width</em>}</li>
  *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getHeight <em>Height</em>}</li>
  *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#isLocked <em>Locked</em>}</li>
  * </ul>
  *
  * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getSubApp()
- * @model
+ * @model abstract="true"
  * @generated
  */
 public interface SubApp extends FBNetworkElement {
 	/**
-	 * Returns the value of the '<em><b>Sub App Network</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Sub App Network</em>' containment reference.
-	 * @see #setSubAppNetwork(FBNetwork)
-	 * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getSubApp_SubAppNetwork()
-	 * @model containment="true" resolveProxies="true"
+	 * @model kind="operation"
 	 * @generated
 	 */
 	FBNetwork getSubAppNetwork();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork <em>Sub App Network</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Sub App Network</em>' containment reference.
-	 * @see #getSubAppNetwork()
-	 * @generated
-	 */
-	void setSubAppNetwork(FBNetwork value);
-
-	/**
 	 * Returns the value of the '<em><b>Width</b></em>' attribute.
 	 * The default value is <code>"200"</code>.
 	 * <!-- begin-user-doc -->
@@ -155,9 +140,6 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * <!-- begin-model-doc -->
-	 * if it is an untyped subapp and the fbnetwork is not yet loaded load it from the type
-	 * <!-- end-model-doc -->
 	 * @model
 	 * @generated
 	 */
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/TypedSubApp.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/TypedSubApp.java
new file mode 100644
index 0000000..51a2e37
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/TypedSubApp.java
@@ -0,0 +1,78 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ *               2022-2023 Martin Erich Jobst
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ *      - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Typed Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getTypedSubApp()
+ * @model
+ * @generated
+ */
+public interface TypedSubApp extends SubApp {
+	/**
+	 * Returns the value of the '<em><b>Sub App Network</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub App Network</em>' reference.
+	 * @see #setSubAppNetwork(FBNetwork)
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getTypedSubApp_SubAppNetwork()
+	 * @model transient="true"
+	 * @generated
+	 */
+	FBNetwork getSubAppNetwork();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork <em>Sub App Network</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Sub App Network</em>' reference.
+	 * @see #getSubAppNetwork()
+	 * @generated
+	 */
+	void setSubAppNetwork(FBNetwork value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+	 * @generated
+	 */
+	boolean isTyped();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * if it is an untyped subapp and the fbnetwork is not yet loaded load it from the type
+	 * <!-- end-model-doc -->
+	 * @model
+	 * @generated
+	 */
+	FBNetwork loadSubAppNetwork();
+
+} // TypedSubApp
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/UntypedSubApp.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/UntypedSubApp.java
new file mode 100644
index 0000000..5d0af8c
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/UntypedSubApp.java
@@ -0,0 +1,95 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ *               2022-2023 Martin Erich Jobst
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ *      - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement;
+
+import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Untyped Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getUntypedSubApp()
+ * @model
+ * @generated
+ */
+public interface UntypedSubApp extends SubApp {
+	/**
+	 * Returns the value of the '<em><b>Sub App Network</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub App Network</em>' containment reference.
+	 * @see #setSubAppNetwork(FBNetwork)
+	 * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getUntypedSubApp_SubAppNetwork()
+	 * @model containment="true" resolveProxies="true"
+	 * @generated
+	 */
+	FBNetwork getSubAppNetwork();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork <em>Sub App Network</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Sub App Network</em>' containment reference.
+	 * @see #getSubAppNetwork()
+	 * @generated
+	 */
+	void setSubAppNetwork(FBNetwork value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation" required="true"
+	 * @generated
+	 */
+	SubAppType getType();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+	 * @generated
+	 */
+	boolean isTyped();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model typeEntryDataType="org.eclipse.fordiac.ide.model.libraryElement.TypeEntry"
+	 * @generated
+	 */
+	void setTypeEntry(TypeEntry typeEntry);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * 
+	 * <!-- end-model-doc -->
+	 * @model
+	 * @generated
+	 */
+	FBNetwork loadSubAppNetwork();
+
+} // UntypedSubApp
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java
index e84f0b2..de1f67f 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java
@@ -187,4 +187,20 @@
 	 */
 	boolean validateVarInOutIsWithed(DiagnosticChain diagnostics, Map<Object, Object> context);
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model annotation="http://www.eclipse.org/emf/2002/Ecore invariant='true'"
+	 * @generated
+	 */
+	boolean validateVarInOutSubappInterface(DiagnosticChain diagnostics, Map<Object, Object> context);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model annotation="http://www.eclipse.org/emf/2002/Ecore invariant='true'"
+	 * @generated
+	 */
+	boolean validateVarInOutSubappNetwork(DiagnosticChain diagnostics, Map<Object, Object> context);
+
 } // VarDeclaration
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java
index 31b944e..a6ff951 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java
@@ -17,8 +17,6 @@
 package org.eclipse.fordiac.ide.model.libraryElement.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -44,7 +42,7 @@
  */
 public class CFBInstanceImpl extends FBImpl implements CFBInstance {
 	/**
-	 * The cached value of the '{@link #getCfbNetwork() <em>Cfb Network</em>}' containment reference.
+	 * The cached value of the '{@link #getCfbNetwork() <em>Cfb Network</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #getCfbNetwork()
@@ -83,12 +81,6 @@
 			InternalEObject oldCfbNetwork = (InternalEObject)cfbNetwork;
 			cfbNetwork = (FBNetwork)eResolveProxy(oldCfbNetwork);
 			if (cfbNetwork != oldCfbNetwork) {
-				InternalEObject newCfbNetwork = (InternalEObject)cfbNetwork;
-				NotificationChain msgs = oldCfbNetwork.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, null);
-				if (newCfbNetwork.eInternalContainer() == null) {
-					msgs = newCfbNetwork.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, msgs);
-				}
-				if (msgs != null) msgs.dispatch();
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, oldCfbNetwork, cfbNetwork));
 			}
@@ -110,34 +102,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetCfbNetwork(FBNetwork newCfbNetwork, NotificationChain msgs) {
-		FBNetwork oldCfbNetwork = cfbNetwork;
-		cfbNetwork = newCfbNetwork;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, oldCfbNetwork, newCfbNetwork);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	@Override
 	public void setCfbNetwork(FBNetwork newCfbNetwork) {
-		if (newCfbNetwork != cfbNetwork) {
-			NotificationChain msgs = null;
-			if (cfbNetwork != null)
-				msgs = ((InternalEObject)cfbNetwork).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, msgs);
-			if (newCfbNetwork != null)
-				msgs = ((InternalEObject)newCfbNetwork).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, msgs);
-			msgs = basicSetCfbNetwork(newCfbNetwork, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, newCfbNetwork, newCfbNetwork));
+		FBNetwork oldCfbNetwork = cfbNetwork;
+		cfbNetwork = newCfbNetwork;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, oldCfbNetwork, cfbNetwork));
 	}
 
 	/**
@@ -171,21 +141,6 @@
 	 * @generated
 	 */
 	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK:
-				return basicSetCfbNetwork(null, msgs);
-			default:
-				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 LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK:
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java
index 476083a..2fbabfa 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java
@@ -26,7 +26,6 @@
 import org.eclipse.fordiac.ide.model.data.DataType;
 import org.eclipse.fordiac.ide.model.libraryElement.Attribute;
 import org.eclipse.fordiac.ide.model.libraryElement.ConfigurableMoveFB;
-import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 
@@ -37,17 +36,15 @@
  * The following features are implemented:
  * </p>
  * <ul>
- * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ConfigurableMoveFBImpl#getDataType
- * <em>Data Type</em>}</li>
+ *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ConfigurableMoveFBImpl#getDataType <em>Data Type</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class ConfigurableMoveFBImpl extends ConfigurableFBImpl implements ConfigurableMoveFB {
 	/**
-	 * The cached value of the '{@link #getDataType() <em>Data Type</em>}'
-	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
+	 * The cached value of the '{@link #getDataType() <em>Data Type</em>}' reference.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @see #getDataType()
 	 * @generated
 	 * @ordered
@@ -56,15 +53,14 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	protected ConfigurableMoveFBImpl() {
+		super();
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
@@ -74,17 +70,16 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
 	public DataType getDataType() {
 		if (dataType != null && dataType.eIsProxy()) {
-			final InternalEObject oldDataType = (InternalEObject) dataType;
-			dataType = (DataType) eResolveProxy(oldDataType);
-			if ((dataType != oldDataType) && eNotificationRequired()) {
-				eNotify(new ENotificationImpl(this, Notification.RESOLVE,
-						LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE, oldDataType, dataType));
+			InternalEObject oldDataType = (InternalEObject)dataType;
+			dataType = (DataType)eResolveProxy(oldDataType);
+			if (dataType != oldDataType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE, oldDataType, dataType));
 			}
 		}
 		return dataType;
@@ -92,7 +87,6 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	public DataType basicGetDataType() {
@@ -101,22 +95,18 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
-	public void setDataType(final DataType newDataType) {
-		final DataType oldDataType = dataType;
+	public void setDataType(DataType newDataType) {
+		DataType oldDataType = dataType;
 		dataType = newDataType;
-		if (eNotificationRequired()) {
-			eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE,
-					oldDataType, dataType));
-		}
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE, oldDataType, dataType));
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
@@ -145,83 +135,72 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
 	public EList<Attribute> getConfigurationAsAttributes() {
-		if (dataType == null) {
-			return ECollections.emptyEList();
-		}
-		final Attribute attr = LibraryElementFactory.eINSTANCE.createAttribute();
-		attr.setName(LibraryElementTags.F_MOVE_CONFIG);
-		attr.setValue(dataType.getName());
-		return ECollections.asEList(attr);
+		return ECollections.emptyEList();
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
-	public Object eGet(final int featureID, final boolean resolve, final boolean coreType) {
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-		case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
-			if (resolve) {
-				return getDataType();
-			}
-			return basicGetDataType();
-		default:
-			return super.eGet(featureID, resolve, coreType);
+			case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+				if (resolve) return getDataType();
+				return basicGetDataType();
+			default:
+				return super.eGet(featureID, resolve, coreType);
 		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
-	public void eSet(final int featureID, final Object newValue) {
+	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-		case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
-			setDataType((DataType) newValue);
-			return;
-		default:
-			super.eSet(featureID, newValue);
-			return;
+			case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+				setDataType((DataType)newValue);
+				return;
+			default:
+				super.eSet(featureID, newValue);
+				return;
 		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
-	public void eUnset(final int featureID) {
+	public void eUnset(int featureID) {
 		switch (featureID) {
-		case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
-			setDataType((DataType) null);
-			return;
-		default:
-			super.eUnset(featureID);
-			return;
+			case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+				setDataType((DataType)null);
+				return;
+			default:
+				super.eUnset(featureID);
+				return;
 		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
-	public boolean eIsSet(final int featureID) {
-		return switch (featureID) {
-		case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE -> dataType != null;
-		default -> super.eIsSet(featureID);
-		};
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+				return dataType != null;
+			default:
+				return super.eIsSet(featureID);
+		}
 	}
 }
 // ConfigurableMoveFBImpl
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java
index 170f442..6a8a805 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java
@@ -112,10 +112,11 @@
 import org.eclipse.fordiac.ide.model.libraryElement.ServiceTransaction;
 import org.eclipse.fordiac.ide.model.libraryElement.SimpleFBType;
 import org.eclipse.fordiac.ide.model.libraryElement.StructManipulator;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
 import org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration;
 import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.Value;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 import org.eclipse.fordiac.ide.model.libraryElement.VersionInfo;
@@ -246,11 +247,12 @@
 			case LibraryElementPackage.ST_FUNCTION: return createSTFunction();
 			case LibraryElementPackage.ST_FUNCTION_BODY: return createSTFunctionBody();
 			case LibraryElementPackage.ST_METHOD: return createSTMethod();
-			case LibraryElementPackage.SUB_APP: return createSubApp();
 			case LibraryElementPackage.STRUCT_MANIPULATOR: return createStructManipulator();
 			case LibraryElementPackage.SUB_APP_TYPE: return createSubAppType();
 			case LibraryElementPackage.SYSTEM_CONFIGURATION: return createSystemConfiguration();
 			case LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT: return createTypedConfigureableObject();
+			case LibraryElementPackage.TYPED_SUB_APP: return createTypedSubApp();
+			case LibraryElementPackage.UNTYPED_SUB_APP: return createUntypedSubApp();
 			case LibraryElementPackage.VALUE: return createValue();
 			case LibraryElementPackage.VAR_DECLARATION: return createVarDeclaration();
 			case LibraryElementPackage.VERSION_INFO: return createVersionInfo();
@@ -1164,17 +1166,6 @@
 	 * @generated
 	 */
 	@Override
-	public SubApp createSubApp() {
-		SubAppImpl subApp = new SubAppImpl();
-		return subApp;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public StructManipulator createStructManipulator() {
 		StructManipulatorImpl structManipulator = new StructManipulatorImpl();
 		return structManipulator;
@@ -1219,6 +1210,28 @@
 	 * @generated
 	 */
 	@Override
+	public TypedSubApp createTypedSubApp() {
+		TypedSubAppImpl typedSubApp = new TypedSubAppImpl();
+		return typedSubApp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public UntypedSubApp createUntypedSubApp() {
+		UntypedSubAppImpl untypedSubApp = new UntypedSubAppImpl();
+		return untypedSubApp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Value createValue() {
 		ValueImpl value = new ValueImpl();
 		return value;
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java
index 211423e..5b85633 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java
@@ -641,6 +641,20 @@
 	private EClass typedConfigureableObjectEClass = null;
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass typedSubAppEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass untypedSubAppEClass = null;
+
+	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
@@ -3091,17 +3105,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getSubApp_SubAppNetwork() {
-		return (EReference)subAppEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public EAttribute getSubApp_Width() {
-		return (EAttribute)subAppEClass.getEStructuralFeatures().get(1);
+		return (EAttribute)subAppEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -3110,7 +3115,7 @@
 	 */
 	@Override
 	public EAttribute getSubApp_Height() {
-		return (EAttribute)subAppEClass.getEStructuralFeatures().get(2);
+		return (EAttribute)subAppEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -3120,7 +3125,7 @@
 	 */
 	@Override
 	public EAttribute getSubApp_Locked() {
-		return (EAttribute)subAppEClass.getEStructuralFeatures().get(3);
+		return (EAttribute)subAppEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -3349,6 +3354,46 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTypedSubApp() {
+		return typedSubAppEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTypedSubApp_SubAppNetwork() {
+		return (EReference)typedSubAppEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getUntypedSubApp() {
+		return untypedSubAppEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getUntypedSubApp_SubAppNetwork() {
+		return (EReference)untypedSubAppEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
@@ -3925,7 +3970,6 @@
 		stMethodEClass = createEClass(ST_METHOD);
 
 		subAppEClass = createEClass(SUB_APP);
-		createEReference(subAppEClass, SUB_APP__SUB_APP_NETWORK);
 		createEAttribute(subAppEClass, SUB_APP__WIDTH);
 		createEAttribute(subAppEClass, SUB_APP__HEIGHT);
 		createEAttribute(subAppEClass, SUB_APP__LOCKED);
@@ -3963,6 +4007,12 @@
 		typedConfigureableObjectEClass = createEClass(TYPED_CONFIGUREABLE_OBJECT);
 		createEAttribute(typedConfigureableObjectEClass, TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY);
 
+		typedSubAppEClass = createEClass(TYPED_SUB_APP);
+		createEReference(typedSubAppEClass, TYPED_SUB_APP__SUB_APP_NETWORK);
+
+		untypedSubAppEClass = createEClass(UNTYPED_SUB_APP);
+		createEReference(untypedSubAppEClass, UNTYPED_SUB_APP__SUB_APP_NETWORK);
+
 		valueEClass = createEClass(VALUE);
 		createEAttribute(valueEClass, VALUE__VALUE);
 
@@ -4121,6 +4171,8 @@
 		textMethodEClass.getESuperTypes().add(this.getMethod());
 		typedConfigureableObjectEClass.getESuperTypes().add(this.getITypedElement());
 		typedConfigureableObjectEClass.getESuperTypes().add(this.getConfigurableObject());
+		typedSubAppEClass.getESuperTypes().add(this.getSubApp());
+		untypedSubAppEClass.getESuperTypes().add(this.getSubApp());
 		varDeclarationEClass.getESuperTypes().add(this.getIInterfaceElement());
 
 		// Initialize classes and features; add operations and parameters
@@ -4214,7 +4266,7 @@
 		addEParameter(op, ecorePackage.getEString(), "name", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
 		initEClass(cfbInstanceEClass, CFBInstance.class, "CFBInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getCFBInstance_CfbNetwork(), this.getFBNetwork(), null, "cfbNetwork", null, 0, 1, CFBInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEReference(getCFBInstance_CfbNetwork(), this.getFBNetwork(), null, "cfbNetwork", null, 0, 1, CFBInstance.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
 
 		addEOperation(cfbInstanceEClass, this.getFBNetwork(), "loadCFBNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
@@ -4990,11 +5042,10 @@
 
 		initEClass(stMethodEClass, STMethod.class, "STMethod", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 
-		initEClass(subAppEClass, SubApp.class, "SubApp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getSubApp_SubAppNetwork(), this.getFBNetwork(), null, "subAppNetwork", null, 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEClass(subAppEClass, SubApp.class, "SubApp", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEAttribute(getSubApp_Width(), theXMLTypePackage.getInt(), "width", "200", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
 		initEAttribute(getSubApp_Height(), theXMLTypePackage.getInt(), "height", "100", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEAttribute(getSubApp_Locked(), theXMLTypePackage.getBoolean(), "Locked", "false", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEAttribute(getSubApp_Locked(), theXMLTypePackage.getBoolean(), "locked", "false", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
 
 		addEOperation(subAppEClass, this.getSubAppType(), "getType", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
@@ -5002,6 +5053,8 @@
 
 		addEOperation(subAppEClass, theXMLTypePackage.getBoolean(), "isTyped", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
+		addEOperation(subAppEClass, this.getFBNetwork(), "getSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
 		addEOperation(subAppEClass, this.getFBNetwork(), "loadSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
 		addEOperation(subAppEClass, theXMLTypePackage.getInt(), "getVisibleWidth", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
@@ -5071,6 +5124,25 @@
 		g1.getETypeArguments().add(g2);
 		addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
+		initEClass(typedSubAppEClass, TypedSubApp.class, "TypedSubApp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getTypedSubApp_SubAppNetwork(), this.getFBNetwork(), null, "subAppNetwork", null, 0, 1, TypedSubApp.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+		addEOperation(typedSubAppEClass, theXMLTypePackage.getBoolean(), "isTyped", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		addEOperation(typedSubAppEClass, this.getFBNetwork(), "loadSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(untypedSubAppEClass, UntypedSubApp.class, "UntypedSubApp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getUntypedSubApp_SubAppNetwork(), this.getFBNetwork(), null, "subAppNetwork", null, 0, 1, UntypedSubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+		addEOperation(untypedSubAppEClass, this.getSubAppType(), "getType", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		addEOperation(untypedSubAppEClass, theXMLTypePackage.getBoolean(), "isTyped", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = addEOperation(untypedSubAppEClass, null, "setTypeEntry", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getTypeEntry(), "typeEntry", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		addEOperation(untypedSubAppEClass, this.getFBNetwork(), "loadSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
 		initEClass(valueEClass, Value.class, "Value", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEAttribute(getValue_Value(), ecorePackage.getEString(), "value", "", 0, 1, Value.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
 
@@ -5139,6 +5211,24 @@
 		g1.getETypeArguments().add(g2);
 		addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
+		op = addEOperation(varDeclarationEClass, ecorePackage.getEBoolean(), "validateVarInOutSubappInterface", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = addEOperation(varDeclarationEClass, ecorePackage.getEBoolean(), "validateVarInOutSubappNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
 		initEClass(versionInfoEClass, VersionInfo.class, "VersionInfo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEAttribute(getVersionInfo_Author(), theXMLTypePackage.getString(), "author", "", 1, 1, VersionInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
 		initEAttribute(getVersionInfo_Date(), theXMLTypePackage.getString(), "date", "YYYY-MM-DD", 1, 1, VersionInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
@@ -5927,6 +6017,18 @@
 		   new String[] {
 			   "invariant", "true" //$NON-NLS-1$ //$NON-NLS-2$
 		   });
+		addAnnotation
+		  (varDeclarationEClass.getEOperations().get(11),
+		   source,
+		   new String[] {
+			   "invariant", "true" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+		addAnnotation
+		  (varDeclarationEClass.getEOperations().get(12),
+		   source,
+		   new String[] {
+			   "invariant", "true" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
 	}
 
 	/**
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java
index 4b1e43c..b4e9cdb 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java
@@ -1,7 +1,7 @@
 /**
  * *******************************************************************************
  * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
- *               2022 Martin Erich Jobst
+ *               2022-2023 Martin Erich Jobst
  * 
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -17,10 +17,8 @@
 package org.eclipse.fordiac.ide.model.libraryElement.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
@@ -37,7 +35,6 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#getSubAppNetwork <em>Sub App Network</em>}</li>
  *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#getWidth <em>Width</em>}</li>
  *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#getHeight <em>Height</em>}</li>
  *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#isLocked <em>Locked</em>}</li>
@@ -45,17 +42,7 @@
  *
  * @generated
  */
-public class SubAppImpl extends FBNetworkElementImpl implements SubApp {
-	/**
-	 * The cached value of the '{@link #getSubAppNetwork() <em>Sub App Network</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSubAppNetwork()
-	 * @generated
-	 * @ordered
-	 */
-	protected FBNetwork subAppNetwork;
-
+public abstract class SubAppImpl extends FBNetworkElementImpl implements SubApp {
 	/**
 	 * The default value of the '{@link #getWidth() <em>Width</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -141,74 +128,6 @@
 	 * @generated
 	 */
 	@Override
-	public FBNetwork getSubAppNetwork() {
-		if (subAppNetwork != null && subAppNetwork.eIsProxy()) {
-			InternalEObject oldSubAppNetwork = (InternalEObject)subAppNetwork;
-			subAppNetwork = (FBNetwork)eResolveProxy(oldSubAppNetwork);
-			if (subAppNetwork != oldSubAppNetwork) {
-				InternalEObject newSubAppNetwork = (InternalEObject)subAppNetwork;
-				NotificationChain msgs = oldSubAppNetwork.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, null);
-				if (newSubAppNetwork.eInternalContainer() == null) {
-					msgs = newSubAppNetwork.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, msgs);
-				}
-				if (msgs != null) msgs.dispatch();
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
-			}
-		}
-		return subAppNetwork;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public FBNetwork basicGetSubAppNetwork() {
-		return subAppNetwork;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetSubAppNetwork(FBNetwork newSubAppNetwork, NotificationChain msgs) {
-		FBNetwork oldSubAppNetwork = subAppNetwork;
-		subAppNetwork = newSubAppNetwork;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, newSubAppNetwork);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setSubAppNetwork(FBNetwork newSubAppNetwork) {
-		if (newSubAppNetwork != subAppNetwork) {
-			NotificationChain msgs = null;
-			if (subAppNetwork != null)
-				msgs = ((InternalEObject)subAppNetwork).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, msgs);
-			if (newSubAppNetwork != null)
-				msgs = ((InternalEObject)newSubAppNetwork).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, msgs);
-			msgs = basicSetSubAppNetwork(newSubAppNetwork, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, newSubAppNetwork, newSubAppNetwork));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public int getWidth() {
 		return width;
 	}
@@ -306,7 +225,21 @@
 	 */
 	@Override
 	public boolean isTyped() {
-		return (getType() != null);
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FBNetwork getSubAppNetwork() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
 	}
 
 	/**
@@ -316,7 +249,9 @@
 	 */
 	@Override
 	public FBNetwork loadSubAppNetwork() {
-		return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
 	}
 
 	/**
@@ -345,26 +280,8 @@
 	 * @generated
 	 */
 	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
-				return basicSetSubAppNetwork(null, msgs);
-			default:
-				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 LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
-				if (resolve) return getSubAppNetwork();
-				return basicGetSubAppNetwork();
 			case LibraryElementPackage.SUB_APP__WIDTH:
 				return getWidth();
 			case LibraryElementPackage.SUB_APP__HEIGHT:
@@ -384,9 +301,6 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
-				setSubAppNetwork((FBNetwork)newValue);
-				return;
 			case LibraryElementPackage.SUB_APP__WIDTH:
 				setWidth((Integer)newValue);
 				return;
@@ -410,9 +324,6 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
-				setSubAppNetwork((FBNetwork)null);
-				return;
 			case LibraryElementPackage.SUB_APP__WIDTH:
 				setWidth(WIDTH_EDEFAULT);
 				return;
@@ -436,8 +347,6 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
-				return subAppNetwork != null;
 			case LibraryElementPackage.SUB_APP__WIDTH:
 				return width != WIDTH_EDEFAULT;
 			case LibraryElementPackage.SUB_APP__HEIGHT:
@@ -463,7 +372,7 @@
 		result.append(width);
 		result.append(", height: "); //$NON-NLS-1$
 		result.append(height);
-		result.append(", Locked: "); //$NON-NLS-1$
+		result.append(", locked: "); //$NON-NLS-1$
 		result.append(locked);
 		result.append(')');
 		return result.toString();
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/TypedSubAppImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/TypedSubAppImpl.java
new file mode 100644
index 0000000..28b396d
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/TypedSubAppImpl.java
@@ -0,0 +1,198 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ *               2022-2023 Martin Erich Jobst
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ *      - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.impl;
+
+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.fordiac.ide.model.libraryElement.FBNetwork;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Typed Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TypedSubAppImpl extends SubAppImpl implements TypedSubApp {
+	/**
+	 * The cached value of the '{@link #getSubAppNetwork() <em>Sub App Network</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSubAppNetwork()
+	 * @generated
+	 * @ordered
+	 */
+	protected FBNetwork subAppNetwork;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TypedSubAppImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LibraryElementPackage.Literals.TYPED_SUB_APP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FBNetwork getSubAppNetwork() {
+		if (subAppNetwork != null && subAppNetwork.eIsProxy()) {
+			InternalEObject oldSubAppNetwork = (InternalEObject)subAppNetwork;
+			subAppNetwork = (FBNetwork)eResolveProxy(oldSubAppNetwork);
+			if (subAppNetwork != oldSubAppNetwork) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
+			}
+		}
+		return subAppNetwork;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FBNetwork basicGetSubAppNetwork() {
+		return subAppNetwork;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSubAppNetwork(FBNetwork newSubAppNetwork) {
+		FBNetwork oldSubAppNetwork = subAppNetwork;
+		subAppNetwork = newSubAppNetwork;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isTyped() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FBNetwork loadSubAppNetwork() {
+		return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+				if (resolve) return getSubAppNetwork();
+				return basicGetSubAppNetwork();
+			default:
+				return super.eGet(featureID, resolve, coreType);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+				setSubAppNetwork((FBNetwork)newValue);
+				return;
+			default:
+				super.eSet(featureID, newValue);
+				return;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+				setSubAppNetwork((FBNetwork)null);
+				return;
+			default:
+				super.eUnset(featureID);
+				return;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+				return subAppNetwork != null;
+			default:
+				return super.eIsSet(featureID);
+		}
+	}
+
+} //TypedSubAppImpl
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/UntypedSubAppImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/UntypedSubAppImpl.java
new file mode 100644
index 0000000..22de66d
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/UntypedSubAppImpl.java
@@ -0,0 +1,265 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ *               2022-2023 Martin Erich Jobst
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ *      - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
+
+import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Untyped Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class UntypedSubAppImpl extends SubAppImpl implements UntypedSubApp {
+	/**
+	 * The cached value of the '{@link #getSubAppNetwork() <em>Sub App Network</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSubAppNetwork()
+	 * @generated
+	 * @ordered
+	 */
+	protected FBNetwork subAppNetwork;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UntypedSubAppImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LibraryElementPackage.Literals.UNTYPED_SUB_APP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FBNetwork getSubAppNetwork() {
+		if (subAppNetwork != null && subAppNetwork.eIsProxy()) {
+			InternalEObject oldSubAppNetwork = (InternalEObject)subAppNetwork;
+			subAppNetwork = (FBNetwork)eResolveProxy(oldSubAppNetwork);
+			if (subAppNetwork != oldSubAppNetwork) {
+				InternalEObject newSubAppNetwork = (InternalEObject)subAppNetwork;
+				NotificationChain msgs = oldSubAppNetwork.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, null);
+				if (newSubAppNetwork.eInternalContainer() == null) {
+					msgs = newSubAppNetwork.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, msgs);
+				}
+				if (msgs != null) msgs.dispatch();
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
+			}
+		}
+		return subAppNetwork;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FBNetwork basicGetSubAppNetwork() {
+		return subAppNetwork;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSubAppNetwork(FBNetwork newSubAppNetwork, NotificationChain msgs) {
+		FBNetwork oldSubAppNetwork = subAppNetwork;
+		subAppNetwork = newSubAppNetwork;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, newSubAppNetwork);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSubAppNetwork(FBNetwork newSubAppNetwork) {
+		if (newSubAppNetwork != subAppNetwork) {
+			NotificationChain msgs = null;
+			if (subAppNetwork != null)
+				msgs = ((InternalEObject)subAppNetwork).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, msgs);
+			if (newSubAppNetwork != null)
+				msgs = ((InternalEObject)newSubAppNetwork).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, msgs);
+			msgs = basicSetSubAppNetwork(newSubAppNetwork, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, newSubAppNetwork, newSubAppNetwork));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SubAppType getType() {
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isTyped() {
+		return false;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setTypeEntry(final TypeEntry typeEntry) {
+		throw new UnsupportedOperationException("Setting the type entry of an untyped subapp is not supported!");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FBNetwork loadSubAppNetwork() {
+		return getSubAppNetwork();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+				return basicSetSubAppNetwork(null, msgs);
+			default:
+				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 LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+				if (resolve) return getSubAppNetwork();
+				return basicGetSubAppNetwork();
+			default:
+				return super.eGet(featureID, resolve, coreType);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+				setSubAppNetwork((FBNetwork)newValue);
+				return;
+			default:
+				super.eSet(featureID, newValue);
+				return;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+				setSubAppNetwork((FBNetwork)null);
+				return;
+			default:
+				super.eUnset(featureID);
+				return;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+				return subAppNetwork != null;
+			default:
+				return super.eIsSet(featureID);
+		}
+	}
+
+} //UntypedSubAppImpl
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java
index 058d1b5..a3c1d1c 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java
@@ -632,6 +632,26 @@
 	 * @generated
 	 */
 	@Override
+	public boolean validateVarInOutSubappInterface(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappInterface(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean validateVarInOutSubappNetwork(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappNetwork(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public FBNetworkElement getFBNetworkElement() {
 		return org.eclipse.fordiac.ide.model.Annotations.getFBNetworkElement(this);
 	}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java
index a839853..cf56c46 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java
@@ -475,6 +475,14 @@
 				return createTypedConfigureableObjectAdapter();
 			}
 			@Override
+			public Adapter caseTypedSubApp(TypedSubApp object) {
+				return createTypedSubAppAdapter();
+			}
+			@Override
+			public Adapter caseUntypedSubApp(UntypedSubApp object) {
+				return createUntypedSubAppAdapter();
+			}
+			@Override
 			public Adapter caseValue(Value object) {
 				return createValueAdapter();
 			}
@@ -1887,6 +1895,34 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp <em>Typed Sub App</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 org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp
+	 * @generated
+	 */
+	public Adapter createTypedSubAppAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp <em>Untyped Sub App</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 org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp
+	 * @generated
+	 */
+	public Adapter createUntypedSubAppAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.Value <em>Value</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java
index d97487a..271a7f2 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java
@@ -974,6 +974,32 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case LibraryElementPackage.TYPED_SUB_APP: {
+				TypedSubApp typedSubApp = (TypedSubApp)theEObject;
+				T result = caseTypedSubApp(typedSubApp);
+				if (result == null) result = caseSubApp(typedSubApp);
+				if (result == null) result = caseFBNetworkElement(typedSubApp);
+				if (result == null) result = caseTypedConfigureableObject(typedSubApp);
+				if (result == null) result = casePositionableElement(typedSubApp);
+				if (result == null) result = caseITypedElement(typedSubApp);
+				if (result == null) result = caseConfigurableObject(typedSubApp);
+				if (result == null) result = caseINamedElement(typedSubApp);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LibraryElementPackage.UNTYPED_SUB_APP: {
+				UntypedSubApp untypedSubApp = (UntypedSubApp)theEObject;
+				T result = caseUntypedSubApp(untypedSubApp);
+				if (result == null) result = caseSubApp(untypedSubApp);
+				if (result == null) result = caseFBNetworkElement(untypedSubApp);
+				if (result == null) result = caseTypedConfigureableObject(untypedSubApp);
+				if (result == null) result = casePositionableElement(untypedSubApp);
+				if (result == null) result = caseITypedElement(untypedSubApp);
+				if (result == null) result = caseConfigurableObject(untypedSubApp);
+				if (result == null) result = caseINamedElement(untypedSubApp);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case LibraryElementPackage.VALUE: {
 				Value value = (Value)theEObject;
 				T result = caseValue(value);
@@ -2478,6 +2504,36 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Typed Sub App</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>Typed Sub App</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTypedSubApp(TypedSubApp object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Untyped Sub App</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>Untyped Sub App</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUntypedSubApp(UntypedSubApp object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Value</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java
index c4762e3..97859ad 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java
@@ -129,6 +129,8 @@
 import org.eclipse.fordiac.ide.model.libraryElement.TextFunctionBody;
 import org.eclipse.fordiac.ide.model.libraryElement.TextMethod;
 import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.Value;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 import org.eclipse.fordiac.ide.model.libraryElement.VersionInfo;
@@ -374,12 +376,28 @@
 	public static final int VAR_DECLARATION__VALIDATE_VAR_IN_OUT_IS_WITHED = 26;
 
 	/**
+	 * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Validate Var In Out Subapp Interface' of 'Var Declaration'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final int VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_INTERFACE = 27;
+
+	/**
+	 * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Validate Var In Out Subapp Network' of 'Var Declaration'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final int VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_NETWORK = 28;
+
+	/**
 	 * A constant with a fixed name that can be used as the base value for additional hand written constants.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 26;
+	private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 28;
 
 	/**
 	 * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.
@@ -616,6 +634,10 @@
 				return validateTextMethod((TextMethod)value, diagnostics, context);
 			case LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT:
 				return validateTypedConfigureableObject((TypedConfigureableObject)value, diagnostics, context);
+			case LibraryElementPackage.TYPED_SUB_APP:
+				return validateTypedSubApp((TypedSubApp)value, diagnostics, context);
+			case LibraryElementPackage.UNTYPED_SUB_APP:
+				return validateUntypedSubApp((UntypedSubApp)value, diagnostics, context);
 			case LibraryElementPackage.VALUE:
 				return validateValue((Value)value, diagnostics, context);
 			case LibraryElementPackage.VAR_DECLARATION:
@@ -1919,6 +1941,8 @@
 		if (result || diagnostics != null) result &= validateVarDeclaration_validateValueForGenericInstanceVariable(localVariable, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSourceTypeIsWellDefined(localVariable, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutIsWithed(localVariable, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappInterface(localVariable, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappNetwork(localVariable, diagnostics, context);
 		return result;
 	}
 
@@ -2508,6 +2532,46 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public boolean validateTypedSubApp(TypedSubApp typedSubApp, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		if (!validate_NoCircularContainment(typedSubApp, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validateFBNetworkElement_validateName(typedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validateTypedConfigureableObject_validateType(typedSubApp, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateUntypedSubApp(UntypedSubApp untypedSubApp, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		if (!validate_NoCircularContainment(untypedSubApp, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validateFBNetworkElement_validateName(untypedSubApp, diagnostics, context);
+		if (result || diagnostics != null) result &= validateTypedConfigureableObject_validateType(untypedSubApp, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean validateValue(Value value, DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return validate_EveryDefaultConstraint(value, diagnostics, context);
 	}
@@ -2534,6 +2598,8 @@
 		if (result || diagnostics != null) result &= validateVarDeclaration_validateValueForGenericInstanceVariable(varDeclaration, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSourceTypeIsWellDefined(varDeclaration, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutIsWithed(varDeclaration, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappInterface(varDeclaration, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappNetwork(varDeclaration, diagnostics, context);
 		return result;
 	}
 
@@ -2588,6 +2654,26 @@
 	}
 
 	/**
+	 * Validates the validateVarInOutSubappInterface constraint of '<em>Var Declaration</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateVarDeclaration_validateVarInOutSubappInterface(VarDeclaration varDeclaration, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return varDeclaration.validateVarInOutSubappInterface(diagnostics, context);
+	}
+
+	/**
+	 * Validates the validateVarInOutSubappNetwork constraint of '<em>Var Declaration</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateVarDeclaration_validateVarInOutSubappNetwork(VarDeclaration varDeclaration, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return varDeclaration.validateVarInOutSubappNetwork(diagnostics, context);
+	}
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java
index 344f9cf..da20e0d 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java
@@ -30,6 +30,8 @@
 	public static String ConnectionAnnotations_DestinationElementMissing;
 	public static String ConnectionAnnotations_DestinationEndpointMissing;
 	public static String ConnectionAnnotations_DuplicateConnection;
+
+	public static String ConnectionAnnotations_GenericEndpoints;
 	public static String ConnectionAnnotations_SourceElementMissing;
 	public static String ConnectionAnnotations_SourceEndpointMissing;
 	public static String ConnectionAnnotations_TypeMismatch;
@@ -118,6 +120,12 @@
 
 	public static String VarDeclarationAnnotations_ShouldSpecifyValueForGenericVariableInInstance;
 
+	public static String VarDeclarationAnnotations_VarInOutLeftNotConnected;
+
+	public static String VarDeclarationAnnotations_VarInOutRightNotConnected;
+
+	public static String VarDeclarationAnnotations_VarInOutSubappNetwork;
+
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java
index ad693d6..dba519b 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java
@@ -14,13 +14,13 @@
 
 import org.eclipse.fordiac.ide.model.helpers.FBNetworkHelper;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
 
 public final class SubAppAnnotations {
 
-	public static FBNetwork loadSubAppNetwork(final SubApp subApp) {
+	public static FBNetwork loadSubAppNetwork(final TypedSubApp subApp) {
 		FBNetwork subAppNetwork = subApp.getSubAppNetwork();
-		if ((null == subAppNetwork) && (subApp.isTyped())) {
+		if (null == subAppNetwork) {
 			subAppNetwork = FBNetworkHelper.copyFBNetWork(subApp.getType().getFBNetwork(), subApp.getInterface());
 			subApp.setSubAppNetwork(subAppNetwork);
 		}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java
index de20953..a263737 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java
@@ -28,6 +28,8 @@
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 import org.eclipse.fordiac.ide.model.typelibrary.SubAppTypeEntry;
 
@@ -57,13 +59,19 @@
 
 	private void parseSubApp() throws TypeImportException, XMLStreamException {
 		final String type = getAttributeValue(LibraryElementTags.TYPE_ATTRIBUTE);
-		final FBNetworkElement subApp = createSubapp(type);
+		final FBNetworkElement subApp;
+		if (type == null) {
+			subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
+		} else {
+			subApp = createTypedSubapp(type);
+		}
+
 		readNameCommentAttributes(subApp);
 		getXandY(subApp);
 		addFBNetworkElement(subApp);
 
-		if (type == null) {
-			parseUntypedSubapp((SubApp) subApp);
+		if (subApp instanceof final UntypedSubApp untypedSubApp) {
+			parseUntypedSubapp(untypedSubApp);
 		} else {
 			parseFBChildren(subApp, LibraryElementTags.SUBAPP_ELEMENT);
 		}
@@ -80,12 +88,8 @@
 		}
 	}
 
-	public FBNetworkElement createSubapp(final String type) {
-		final FBNetworkElement subApp = LibraryElementFactory.eINSTANCE.createSubApp();
-		if (type == null) {
-			return subApp;
-		}
-
+	public FBNetworkElement createTypedSubapp(final String type) {
+		final TypedSubApp subApp = LibraryElementFactory.eINSTANCE.createTypedSubApp();
 		final SubAppTypeEntry subEntry = addDependency(getTypeLibrary().getSubAppTypeEntry(type));
 		if (subEntry == null) {
 			return addDependency(FordiacMarkerHelper.createTypeErrorMarkerFB(type, getTypeLibrary(),
@@ -96,7 +100,7 @@
 		return subApp;
 	}
 
-	private void parseUntypedSubapp(final SubApp subApp) throws TypeImportException, XMLStreamException {
+	private void parseUntypedSubapp(final UntypedSubApp subApp) throws TypeImportException, XMLStreamException {
 		processChildren(LibraryElementTags.SUBAPP_ELEMENT, name -> (switch (name) {
 		case LibraryElementTags.SUBAPPINTERFACE_LIST_ELEMENT -> {
 			final SubAppTImporter interfaceImporter = new SubAppTImporter(this);
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java
index ed12ad8..4a0b684 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java
@@ -30,7 +30,7 @@
 			return LibraryElementFactory.eINSTANCE.createErrorMarkerFBNElement();
 		}
 		if (entry instanceof SubAppTypeEntry) {
-			return LibraryElementFactory.eINSTANCE.createSubApp();
+			return LibraryElementFactory.eINSTANCE.createTypedSubApp();
 		}
 		if (entry instanceof AdapterTypeEntry) {
 			return LibraryElementFactory.eINSTANCE.createAdapterFB();
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/VarInOutHelper.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/VarInOutHelper.java
new file mode 100644
index 0000000..934c00f
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/VarInOutHelper.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Martin Jobst - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.model.helpers;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
+
+public final class VarInOutHelper {
+
+	/**
+	 * Get the defining InOut variable
+	 * <p>
+	 * The defining InOut variable in a network of connected InOut variables is the
+	 * one that has no input connections.
+	 * <p>
+	 * A special case exists for untyped subapps where the search stops at the
+	 * subapp boundary, indicated by a source endpoint that is an input. When passed
+	 * an InOut variable on the interface of an untyped subapp, this method searches
+	 * the outside for an input variable and the inside for an output variable.
+	 *
+	 * @param varDeclaration The variable to search from
+	 * @return The defining variable
+	 * @apiNote In order to get meaningful results, the variable to search from
+	 *          should be an input variable, except for untyped subapps, where an
+	 *          output variable may also have input connections.
+	 */
+	public static VarDeclaration getDefiningVarInOutDeclaration(VarDeclaration varDeclaration) {
+		final Set<VarDeclaration> visited = new HashSet<>();
+		while (!varDeclaration.getInputConnections().isEmpty()
+				&& varDeclaration.getInputConnections().get(0).getSource() instanceof final VarDeclaration source) {
+			if (source.isIsInput()) {
+				return source; // subapp boundary
+			}
+			varDeclaration = source.getInOutVarOpposite();
+			if (!visited.add(varDeclaration)) {
+				return null; // loop
+			}
+		}
+		return varDeclaration;
+	}
+
+	private VarInOutHelper() {
+		throw new UnsupportedOperationException();
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java
index 893f07a..3530522 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java
@@ -14,16 +14,16 @@
 package org.eclipse.fordiac.ide.model.libraryElement.impl;
 
 import java.text.MessageFormat;
-import java.util.HashSet;
 import java.util.Map;
-import java.util.Set;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.fordiac.ide.model.Messages;
 import org.eclipse.fordiac.ide.model.data.AnyStringType;
+import org.eclipse.fordiac.ide.model.datatype.helper.IecTypes.GenericTypes;
 import org.eclipse.fordiac.ide.model.errormarker.FordiacMarkerHelper;
+import org.eclipse.fordiac.ide.model.helpers.VarInOutHelper;
 import org.eclipse.fordiac.ide.model.libraryElement.Connection;
 import org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerFBNElement;
 import org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerInterface;
@@ -104,7 +104,7 @@
 		if (isDuplicateConnection(connection)) {
 			if (diagnostics != null) {
 				diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
-						LibraryElementValidator.CONNECTION__VALIDATE_MISSING_DESTINATION_ENDPOINT,
+						LibraryElementValidator.CONNECTION__VALIDATE_DUPLICATE,
 						MessageFormat.format(Messages.ConnectionAnnotations_DuplicateConnection,
 								connection.getSource().getQualifiedName(),
 								connection.getDestination().getQualifiedName()),
@@ -120,7 +120,7 @@
 		if (!LinkConstraints.typeCheck(connection.getSource(), connection.getDestination())) {
 			if (diagnostics != null) {
 				diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
-						LibraryElementValidator.CONNECTION__VALIDATE_MISSING_DESTINATION_ENDPOINT,
+						LibraryElementValidator.CONNECTION__VALIDATE_TYPE_MISMATCH,
 						MessageFormat.format(Messages.ConnectionAnnotations_TypeMismatch,
 								connection.getSource().getQualifiedName(), connection.getSource().getFullTypeName(),
 								connection.getDestination().getQualifiedName(),
@@ -129,6 +129,20 @@
 			}
 			return false;
 		}
+		if (connection.getSource() != null && connection.getDestination() != null
+				&& GenericTypes.isAnyType(connection.getSource().getType())
+				&& GenericTypes.isAnyType(connection.getDestination().getType())) {
+			if (diagnostics != null) {
+				diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
+						LibraryElementValidator.CONNECTION__VALIDATE_TYPE_MISMATCH,
+						MessageFormat.format(Messages.ConnectionAnnotations_GenericEndpoints,
+								connection.getSource().getQualifiedName(), connection.getSource().getFullTypeName(),
+								connection.getDestination().getQualifiedName(),
+								connection.getDestination().getFullTypeName()),
+						FordiacMarkerHelper.getDiagnosticData(connection)));
+			}
+			return false;
+		}
 		return true;
 	}
 
@@ -161,7 +175,8 @@
 			final DiagnosticChain diagnostics, final Map<Object, Object> context) {
 		if (connection.getDestination() instanceof final VarDeclaration connectionDestinationVar
 				&& connectionDestinationVar.isInOutVar()) { // If the destination is a VAR_IN_OUT the source is also one
-			final VarDeclaration definingVarDeclaration = getVarInOutSourceVarDeclaration(connection);
+			final VarDeclaration definingVarDeclaration = VarInOutHelper
+					.getDefiningVarInOutDeclaration(connectionDestinationVar);
 			if ((definingVarDeclaration != null && definingVarDeclaration.isArray()
 					&& connectionDestinationVar.isArray())
 					&& !definingVarDeclaration.getArraySize().getValue()
@@ -185,7 +200,8 @@
 			final DiagnosticChain diagnostics, final Map<Object, Object> context) {
 		if (connection.getDestination() instanceof final VarDeclaration connectionDestinationVar
 				&& connectionDestinationVar.isInOutVar()) { // If the destination is a VAR_IN_OUT the source is also one
-			final VarDeclaration definingVarDeclaration = getVarInOutSourceVarDeclaration(connection);
+			final VarDeclaration definingVarDeclaration = VarInOutHelper
+					.getDefiningVarInOutDeclaration(connectionDestinationVar);
 			if (definingVarDeclaration != null
 					&& definingVarDeclaration.getType() instanceof final AnyStringType sourceType
 					&& connectionDestinationVar.getType() instanceof final AnyStringType destinationType
@@ -222,7 +238,8 @@
 
 	public static boolean validateVarInOutConnectionsFormsNoLoop(final Connection connection,
 			final DiagnosticChain diagnostics, final Map<Object, Object> context) {
-		if (hasConnectionAVarInOutLoop(connection)) {
+		if (connection.getDestination() instanceof final VarDeclaration destinationVar && destinationVar.isInOutVar()
+				&& VarInOutHelper.getDefiningVarInOutDeclaration(destinationVar) == null) {
 			if (diagnostics != null) {
 				diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
 						LibraryElementValidator.CONNECTION__VALIDATE_VAR_IN_OUT_CONNECTIONS_FORMS_NO_LOOP,
@@ -234,49 +251,6 @@
 		return true;
 	}
 
-	/**
-	 * Get the VarDeclaration of the first FB in a chain of VAR_IN_OUT connections
-	 *
-	 * @param connection a VAR_IN_OUT connection to start from
-	 * @return The source VarDeclaration
-	 */
-	private static VarDeclaration getVarInOutSourceVarDeclaration(@NonNull final Connection connection) {
-		// Reverse search
-		if (connection.getSource() instanceof final VarDeclaration sourceVar && sourceVar.isInOutVar()) {
-			VarDeclaration outputVarInOut = sourceVar;
-			VarDeclaration inputVarInOut = outputVarInOut.getInOutVarOpposite();
-			final Set<VarDeclaration> visitedPins = new HashSet<>();
-			visitedPins.add(outputVarInOut);
-			while (!inputVarInOut.getInputConnections().isEmpty()) { // no fan in possible
-				outputVarInOut = (VarDeclaration) inputVarInOut.getInputConnections().get(0).getSource();
-				if (!visitedPins.add(outputVarInOut)) {
-					return null; // We revisited an already visited pin
-				}
-				inputVarInOut = outputVarInOut.getInOutVarOpposite();
-			}
-			return inputVarInOut;
-		}
-		return null;
-	}
-
-	private static boolean hasConnectionAVarInOutLoop(@NonNull final Connection connection) {
-		// Reverse search
-		if (connection.getSource() instanceof final VarDeclaration sourceVar && sourceVar.isInOutVar()) {
-			VarDeclaration outputVarInOut = sourceVar;
-			VarDeclaration inputVarInOut = outputVarInOut.getInOutVarOpposite();
-			final Set<VarDeclaration> visitedPins = new HashSet<>();
-			visitedPins.add(outputVarInOut);
-			while (!inputVarInOut.getInputConnections().isEmpty()) { // no fan in possible
-				outputVarInOut = (VarDeclaration) inputVarInOut.getInputConnections().get(0).getSource();
-				if (!visitedPins.add(outputVarInOut)) {
-					return true; // We revisited an already visited pin
-				}
-				inputVarInOut = outputVarInOut.getInOutVarOpposite();
-			}
-		}
-		return false;
-	}
-
 	private static boolean isDuplicateConnection(@NonNull final Connection connection) {
 		return connection.getSource().getOutputConnections().stream().anyMatch(
 				candidate -> candidate != connection && candidate.getDestination() == connection.getDestination());
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java
index 81db8f6..ee78b3c 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java
@@ -22,10 +22,14 @@
 import org.eclipse.fordiac.ide.model.Messages;
 import org.eclipse.fordiac.ide.model.datatype.helper.IecTypes.GenericTypes;
 import org.eclipse.fordiac.ide.model.errormarker.FordiacMarkerHelper;
+import org.eclipse.fordiac.ide.model.helpers.VarInOutHelper;
 import org.eclipse.fordiac.ide.model.libraryElement.FB;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.FBType;
 import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
 import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 import org.eclipse.fordiac.ide.model.libraryElement.util.LibraryElementValidator;
@@ -119,6 +123,45 @@
 		return true;
 	}
 
+	public static boolean validateVarInOutSubappInterface(@NonNull final VarDeclaration varDeclaration,
+			final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+		if (varDeclaration.isInOutVar() && varDeclaration.getFBNetworkElement() instanceof SubApp
+				&& hasAnyOutputConnections(varDeclaration) && !hasAnyInputConnections(varDeclaration)) {
+			if (diagnostics != null) {
+				diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
+						LibraryElementValidator.VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_INTERFACE,
+						MessageFormat.format(
+								varDeclaration.isIsInput() ? Messages.VarDeclarationAnnotations_VarInOutLeftNotConnected
+										: Messages.VarDeclarationAnnotations_VarInOutRightNotConnected,
+								varDeclaration.getName()),
+						FordiacMarkerHelper.getDiagnosticData(varDeclaration)));
+			}
+			return false;
+		}
+		return true;
+	}
+
+	public static boolean validateVarInOutSubappNetwork(@NonNull final VarDeclaration varDeclaration,
+			final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+		if (varDeclaration.isInOutVar() && !varDeclaration.isIsInput()
+				&& (isUntypedSubappInterface(varDeclaration) || isSubappTypeInterface(varDeclaration))
+				&& !varDeclaration.getInOutVarOpposite().getOutputConnections().isEmpty()) {
+			final VarDeclaration source = VarInOutHelper.getDefiningVarInOutDeclaration(varDeclaration);
+			if (source != null && source.eContainer() != varDeclaration.eContainer()) {
+				if (diagnostics != null) {
+					diagnostics
+							.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
+									LibraryElementValidator.VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_NETWORK,
+									MessageFormat.format(Messages.VarDeclarationAnnotations_VarInOutSubappNetwork,
+											varDeclaration.getName()),
+									FordiacMarkerHelper.getDiagnosticData(varDeclaration)));
+				}
+				return false;
+			}
+		}
+		return true;
+	}
+
 	public static VarDeclaration getInOutVarOpposite(@NonNull final VarDeclaration inOutVar) {
 		final InterfaceList interfaceList = (InterfaceList) inOutVar.eContainer();
 		if (inOutVar.isInOutVar()) {
@@ -141,6 +184,36 @@
 				&& interfaceList.eContainer() instanceof SubAppType;
 	}
 
+	static boolean isUntypedSubappInterface(final VarDeclaration varDeclaration) {
+		return varDeclaration.getFBNetworkElement() instanceof final SubApp subapp && !subapp.isTyped();
+	}
+
+	static boolean hasAnyInputConnections(final VarDeclaration varDeclaration) {
+		return varDeclaration != null && (!varDeclaration.getInputConnections().isEmpty()
+				|| !getTypeVariable(varDeclaration).getInputConnections().isEmpty());
+	}
+
+	static boolean hasAnyOutputConnections(final VarDeclaration varDeclaration) {
+		return varDeclaration != null && (!varDeclaration.getOutputConnections().isEmpty()
+				|| !getTypeVariable(varDeclaration).getOutputConnections().isEmpty());
+	}
+
+	public static VarDeclaration getTypeVariable(final VarDeclaration varDeclaration) {
+		if (varDeclaration != null) {
+			final FBNetworkElement fbne = varDeclaration.getFBNetworkElement();
+			if (fbne != null) {
+				final FBType type = fbne.getType();
+				if (type != null) {
+					final VarDeclaration typeVariable = type.getInterfaceList().getVariable(varDeclaration.getName());
+					return typeVariable.isInOutVar() && typeVariable.isIsInput() != varDeclaration.isIsInput()
+							? typeVariable.getInOutVarOpposite()
+							: typeVariable;
+				}
+			}
+		}
+		return varDeclaration;
+	}
+
 	private VarDeclarationAnnotations() {
 		throw new UnsupportedOperationException("Helper class must not be instantiated"); //$NON-NLS-1$
 	}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties
index a896adc..a277652 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties
@@ -21,6 +21,7 @@
 ConnectionAnnotations_DestinationElementMissing=Connection destination element missing: {0}
 ConnectionAnnotations_DestinationEndpointMissing=Connection destination endpoint missing: {0}
 ConnectionAnnotations_DuplicateConnection=Duplicate connection from {0} to {1}
+ConnectionAnnotations_GenericEndpoints=Cannot infer type based on {0} ({1}) and {2} ({3})
 ConnectionAnnotations_SourceElementMissing=Connection source element missing: {0}
 ConnectionAnnotations_SourceEndpointMissing=Connection source endpoint missing: {0}
 ConnectionAnnotations_TypeMismatch=Connection type mismatch from {0} ({1}) to {2} ({3})
@@ -105,3 +106,6 @@
 VarDeclarationAnnotations_MultipleInputConnections=Multiple input connections on variable
 VarDeclarationAnnotations_ShouldNotSpecifyValueForGenericVariableInType=Should not specify a value for variable of generic type in defining type
 VarDeclarationAnnotations_ShouldSpecifyValueForGenericVariableInInstance=Should specify a value for unconnected variable of generic type in instance
+VarDeclarationAnnotations_VarInOutLeftNotConnected=VAR_IN_OUT ''{0}'' must be connected on the left, since it is connected on the inside
+VarDeclarationAnnotations_VarInOutRightNotConnected=VAR_IN_OUT ''{0}'' must not be connected on the right, since it is not connected on the inside
+VarDeclarationAnnotations_VarInOutSubappNetwork=VAR_IN_OUT ''{0}'' must form a single network inside subapp
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java
index b51b6ae..fe3f252 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java
@@ -46,22 +46,18 @@
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Predicate;
-import java.util.stream.Stream;
 
-import org.eclipse.core.internal.resources.ProjectDescription;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.resources.WorkspaceJob;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtension;
 import org.eclipse.core.runtime.IExtensionPoint;
 import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -70,14 +66,11 @@
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.fordiac.ide.gitlab.management.GitLabDownloadManager;
 import org.eclipse.fordiac.ide.gitlab.preferences.PreferenceConstants;
 import org.eclipse.fordiac.ide.library.model.library.Manifest;
 import org.eclipse.fordiac.ide.library.model.library.Required;
-import org.eclipse.fordiac.ide.library.model.library.util.LibraryResourceImpl;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
 import org.eclipse.fordiac.ide.model.FordiacKeywords;
 import org.eclipse.fordiac.ide.model.Messages;
 import org.eclipse.fordiac.ide.model.buildpath.Buildpath;
@@ -111,6 +104,7 @@
 	private final Map<String, SubAppTypeEntry> subAppTypes = new ConcurrentHashMap<>();
 	private final Map<String, SystemEntry> systems = new ConcurrentHashMap<>();
 	private final Map<String, GlobalConstantsEntry> globalConstants = new ConcurrentHashMap<>();
+	private final Map<String, TypeEntry> programTypes = new ConcurrentHashMap<>();
 	private final Map<String, TypeEntry> errorTypes = new ConcurrentHashMap<>();
 	private final Map<IFile, TypeEntry> fileMap = new ConcurrentHashMap<>();
 	private final Map<String, AtomicInteger> packages = new ConcurrentHashMap<>();
@@ -158,6 +152,10 @@
 		return globalConstants;
 	}
 
+	public Map<String, TypeEntry> getProgramTypes() {
+		return Collections.unmodifiableMap(programTypes);
+	}
+
 	public Set<String> getPackages() {
 		return Collections.unmodifiableSet(packages.keySet());
 	}
@@ -227,6 +225,7 @@
 		getSystems().clear();
 		getGlobalConstants().clear();
 		dataTypeLib.clear();
+		programTypes.clear();
 		fileMap.clear();
 		packages.clear();
 		deleteTypeLibraryMarkers(project);
@@ -278,45 +277,38 @@
 	}
 
 	public void checkManifestFile(final IProject project) {
-		final ResourceSet libraryResouceSet = new ResourceSetImpl();
-		final Map<String, Object> loadOptions = new HashMap<>();
 		try {
 			final List<IResource> resources = Arrays.asList(project.members());
 			final Optional<IResource> manifestFile = resources.stream()
 					.filter(res -> res.getName().equals("MANIFEST.MF")).findFirst(); //$NON-NLS-1$
 			if (manifestFile.isPresent()) {
-				final Resource resource = new LibraryResourceImpl(
-						URI.createURI(manifestFile.get().getLocationURI().toString()));
-				libraryResouceSet.getResources().add(resource);
-				resource.load(loadOptions);
-				final Manifest manifest = (Manifest) resource.getContents().get(0);
+				final Manifest manifest = ManifestHelper
+						.getManifest(URI.createURI(manifestFile.get().getLocationURI().toString()));
+				Map<String, List<String>> projectLibs;
 
-				final Optional<IResource> projectFile = resources.stream()
-						.filter(res -> ".project".equals(res.getName())).findFirst(); //$NON-NLS-1$
-
-				final ProjectDescription projectDescription = (ProjectDescription) ResourcesPlugin.getWorkspace()
-						.loadProjectDescription(projectFile.get().getLocation());
-
-				Map<String, List<String>> projectLibs = new HashMap<>();
-				if (projectDescription.getLinks() != null) {
-					projectLibs = parseLibraryNameAndVersion(
-							projectDescription.getLinks().keySet().stream().map(IPath::lastSegment).toList());
+				final IResource typeLib = project.findMember("Type Library"); //$NON-NLS-1$
+				if (typeLib != null && typeLib instanceof final IFolder typeLibFolder) {
+					projectLibs = parseLibraryNameAndVersion(Arrays.asList(typeLibFolder.members()).stream()
+							.filter(fol -> fol.isLinked() && fol instanceof IFolder).map(IFolder.class::cast).toList());
+				} else {
+					projectLibs = new HashMap<>();
 				}
 
-				if (manifest.getScope() != null && "Project".equals(manifest.getScope())) { //$NON-NLS-1$
-					for (final Required req : manifest.getDependencies().getRequired()) {
-						loadLibLinker(req, projectLibs, project);
+				if (manifest != null && ManifestHelper.isProject(manifest) && manifest.getDependencies() != null) {
+					final ILibraryLinker libLinker = loadLibLinker();
+					if (libLinker != null) {
+						for (final Required req : manifest.getDependencies().getRequired()) {
+							checkLibrary(libLinker, req, projectLibs, project);
+						}
 					}
 				}
 			}
 		} catch (final CoreException e) {
 			FordiacLogHelper.logError(Messages.TypeLibrary_ProjectLoadingProblem, e);
-		} catch (final IOException e) {
-			FordiacLogHelper.logError(Messages.TypeLibrary_LibraryLoadingProblem, e);
 		}
 	}
 
-	void loadLibLinker(final Required lib, final Map<String, List<String>> projectLibs, final IProject project) {
+	static ILibraryLinker loadLibLinker() {
 		final IExtensionRegistry registry = Platform.getExtensionRegistry();
 		final IExtensionPoint point = registry
 				.getExtensionPoint("org.eclipse.fordiac.ide.model.libraryLinkerExtension"); //$NON-NLS-1$
@@ -327,13 +319,14 @@
 				try {
 					final Object obj = element.createExecutableExtension("class"); //$NON-NLS-1$
 					if (obj instanceof final ILibraryLinker libLinker) {
-						checkLibrary(libLinker, lib, projectLibs, project);
+						return libLinker;
 					}
 				} catch (final Exception e) {
 					FordiacLogHelper.logError(e.getMessage(), e);
 				}
 			}
 		}
+		return null;
 	}
 
 	void checkLibrary(final ILibraryLinker libLinker, final Required lib, final Map<String, List<String>> projectLibs,
@@ -361,8 +354,7 @@
 		} else {
 			// check local lib
 			final List<File> libDir = Arrays.asList(libLinker.listExtractedFiles());
-			final Map<String, List<String>> localLibs = parseLibraryNameAndVersion(
-					libDir.stream().map(File::getName).toList());
+			final Map<String, List<String>> localLibs = parseLocalLibraryNameAndVersion(libDir);
 
 			if (localLibs.containsKey(lib.getSymbolicName()) && localLibs.get(lib.getSymbolicName()).stream()
 					.anyMatch(l -> compareVersion(lib.getVersion(), l))) {
@@ -399,20 +391,38 @@
 		}
 	}
 
-	static Map<String, List<String>> parseLibraryNameAndVersion(final List<String> libs) {
-
+	static Map<String, List<String>> parseLibraryNameAndVersion(final List<IFolder> libs) {
 		final Map<String, List<String>> nameVersionMap = new HashMap<>();
-		String name;
-		String version;
-		for (final String lib : libs) {
-			if (lib.lastIndexOf("-") != -1) { //$NON-NLS-1$
-				name = lib.substring(0, lib.lastIndexOf("-")); //$NON-NLS-1$
-				version = lib.substring(lib.lastIndexOf("-") + 1, lib.length()); //$NON-NLS-1$
-			} else {
-				name = lib;
-				version = "0.0.0"; //$NON-NLS-1$
+		for (final IFolder lib : libs) {
+			final Manifest manifest = ManifestHelper.getContainerManifest(lib);
+			if (manifest == null || !ManifestHelper.isLibrary(manifest)) {
+				continue;
 			}
 
+			final String name = manifest.getProduct().getName();
+			final String version = manifest.getProduct().getVersionInfo().getVersion();
+
+			if (nameVersionMap.containsKey(name)) {
+				nameVersionMap.get(name).add(version);
+			} else {
+				nameVersionMap.put(name, new ArrayList<>(Arrays.asList(version)));
+			}
+		}
+
+		return nameVersionMap;
+	}
+
+	static Map<String, List<String>> parseLocalLibraryNameAndVersion(final List<File> libs) {
+		final Map<String, List<String>> nameVersionMap = new HashMap<>();
+		for (final File lib : libs) {
+			final Manifest manifest = ManifestHelper.getFolderManifest(lib);
+			if (manifest == null || !ManifestHelper.isLibrary(manifest)) {
+				continue;
+			}
+
+			final String name = manifest.getProduct().getName();
+			final String version = manifest.getProduct().getVersionInfo().getVersion();
+
 			if (nameVersionMap.containsKey(name)) {
 				nameVersionMap.get(name).add(version);
 			} else {
@@ -495,6 +505,9 @@
 				handleDuplicateTypeName(entry);
 			}
 		}
+		if (isProgramTypeEntry(entry) && programTypes.putIfAbsent(entry.getFullTypeName(), entry) != null) {
+			handleDuplicateTypeName(entry);
+		}
 		addPackageNameReference(PackageNameHelper.extractPackageName(entry.getFullTypeName()));
 	}
 
@@ -522,6 +535,9 @@
 		} else {
 			removeBlockTypeEntry(entry);
 		}
+		if (isProgramTypeEntry(entry)) {
+			programTypes.remove(entry.getFullTypeName(), entry);
+		}
 		removePackageNameReference(PackageNameHelper.extractPackageName(entry.getFullTypeName()));
 		deleteTypeLibraryMarkers(entry.getFile());
 		retryDuplicates();
@@ -618,30 +634,12 @@
 	}
 
 	public TypeEntry find(final String name) {
-		TypeEntry entry = getSubAppTypeEntry(name);
-		if (entry != null) {
-			return entry;
-		}
-
-		entry = getFBTypeEntry(name);
-		if (entry != null) {
-			return entry;
-		}
-
-		entry = dataTypeLib.getDerivedTypeEntry(name);
-		if (entry != null) {
-			return entry;
-		}
-
-		return getAdapterTypeEntry(name);
+		return programTypes.get(name);
 	}
 
 	public List<TypeEntry> findUnqualified(final String name) {
 		final String unqualifiedName = PackageNameHelper.extractPlainTypeName(name);
-		return Stream
-				.of(getSubAppTypes().values(), getFbTypes().values(), dataTypeLib.getDerivedDataTypes(),
-						getAdapterTypes().values())
-				.<TypeEntry>flatMap(Collection::stream).filter(entry -> unqualifiedName.equals(entry.getTypeName()))
+		return programTypes.values().stream().filter(entry -> unqualifiedName.equalsIgnoreCase(entry.getTypeName()))
 				.toList();
 	}
 
@@ -701,6 +699,10 @@
 		}
 	}
 
+	private static boolean isProgramTypeEntry(final TypeEntry entry) {
+		return entry instanceof FBTypeEntry || entry instanceof SubAppTypeEntry || entry instanceof DataTypeEntry;
+	}
+
 	private static void createTypeLibraryMarker(final IResource resource, final String message) {
 		FordiacMarkerHelper.createMarkers(resource, List.of(
 				ErrorMarkerBuilder.createErrorMarkerBuilder(message).setType(FordiacErrorMarker.TYPE_LIBRARY_MARKER)));
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF
index 72e8459..da0a871 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.monitoring;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.monitoring
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Activator: org.eclipse.fordiac.ide.monitoring.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java
index 8aabbc6..5ee603a 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java
@@ -53,14 +53,22 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getComment <em>Comment</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getAttributes <em>Attributes</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#isIsInput <em>Is Input</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getInputConnections <em>Input Connections</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getOutputConnections <em>Output Connections</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getType <em>Type</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getWith <em>With</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getName
+ * <em>Name</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getComment
+ * <em>Comment</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getAttributes
+ * <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#isIsInput
+ * <em>Is Input</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getInputConnections
+ * <em>Input Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getOutputConnections
+ * <em>Output Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getType
+ * <em>Type</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getWith
+ * <em>With</em>}</li>
  * </ul>
  *
  * @generated
@@ -89,6 +97,7 @@
 	/**
 	 * The default value of the '{@link #getComment() <em>Comment</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getComment()
 	 * @generated
 	 * @ordered
@@ -98,6 +107,7 @@
 	/**
 	 * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getComment()
 	 * @generated
 	 * @ordered
@@ -105,8 +115,9 @@
 	protected String comment = COMMENT_EDEFAULT;
 
 	/**
-	 * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached value of the '{@link #getAttributes() <em>Attributes</em>}'
+	 * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getAttributes()
 	 * @generated
 	 * @ordered
@@ -116,6 +127,7 @@
 	/**
 	 * The default value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #isIsInput()
 	 * @generated
 	 * @ordered
@@ -125,6 +137,7 @@
 	/**
 	 * The cached value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #isIsInput()
 	 * @generated
 	 * @ordered
@@ -164,8 +177,9 @@
 	protected DataType type;
 
 	/**
-	 * The cached value of the '{@link #getWith() <em>With</em>}' containment reference list.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached value of the '{@link #getWith() <em>With</em>}' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getWith()
 	 * @generated
 	 * @ordered
@@ -174,14 +188,15 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected AdapterMonitoringEventImpl() {
-		super();
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -191,6 +206,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -200,18 +216,22 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setName(String newName) {
-		String oldName = name;
+	public void setName(final String newName) {
+		final String oldName = name;
 		name = newName;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME, oldName, name));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME,
+					oldName, name));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -221,30 +241,36 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setComment(String newComment) {
-		String oldComment = comment;
+	public void setComment(final String newComment) {
+		final String oldComment = comment;
 		comment = newComment;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT, oldComment, comment));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT,
+					oldComment, comment));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<Attribute> getAttributes() {
 		if (attributes == null) {
-			attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES);
+			attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES);
 		}
 		return attributes;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -254,24 +280,28 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setIsInput(boolean newIsInput) {
-		boolean oldIsInput = isInput;
+	public void setIsInput(final boolean newIsInput) {
+		final boolean oldIsInput = isInput;
 		isInput = newIsInput;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT, oldIsInput, isInput));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT,
+					oldIsInput, isInput));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getTypeName() {
-		org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
-		if(type != null){
+		final org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
+		if (type != null) {
 			return type.getName();
 		}
 		return null;
@@ -279,6 +309,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -288,58 +319,69 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateType(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics,
+				context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateName(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this,
+				diagnostics, context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<Connection> getInputConnections() {
 		if (inputConnections == null) {
-			inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__DESTINATION);
+			inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS,
+					LibraryElementPackage.CONNECTION__DESTINATION);
 		}
 		return inputConnections;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<Connection> getOutputConnections() {
 		if (outputConnections == null) {
-			outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__SOURCE);
+			outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS,
+					LibraryElementPackage.CONNECTION__SOURCE);
 		}
 		return outputConnections;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public DataType getType() {
 		if (type != null && type.eIsProxy()) {
-			InternalEObject oldType = (InternalEObject)type;
-			type = (DataType)eResolveProxy(oldType);
-			if (type != oldType) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE, oldType, type));
+			final InternalEObject oldType = (InternalEObject) type;
+			type = (DataType) eResolveProxy(oldType);
+			if ((type != oldType) && eNotificationRequired()) {
+				eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+						MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE, oldType, type));
 			}
 		}
 		return type;
@@ -347,6 +389,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public DataType basicGetType() {
@@ -355,30 +398,36 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setType(DataType newType) {
-		DataType oldType = type;
+	public void setType(final DataType newType) {
+		final DataType oldType = type;
 		type = newType;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE, oldType, type));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE,
+					oldType, type));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<With> getWith() {
 		if (with == null) {
-			with = new EObjectContainmentEList<>(With.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH);
+			with = new EObjectContainmentEList<>(With.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH);
 		}
 		return with;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -388,6 +437,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -397,6 +447,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -406,6 +457,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -415,6 +467,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -424,15 +477,17 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setVisible(final boolean visible) {
-		org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this,visible);
+		org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this, visible);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -442,6 +497,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -451,17 +507,19 @@
 	}
 
 	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value, final String comment) {
+	public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value,
+			final String comment) {
 		org.eclipse.fordiac.ide.model.Annotations.setAttribute(this, attributeDeclaration, value, comment);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -471,6 +529,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -480,6 +539,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -489,6 +549,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -498,290 +559,287 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
 	@Override
-	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
-				return ((InternalEList<InternalEObject>)(InternalEList<?>)getInputConnections()).basicAdd(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
-				return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutputConnections()).basicAdd(otherEnd, msgs);
-			default:
-				return super.eInverseAdd(otherEnd, featureID, msgs);
-		}
+	public NotificationChain eInverseAdd(final InternalEObject otherEnd, final int featureID,
+			final NotificationChain msgs) {
+		return switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> ((InternalEList<InternalEObject>) (InternalEList<?>) getInputConnections()).basicAdd(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> ((InternalEList<InternalEObject>) (InternalEList<?>) getOutputConnections()).basicAdd(otherEnd,
+							msgs);
+		default -> super.eInverseAdd(otherEnd, featureID, msgs);
+		};
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
-				return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
-				return ((InternalEList<?>)getInputConnections()).basicRemove(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
-				return ((InternalEList<?>)getOutputConnections()).basicRemove(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
-				return ((InternalEList<?>)getWith()).basicRemove(otherEnd, msgs);
-			default:
-				return super.eInverseRemove(otherEnd, featureID, msgs);
-		}
+	public NotificationChain eInverseRemove(final InternalEObject otherEnd, final int featureID,
+			final NotificationChain msgs) {
+		return switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES -> ((InternalEList<?>) getAttributes()).basicRemove(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> ((InternalEList<?>) getInputConnections()).basicRemove(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> ((InternalEList<?>) getOutputConnections()).basicRemove(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH -> ((InternalEList<?>) getWith()).basicRemove(otherEnd, msgs);
+		default -> super.eInverseRemove(otherEnd, featureID, msgs);
+		};
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+	public Object eGet(final int featureID, final boolean resolve, final boolean coreType) {
 		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
-				return getName();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
-				return getComment();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
-				return getAttributes();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
-				return isIsInput();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
-				return getInputConnections();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
-				return getOutputConnections();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
-				if (resolve) return getType();
-				return basicGetType();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
-				return getWith();
-			default:
-				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 MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
-				setName((String)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
-				setComment((String)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
-				getAttributes().clear();
-				getAttributes().addAll((Collection<? extends Attribute>)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
-				setIsInput((Boolean)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
-				getInputConnections().clear();
-				getInputConnections().addAll((Collection<? extends Connection>)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
-				getOutputConnections().clear();
-				getOutputConnections().addAll((Collection<? extends Connection>)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
-				setType((DataType)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
-				getWith().clear();
-				getWith().addAll((Collection<? extends With>)newValue);
-				return;
-			default:
-				super.eSet(featureID, newValue);
-				return;
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
-				setName(NAME_EDEFAULT);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
-				setComment(COMMENT_EDEFAULT);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
-				getAttributes().clear();
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
-				setIsInput(IS_INPUT_EDEFAULT);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
-				getInputConnections().clear();
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
-				getOutputConnections().clear();
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
-				setType((DataType)null);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
-				getWith().clear();
-				return;
-			default:
-				super.eUnset(featureID);
-				return;
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
-				return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
-				return attributes != null && !attributes.isEmpty();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
-				return isInput != IS_INPUT_EDEFAULT;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
-				return inputConnections != null && !inputConnections.isEmpty();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
-				return outputConnections != null && !outputConnections.isEmpty();
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
-				return type != null;
-			case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
-				return with != null && !with.isEmpty();
-			default:
-				return super.eIsSet(featureID);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
-		if (baseClass == INamedElement.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME: return LibraryElementPackage.INAMED_ELEMENT__NAME;
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT: return LibraryElementPackage.INAMED_ELEMENT__COMMENT;
-				default: return -1;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
+			return getName();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
+			return getComment();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
+			return getAttributes();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
+			return isIsInput();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
+			return getInputConnections();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
+			return getOutputConnections();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
+			if (resolve) {
+				return getType();
 			}
+			return basicGetType();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
+			return getWith();
+		default:
+			return super.eGet(featureID, resolve, coreType);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(final int featureID, final Object newValue) {
+		switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
+			setName((String) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
+			setComment((String) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
+			getAttributes().clear();
+			getAttributes().addAll((Collection<? extends Attribute>) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
+			setIsInput((Boolean) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
+			getInputConnections().clear();
+			getInputConnections().addAll((Collection<? extends Connection>) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
+			getOutputConnections().clear();
+			getOutputConnections().addAll((Collection<? extends Connection>) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
+			setType((DataType) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
+			getWith().clear();
+			getWith().addAll((Collection<? extends With>) newValue);
+			return;
+		default:
+			super.eSet(featureID, newValue);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(final int featureID) {
+		switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
+			setComment(COMMENT_EDEFAULT);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
+			getAttributes().clear();
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
+			setIsInput(IS_INPUT_EDEFAULT);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
+			getInputConnections().clear();
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
+			getOutputConnections().clear();
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
+			setType((DataType) null);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
+			getWith().clear();
+			return;
+		default:
+			super.eUnset(featureID);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(final int featureID) {
+		return switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME -> NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT -> COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES -> attributes != null && !attributes.isEmpty();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT -> isInput != IS_INPUT_EDEFAULT;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> inputConnections != null && !inputConnections.isEmpty();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> outputConnections != null && !outputConnections.isEmpty();
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE -> type != null;
+		case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH -> with != null && !with.isEmpty();
+		default -> super.eIsSet(featureID);
+		};
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(final int derivedFeatureID, final Class<?> baseClass) {
+		if (baseClass == INamedElement.class) {
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME -> LibraryElementPackage.INAMED_ELEMENT__NAME;
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT -> LibraryElementPackage.INAMED_ELEMENT__COMMENT;
+			default -> -1;
+			};
 		}
 		if (baseClass == ITypedElement.class) {
-			switch (derivedFeatureID) {
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == ConfigurableObject.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES: return LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES -> LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
+			default -> -1;
+			};
 		}
 		if (baseClass == HiddenElement.class) {
-			switch (derivedFeatureID) {
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == IInterfaceElement.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT: return LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE: return LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT -> LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE -> LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
+			default -> -1;
+			};
 		}
 		if (baseClass == ICallable.class) {
-			switch (derivedFeatureID) {
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == Event.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH: return LibraryElementPackage.EVENT__WITH;
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH -> LibraryElementPackage.EVENT__WITH;
+			default -> -1;
+			};
 		}
 		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+	public int eDerivedStructuralFeatureID(final int baseFeatureID, final Class<?> baseClass) {
 		if (baseClass == INamedElement.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.INAMED_ELEMENT__NAME: return MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME;
-				case LibraryElementPackage.INAMED_ELEMENT__COMMENT: return MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.INAMED_ELEMENT__NAME -> MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME;
+			case LibraryElementPackage.INAMED_ELEMENT__COMMENT -> MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT;
+			default -> -1;
+			};
 		}
 		if (baseClass == ITypedElement.class) {
-			switch (baseFeatureID) {
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == ConfigurableObject.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES: return MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES -> MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES;
+			default -> -1;
+			};
 		}
 		if (baseClass == HiddenElement.class) {
-			switch (baseFeatureID) {
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == IInterfaceElement.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT: return MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT;
-				case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS;
-				case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS;
-				case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE: return MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT -> MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT;
+			case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS;
+			case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS;
+			case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE -> MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE;
+			default -> -1;
+			};
 		}
 		if (baseClass == ICallable.class) {
-			switch (baseFeatureID) {
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == Event.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.EVENT__WITH: return MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.EVENT__WITH -> MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH;
+			default -> -1;
+			};
 		}
 		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy()) return super.toString();
+		if (eIsProxy()) {
+			return super.toString();
+		}
 
-		StringBuilder result = new StringBuilder(super.toString());
+		final StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (name: "); //$NON-NLS-1$
 		result.append(name);
 		result.append(", comment: "); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java
index 80a77b5..af0b8d6 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java
@@ -55,16 +55,26 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getComment <em>Comment</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getAttributes <em>Attributes</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#isIsInput <em>Is Input</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getInputConnections <em>Input Connections</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getOutputConnections <em>Output Connections</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getType <em>Type</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getArraySize <em>Array Size</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getWiths <em>Withs</em>}</li>
- *   <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getName
+ * <em>Name</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getComment
+ * <em>Comment</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getAttributes
+ * <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#isIsInput
+ * <em>Is Input</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getInputConnections
+ * <em>Input Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getOutputConnections
+ * <em>Output Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getType
+ * <em>Type</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getArraySize
+ * <em>Array Size</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getWiths
+ * <em>Withs</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getValue
+ * <em>Value</em>}</li>
  * </ul>
  *
  * @generated
@@ -93,6 +103,7 @@
 	/**
 	 * The default value of the '{@link #getComment() <em>Comment</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getComment()
 	 * @generated
 	 * @ordered
@@ -102,6 +113,7 @@
 	/**
 	 * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getComment()
 	 * @generated
 	 * @ordered
@@ -109,8 +121,9 @@
 	protected String comment = COMMENT_EDEFAULT;
 
 	/**
-	 * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached value of the '{@link #getAttributes() <em>Attributes</em>}'
+	 * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getAttributes()
 	 * @generated
 	 * @ordered
@@ -120,6 +133,7 @@
 	/**
 	 * The default value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #isIsInput()
 	 * @generated
 	 * @ordered
@@ -129,6 +143,7 @@
 	/**
 	 * The cached value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #isIsInput()
 	 * @generated
 	 * @ordered
@@ -168,8 +183,9 @@
 	protected DataType type;
 
 	/**
-	 * The cached value of the '{@link #getArraySize() <em>Array Size</em>}' containment reference.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached value of the '{@link #getArraySize() <em>Array Size</em>}'
+	 * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getArraySize()
 	 * @generated
 	 * @ordered
@@ -179,6 +195,7 @@
 	/**
 	 * The cached value of the '{@link #getWiths() <em>Withs</em>}' reference list.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getWiths()
 	 * @generated
 	 * @ordered
@@ -186,8 +203,9 @@
 	protected EList<With> withs;
 
 	/**
-	 * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @see #getValue()
 	 * @generated
 	 * @ordered
@@ -196,14 +214,15 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected AdapterMonitoringVarDeclarationImpl() {
-		super();
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -213,6 +232,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -222,18 +242,22 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setName(String newName) {
-		String oldName = name;
+	public void setName(final String newName) {
+		final String oldName = name;
 		name = newName;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME, oldName, name));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME, oldName, name));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -243,30 +267,36 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setComment(String newComment) {
-		String oldComment = comment;
+	public void setComment(final String newComment) {
+		final String oldComment = comment;
 		comment = newComment;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT, oldComment, comment));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT, oldComment, comment));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<Attribute> getAttributes() {
 		if (attributes == null) {
-			attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES);
+			attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES);
 		}
 		return attributes;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -276,34 +306,46 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setIsInput(boolean newIsInput) {
-		boolean oldIsInput = isInput;
+	public void setIsInput(final boolean newIsInput) {
+		final boolean oldIsInput = isInput;
 		isInput = newIsInput;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT, oldIsInput, isInput));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT, oldIsInput, isInput));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Value getValue() {
 		if (value != null && value.eIsProxy()) {
-			InternalEObject oldValue = (InternalEObject)value;
-			value = (Value)eResolveProxy(oldValue);
+			final InternalEObject oldValue = (InternalEObject) value;
+			value = (Value) eResolveProxy(oldValue);
 			if (value != oldValue) {
-				InternalEObject newValue = (InternalEObject)value;
-				NotificationChain msgs = oldValue.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, null);
+				final InternalEObject newValue = (InternalEObject) value;
+				NotificationChain msgs = oldValue.eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+						null);
 				if (newValue.eInternalContainer() == null) {
-					msgs = newValue.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, msgs);
+					msgs = newValue.eInverseAdd(this,
+							EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+							msgs);
 				}
-				if (msgs != null) msgs.dispatch();
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, value));
+				if (msgs != null) {
+					msgs.dispatch();
+				}
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, value));
+				}
 			}
 		}
 		return value;
@@ -311,6 +353,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public Value basicGetValue() {
@@ -319,79 +362,108 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
-	public NotificationChain basicSetValue(Value newValue, NotificationChain msgs) {
-		Value oldValue = value;
+	public NotificationChain basicSetValue(final Value newValue, NotificationChain msgs) {
+		final Value oldValue = value;
 		value = newValue;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, newValue);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, newValue);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setValue(Value newValue) {
+	public void setValue(final Value newValue) {
 		if (newValue != value) {
 			NotificationChain msgs = null;
-			if (value != null)
-				msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, msgs);
-			if (newValue != null)
-				msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, msgs);
+			if (value != null) {
+				msgs = ((InternalEObject) value).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+						msgs);
+			}
+			if (newValue != null) {
+				msgs = ((InternalEObject) newValue).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+						msgs);
+			}
 			msgs = basicSetValue(newValue, msgs);
-			if (msgs != null) msgs.dispatch();
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, newValue, newValue));
 		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, newValue, newValue));
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<Connection> getInputConnections() {
 		if (inputConnections == null) {
-			inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__DESTINATION);
+			inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS,
+					LibraryElementPackage.CONNECTION__DESTINATION);
 		}
 		return inputConnections;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<Connection> getOutputConnections() {
 		if (outputConnections == null) {
-			outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__SOURCE);
+			outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS,
+					LibraryElementPackage.CONNECTION__SOURCE);
 		}
 		return outputConnections;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public ArraySize getArraySize() {
 		if (arraySize != null && arraySize.eIsProxy()) {
-			InternalEObject oldArraySize = (InternalEObject)arraySize;
-			arraySize = (ArraySize)eResolveProxy(oldArraySize);
+			final InternalEObject oldArraySize = (InternalEObject) arraySize;
+			arraySize = (ArraySize) eResolveProxy(oldArraySize);
 			if (arraySize != oldArraySize) {
-				InternalEObject newArraySize = (InternalEObject)arraySize;
-				NotificationChain msgs =  oldArraySize.eInverseRemove(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, null);
+				final InternalEObject newArraySize = (InternalEObject) arraySize;
+				NotificationChain msgs = oldArraySize.eInverseRemove(this,
+						LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, null);
 				if (newArraySize.eInternalContainer() == null) {
-					msgs =  newArraySize.eInverseAdd(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+					msgs = newArraySize.eInverseAdd(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION,
+							ArraySize.class, msgs);
 				}
-				if (msgs != null) msgs.dispatch();
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, arraySize));
+				if (msgs != null) {
+					msgs.dispatch();
+				}
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, arraySize));
+				}
 			}
 		}
 		return arraySize;
@@ -399,6 +471,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public ArraySize basicGetArraySize() {
@@ -407,49 +480,64 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
-	public NotificationChain basicSetArraySize(ArraySize newArraySize, NotificationChain msgs) {
-		ArraySize oldArraySize = arraySize;
+	public NotificationChain basicSetArraySize(final ArraySize newArraySize, NotificationChain msgs) {
+		final ArraySize oldArraySize = arraySize;
 		arraySize = newArraySize;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, newArraySize);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, newArraySize);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setArraySize(ArraySize newArraySize) {
+	public void setArraySize(final ArraySize newArraySize) {
 		if (newArraySize != arraySize) {
 			NotificationChain msgs = null;
-			if (arraySize != null)
-				msgs = ((InternalEObject)arraySize).eInverseRemove(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
-			if (newArraySize != null)
-				msgs = ((InternalEObject)newArraySize).eInverseAdd(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+			if (arraySize != null) {
+				msgs = ((InternalEObject) arraySize).eInverseRemove(this,
+						LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+			}
+			if (newArraySize != null) {
+				msgs = ((InternalEObject) newArraySize).eInverseAdd(this,
+						LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+			}
 			msgs = basicSetArraySize(newArraySize, msgs);
-			if (msgs != null) msgs.dispatch();
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, newArraySize, newArraySize));
 		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, newArraySize, newArraySize));
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public DataType getType() {
 		if (type != null && type.eIsProxy()) {
-			InternalEObject oldType = (InternalEObject)type;
-			type = (DataType)eResolveProxy(oldType);
-			if (type != oldType) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
+			final InternalEObject oldType = (InternalEObject) type;
+			type = (DataType) eResolveProxy(oldType);
+			if ((type != oldType) && eNotificationRequired()) {
+				eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+						MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
 			}
 		}
 		return type;
@@ -457,6 +545,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public DataType basicGetType() {
@@ -465,24 +554,28 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setType(DataType newType) {
-		DataType oldType = type;
+	public void setType(final DataType newType) {
+		final DataType oldType = type;
 		type = newType;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getTypeName() {
-		org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
-		if(type != null){
+		final org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
+		if (type != null) {
 			return type.getName();
 		}
 		return null;
@@ -490,36 +583,43 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateType(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics,
+				context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateName(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this,
+				diagnostics, context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EList<With> getWiths() {
 		if (withs == null) {
-			withs = new EObjectWithInverseResolvingEList<>(With.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS, LibraryElementPackage.WITH__VARIABLES);
+			withs = new EObjectWithInverseResolvingEList<>(With.class, this,
+					MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS, LibraryElementPackage.WITH__VARIABLES);
 		}
 		return withs;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -529,6 +629,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -538,15 +639,17 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setVisible(final boolean visible) {
-		org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this,visible);
+		org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this, visible);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -556,6 +659,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -565,17 +669,19 @@
 	}
 
 	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value, final String comment) {
+	public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value,
+			final String comment) {
 		org.eclipse.fordiac.ide.model.Annotations.setAttribute(this, attributeDeclaration, value, comment);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -585,6 +691,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -594,6 +701,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -603,6 +711,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -612,316 +721,318 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
 	@Override
-	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+	public NotificationChain eInverseAdd(final InternalEObject otherEnd, final int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
-				return ((InternalEList<InternalEObject>)(InternalEList<?>)getInputConnections()).basicAdd(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
-				return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutputConnections()).basicAdd(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
-				if (arraySize != null)
-					msgs = ((InternalEObject)arraySize).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, null, msgs);
-				return basicSetArraySize((ArraySize)otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
-				return ((InternalEList<InternalEObject>)(InternalEList<?>)getWiths()).basicAdd(otherEnd, msgs);
-			default:
-				return super.eInverseAdd(otherEnd, featureID, msgs);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
-				return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
-				return ((InternalEList<?>)getInputConnections()).basicRemove(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
-				return ((InternalEList<?>)getOutputConnections()).basicRemove(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
-				return basicSetArraySize(null, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
-				return ((InternalEList<?>)getWiths()).basicRemove(otherEnd, msgs);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
-				return basicSetValue(null, msgs);
-			default:
-				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 MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
-				return getName();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
-				return getComment();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
-				return getAttributes();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
-				return isIsInput();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
-				return getInputConnections();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
-				return getOutputConnections();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
-				if (resolve) return getType();
-				return basicGetType();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
-				if (resolve) return getArraySize();
-				return basicGetArraySize();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
-				return getWiths();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
-				if (resolve) return getValue();
-				return basicGetValue();
-			default:
-				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 MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
-				setName((String)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
-				setComment((String)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
-				getAttributes().clear();
-				getAttributes().addAll((Collection<? extends Attribute>)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
-				setIsInput((Boolean)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
-				getInputConnections().clear();
-				getInputConnections().addAll((Collection<? extends Connection>)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
-				getOutputConnections().clear();
-				getOutputConnections().addAll((Collection<? extends Connection>)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
-				setType((DataType)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
-				setArraySize((ArraySize)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
-				getWiths().clear();
-				getWiths().addAll((Collection<? extends With>)newValue);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
-				setValue((Value)newValue);
-				return;
-			default:
-				super.eSet(featureID, newValue);
-				return;
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
-				setName(NAME_EDEFAULT);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
-				setComment(COMMENT_EDEFAULT);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
-				getAttributes().clear();
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
-				setIsInput(IS_INPUT_EDEFAULT);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
-				getInputConnections().clear();
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
-				getOutputConnections().clear();
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
-				setType((DataType)null);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
-				setArraySize((ArraySize)null);
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
-				getWiths().clear();
-				return;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
-				setValue((Value)null);
-				return;
-			default:
-				super.eUnset(featureID);
-				return;
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
-				return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
-				return attributes != null && !attributes.isEmpty();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
-				return isInput != IS_INPUT_EDEFAULT;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
-				return inputConnections != null && !inputConnections.isEmpty();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
-				return outputConnections != null && !outputConnections.isEmpty();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
-				return type != null;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
-				return arraySize != null;
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
-				return withs != null && !withs.isEmpty();
-			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
-				return value != null;
-			default:
-				return super.eIsSet(featureID);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
-		if (baseClass == INamedElement.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME: return LibraryElementPackage.INAMED_ELEMENT__NAME;
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT: return LibraryElementPackage.INAMED_ELEMENT__COMMENT;
-				default: return -1;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getInputConnections()).basicAdd(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutputConnections()).basicAdd(otherEnd,
+					msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+			if (arraySize != null) {
+				msgs = ((InternalEObject) arraySize).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, null,
+						msgs);
 			}
+			return basicSetArraySize((ArraySize) otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getWiths()).basicAdd(otherEnd, msgs);
+		default:
+			return super.eInverseAdd(otherEnd, featureID, msgs);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(final InternalEObject otherEnd, final int featureID,
+			final NotificationChain msgs) {
+		return switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES -> ((InternalEList<?>) getAttributes()).basicRemove(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS -> ((InternalEList<?>) getInputConnections()).basicRemove(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS -> ((InternalEList<?>) getOutputConnections()).basicRemove(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE -> basicSetArraySize(null, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS -> ((InternalEList<?>) getWiths()).basicRemove(otherEnd, msgs);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE -> basicSetValue(null, msgs);
+		default -> super.eInverseRemove(otherEnd, featureID, msgs);
+		};
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(final int featureID, final boolean resolve, final boolean coreType) {
+		switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
+			return getName();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
+			return getComment();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
+			return getAttributes();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
+			return isIsInput();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+			return getInputConnections();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+			return getOutputConnections();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
+			if (resolve) {
+				return getType();
+			}
+			return basicGetType();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+			if (resolve) {
+				return getArraySize();
+			}
+			return basicGetArraySize();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+			return getWiths();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
+			if (resolve) {
+				return getValue();
+			}
+			return basicGetValue();
+		default:
+			return super.eGet(featureID, resolve, coreType);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(final int featureID, final Object newValue) {
+		switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
+			setName((String) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
+			setComment((String) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
+			getAttributes().clear();
+			getAttributes().addAll((Collection<? extends Attribute>) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
+			setIsInput((Boolean) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+			getInputConnections().clear();
+			getInputConnections().addAll((Collection<? extends Connection>) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+			getOutputConnections().clear();
+			getOutputConnections().addAll((Collection<? extends Connection>) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
+			setType((DataType) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+			setArraySize((ArraySize) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+			getWiths().clear();
+			getWiths().addAll((Collection<? extends With>) newValue);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
+			setValue((Value) newValue);
+			return;
+		default:
+			super.eSet(featureID, newValue);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(final int featureID) {
+		switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
+			setComment(COMMENT_EDEFAULT);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
+			getAttributes().clear();
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
+			setIsInput(IS_INPUT_EDEFAULT);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+			getInputConnections().clear();
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+			getOutputConnections().clear();
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
+			setType((DataType) null);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+			setArraySize((ArraySize) null);
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+			getWiths().clear();
+			return;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
+			setValue((Value) null);
+			return;
+		default:
+			super.eUnset(featureID);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(final int featureID) {
+		return switch (featureID) {
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME -> NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT -> COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES -> attributes != null && !attributes.isEmpty();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT -> isInput != IS_INPUT_EDEFAULT;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS -> inputConnections != null && !inputConnections.isEmpty();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS -> outputConnections != null && !outputConnections.isEmpty();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE -> type != null;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE -> arraySize != null;
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS -> withs != null && !withs.isEmpty();
+		case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE -> value != null;
+		default -> super.eIsSet(featureID);
+		};
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(final int derivedFeatureID, final Class<?> baseClass) {
+		if (baseClass == INamedElement.class) {
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME -> LibraryElementPackage.INAMED_ELEMENT__NAME;
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT -> LibraryElementPackage.INAMED_ELEMENT__COMMENT;
+			default -> -1;
+			};
 		}
 		if (baseClass == ITypedElement.class) {
-			switch (derivedFeatureID) {
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == ConfigurableObject.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES: return LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES -> LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
+			default -> -1;
+			};
 		}
 		if (baseClass == HiddenElement.class) {
-			switch (derivedFeatureID) {
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == IInterfaceElement.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT: return LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE: return LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT -> LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE -> LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
+			default -> -1;
+			};
 		}
 		if (baseClass == VarDeclaration.class) {
-			switch (derivedFeatureID) {
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE: return LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE;
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS: return LibraryElementPackage.VAR_DECLARATION__WITHS;
-				case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE: return LibraryElementPackage.VAR_DECLARATION__VALUE;
-				default: return -1;
-			}
+			return switch (derivedFeatureID) {
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE -> LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE;
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS -> LibraryElementPackage.VAR_DECLARATION__WITHS;
+			case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE -> LibraryElementPackage.VAR_DECLARATION__VALUE;
+			default -> -1;
+			};
 		}
 		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+	public int eDerivedStructuralFeatureID(final int baseFeatureID, final Class<?> baseClass) {
 		if (baseClass == INamedElement.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.INAMED_ELEMENT__NAME: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME;
-				case LibraryElementPackage.INAMED_ELEMENT__COMMENT: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.INAMED_ELEMENT__NAME -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME;
+			case LibraryElementPackage.INAMED_ELEMENT__COMMENT -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT;
+			default -> -1;
+			};
 		}
 		if (baseClass == ITypedElement.class) {
-			switch (baseFeatureID) {
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == ConfigurableObject.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES;
+			default -> -1;
+			};
 		}
 		if (baseClass == HiddenElement.class) {
-			switch (baseFeatureID) {
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			default -> -1;
+			};
 		}
 		if (baseClass == IInterfaceElement.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT;
-				case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS;
-				case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS;
-				case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT;
+			case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS;
+			case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS;
+			case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE;
+			default -> -1;
+			};
 		}
 		if (baseClass == VarDeclaration.class) {
-			switch (baseFeatureID) {
-				case LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE;
-				case LibraryElementPackage.VAR_DECLARATION__WITHS: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS;
-				case LibraryElementPackage.VAR_DECLARATION__VALUE: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE;
-				default: return -1;
-			}
+			return switch (baseFeatureID) {
+			case LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE;
+			case LibraryElementPackage.VAR_DECLARATION__WITHS -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS;
+			case LibraryElementPackage.VAR_DECLARATION__VALUE -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE;
+			default -> -1;
+			};
 		}
 		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy()) return super.toString();
+		if (eIsProxy()) {
+			return super.toString();
+		}
 
-		StringBuilder result = new StringBuilder(super.toString());
+		final StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (name: "); //$NON-NLS-1$
 		result.append(name);
 		result.append(", comment: "); //$NON-NLS-1$
@@ -950,6 +1061,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -959,6 +1071,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -968,16 +1081,19 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateVarInOutSourceTypeIsWellDefined(final DiagnosticChain diagnostics,
 			final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSourceTypeIsWellDefined(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+				.validateVarInOutSourceTypeIsWellDefined(this, diagnostics, context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -987,41 +1103,72 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateMultipleInputConnections(final DiagnosticChain diagnostics,
 			final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateMultipleInputConnections(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+				.validateMultipleInputConnections(this, diagnostics, context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateNoValueForGenericTypeVariable(final DiagnosticChain diagnostics,
 			final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateNoValueForGenericTypeVariable(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+				.validateNoValueForGenericTypeVariable(this, diagnostics, context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateValueForGenericInstanceVariable(final DiagnosticChain diagnostics,
 			final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateValueForGenericInstanceVariable(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+				.validateValueForGenericInstanceVariable(this, diagnostics, context);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean validateVarInOutIsWithed(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
-		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutIsWithed(this, diagnostics, context);
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+				.validateVarInOutIsWithed(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean validateVarInOutSubappInterface(final DiagnosticChain diagnostics,
+			final Map<Object, Object> context) {
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+				.validateVarInOutSubappInterface(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean validateVarInOutSubappNetwork(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+		return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+				.validateVarInOutSubappNetwork(this, diagnostics, context);
 	}
 
 } // AdapterMonitoringVarDeclarationImpl
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java
index a847caf..f47e45b 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java
@@ -42,21 +42,22 @@
  * <!-- 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 org.eclipse.fordiac.ide.model.monitoring.MonitoringPackage
  * @generated
  */
 public class MonitoringAdapterFactory extends AdapterFactoryImpl {
 	/**
-	 * The cached model package.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected static MonitoringPackage modelPackage;
 
 	/**
-	 * Creates an instance of the adapter factory.
-	 * <!-- begin-user-doc --> <!--
+	 * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
 	 * end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public MonitoringAdapterFactory() {
@@ -75,12 +76,12 @@
 	 * @generated
 	 */
 	@Override
-	public boolean isFactoryForType(Object object) {
+	public boolean isFactoryForType(final Object object) {
 		if (object == modelPackage) {
 			return true;
 		}
 		if (object instanceof EObject) {
-			return ((EObject)object).eClass().getEPackage() == modelPackage;
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
 		}
 		return false;
 	}
@@ -92,106 +93,127 @@
 	 * @generated
 	 */
 	protected MonitoringSwitch<Adapter> modelSwitch = new MonitoringSwitch<>() {
-			@Override
-			public Adapter caseMonitoringElement(MonitoringElement object) {
-				return createMonitoringElementAdapter();
-			}
-			@Override
-			public Adapter caseMonitoringAdapterElement(MonitoringAdapterElement object) {
-				return createMonitoringAdapterElementAdapter();
-			}
-			@Override
-			public Adapter caseAdapterPortElement(AdapterPortElement object) {
-				return createAdapterPortElementAdapter();
-			}
-			@Override
-			public Adapter caseAdapterMonitoringEvent(AdapterMonitoringEvent object) {
-				return createAdapterMonitoringEventAdapter();
-			}
-			@Override
-			public Adapter caseAdapterMonitoringVarDeclaration(AdapterMonitoringVarDeclaration object) {
-				return createAdapterMonitoringVarDeclarationAdapter();
-			}
-			@Override
-			public Adapter caseIEditPartCreator(IEditPartCreator object) {
-				return createIEditPartCreatorAdapter();
-			}
-			@Override
-			public Adapter caseSubAppPortElement(SubAppPortElement object) {
-				return createSubAppPortElementAdapter();
-			}
-			@Override
-			public Adapter caseSubappMonitoringElement(SubappMonitoringElement object) {
-				return createSubappMonitoringElementAdapter();
-			}
-			@Override
-			public Adapter caseMonitoringBase_IEditPartCreator(IEditPartCreator object) {
-				return createMonitoringBase_IEditPartCreatorAdapter();
-			}
-			@Override
-			public Adapter caseMonitoringBaseElement(MonitoringBaseElement object) {
-				return createMonitoringBaseElementAdapter();
-			}
-			@Override
-			public Adapter casePortElement(PortElement object) {
-				return createPortElementAdapter();
-			}
-			@Override
-			public Adapter caseINamedElement(INamedElement object) {
-				return createINamedElementAdapter();
-			}
-			@Override
-			public Adapter caseITypedElement(ITypedElement object) {
-				return createITypedElementAdapter();
-			}
-			@Override
-			public Adapter caseConfigurableObject(ConfigurableObject object) {
-				return createConfigurableObjectAdapter();
-			}
-			@Override
-			public Adapter caseHiddenElement(HiddenElement object) {
-				return createHiddenElementAdapter();
-			}
-			@Override
-			public Adapter caseIInterfaceElement(IInterfaceElement object) {
-				return createIInterfaceElementAdapter();
-			}
-			@Override
-			public Adapter caseICallable(ICallable object) {
-				return createICallableAdapter();
-			}
-			@Override
-			public Adapter caseEvent(Event object) {
-				return createEventAdapter();
-			}
-			@Override
-			public Adapter caseVarDeclaration(VarDeclaration object) {
-				return createVarDeclarationAdapter();
-			}
-			@Override
-			public Adapter defaultCase(EObject object) {
-				return createEObjectAdapter();
-			}
-		};
+		@Override
+		public Adapter caseMonitoringElement(final MonitoringElement object) {
+			return createMonitoringElementAdapter();
+		}
+
+		@Override
+		public Adapter caseMonitoringAdapterElement(final MonitoringAdapterElement object) {
+			return createMonitoringAdapterElementAdapter();
+		}
+
+		@Override
+		public Adapter caseAdapterPortElement(final AdapterPortElement object) {
+			return createAdapterPortElementAdapter();
+		}
+
+		@Override
+		public Adapter caseAdapterMonitoringEvent(final AdapterMonitoringEvent object) {
+			return createAdapterMonitoringEventAdapter();
+		}
+
+		@Override
+		public Adapter caseAdapterMonitoringVarDeclaration(final AdapterMonitoringVarDeclaration object) {
+			return createAdapterMonitoringVarDeclarationAdapter();
+		}
+
+		@Override
+		public Adapter caseIEditPartCreator(final IEditPartCreator object) {
+			return createIEditPartCreatorAdapter();
+		}
+
+		@Override
+		public Adapter caseSubAppPortElement(final SubAppPortElement object) {
+			return createSubAppPortElementAdapter();
+		}
+
+		@Override
+		public Adapter caseSubappMonitoringElement(final SubappMonitoringElement object) {
+			return createSubappMonitoringElementAdapter();
+		}
+
+		@Override
+		public Adapter caseMonitoringBase_IEditPartCreator(final IEditPartCreator object) {
+			return createMonitoringBase_IEditPartCreatorAdapter();
+		}
+
+		@Override
+		public Adapter caseMonitoringBaseElement(final MonitoringBaseElement object) {
+			return createMonitoringBaseElementAdapter();
+		}
+
+		@Override
+		public Adapter casePortElement(final PortElement object) {
+			return createPortElementAdapter();
+		}
+
+		@Override
+		public Adapter caseINamedElement(final INamedElement object) {
+			return createINamedElementAdapter();
+		}
+
+		@Override
+		public Adapter caseITypedElement(final ITypedElement object) {
+			return createITypedElementAdapter();
+		}
+
+		@Override
+		public Adapter caseConfigurableObject(final ConfigurableObject object) {
+			return createConfigurableObjectAdapter();
+		}
+
+		@Override
+		public Adapter caseHiddenElement(final HiddenElement object) {
+			return createHiddenElementAdapter();
+		}
+
+		@Override
+		public Adapter caseIInterfaceElement(final IInterfaceElement object) {
+			return createIInterfaceElementAdapter();
+		}
+
+		@Override
+		public Adapter caseICallable(final ICallable object) {
+			return createICallableAdapter();
+		}
+
+		@Override
+		public Adapter caseEvent(final Event object) {
+			return createEventAdapter();
+		}
+
+		@Override
+		public Adapter caseVarDeclaration(final VarDeclaration object) {
+			return createVarDeclarationAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(final EObject object) {
+			return createEObjectAdapter();
+		}
+	};
 
 	/**
-	 * Creates an adapter for the <code>target</code>.
-	 * <!-- begin-user-doc --> <!--
+	 * 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);
+	public Adapter createAdapter(final Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement <em>Element</em>}'.
-	 * <!-- begin-user-doc --> This default implementation
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement
+	 * <em>Element</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 org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement
 	 * @generated
@@ -201,10 +223,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringElement <em>Element</em>}'.
-	 * <!-- begin-user-doc --> This default implementation
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringElement
+	 * <em>Element</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 org.eclipse.fordiac.ide.model.monitoring.MonitoringElement
 	 * @generated
@@ -214,11 +238,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringAdapterElement <em>Adapter Element</em>}'.
-	 * <!-- begin-user-doc --> This default
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringAdapterElement
+	 * <em>Adapter Element</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 org.eclipse.fordiac.ide.model.monitoring.MonitoringAdapterElement
 	 * @generated
@@ -228,10 +254,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part Creator</em>}'.
-	 * <!-- begin-user-doc --> This default implementation returns
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part
+	 * Creator</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 org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator
 	 * @generated
@@ -241,10 +269,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.SubAppPortElement <em>Sub App Port Element</em>}'.
-	 * <!-- begin-user-doc --> This default implementation
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.monitoring.SubAppPortElement <em>Sub
+	 * App Port Element</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 org.eclipse.fordiac.ide.model.monitoring.SubAppPortElement
 	 * @generated
@@ -254,11 +284,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.SubappMonitoringElement <em>Subapp Monitoring Element</em>}'.
-	 * <!-- begin-user-doc --> This default
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.monitoring.SubappMonitoringElement
+	 * <em>Subapp Monitoring Element</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 org.eclipse.fordiac.ide.model.monitoring.SubappMonitoringElement
 	 * @generated
@@ -268,10 +300,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part Creator</em>}'.
-	 * <!-- begin-user-doc --> This default implementation returns
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part
+	 * Creator</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 org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator
 	 * @generated
@@ -281,10 +315,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.PortElement <em>Port Element</em>}'.
-	 * <!-- begin-user-doc --> This default implementation
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.PortElement
+	 * <em>Port Element</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 org.eclipse.fordiac.ide.deployment.monitoringbase.PortElement
 	 * @generated
@@ -294,11 +330,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterPortElement <em>Adapter Port Element</em>}'.
-	 * <!-- begin-user-doc --> This default
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterPortElement
+	 * <em>Adapter Port Element</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 org.eclipse.fordiac.ide.model.monitoring.AdapterPortElement
 	 * @generated
@@ -308,11 +346,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringEvent <em>Adapter Monitoring Event</em>}'.
-	 * <!-- begin-user-doc --> This default
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringEvent
+	 * <em>Adapter Monitoring Event</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 org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringEvent
 	 * @generated
@@ -322,11 +362,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringVarDeclaration <em>Adapter Monitoring Var Declaration</em>}'.
-	 * <!-- begin-user-doc --> This
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringVarDeclaration
+	 * <em>Adapter Monitoring Var Declaration</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 org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringVarDeclaration
 	 * @generated
@@ -336,10 +378,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.INamedElement <em>INamed Element</em>}'.
-	 * <!-- begin-user-doc --> This default implementation returns
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.INamedElement <em>INamed
+	 * Element</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 org.eclipse.fordiac.ide.model.libraryElement.INamedElement
 	 * @generated
@@ -349,10 +393,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.ITypedElement <em>ITyped Element</em>}'.
-	 * <!-- begin-user-doc --> This default implementation returns
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.ITypedElement <em>ITyped
+	 * Element</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 org.eclipse.fordiac.ide.model.libraryElement.ITypedElement
 	 * @generated
@@ -362,11 +408,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject <em>Configurable Object</em>}'.
-	 * <!-- begin-user-doc --> This default
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject
+	 * <em>Configurable Object</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 org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject
 	 * @generated
@@ -376,10 +424,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.HiddenElement <em>Hidden Element</em>}'.
-	 * <!-- begin-user-doc --> This default implementation returns
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.HiddenElement <em>Hidden
+	 * Element</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 org.eclipse.fordiac.ide.model.libraryElement.HiddenElement
 	 * @generated
@@ -389,11 +439,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement <em>IInterface Element</em>}'.
-	 * <!-- begin-user-doc --> This default
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement
+	 * <em>IInterface Element</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 org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement
 	 * @generated
@@ -403,10 +455,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.ICallable <em>ICallable</em>}'.
-	 * <!-- begin-user-doc --> This default implementation
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.ICallable
+	 * <em>ICallable</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 org.eclipse.fordiac.ide.model.libraryElement.ICallable
 	 * @generated
@@ -416,10 +470,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.Event <em>Event</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.Event <em>Event</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 org.eclipse.fordiac.ide.model.libraryElement.Event
 	 * @generated
@@ -429,10 +485,12 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration <em>Var Declaration</em>}'.
-	 * <!-- begin-user-doc --> This default implementation
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration <em>Var
+	 * Declaration</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 org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration
 	 * @generated
@@ -442,9 +500,9 @@
 	}
 
 	/**
-	 * Creates a new adapter for the default case.
-	 * <!-- begin-user-doc --> This
+	 * Creates a new adapter for the default case. <!-- begin-user-doc --> This
 	 * default implementation returns null. <!-- end-user-doc -->
+	 *
 	 * @return the new adapter.
 	 * @generated
 	 */
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
index f81b90b..46d6e4d 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
@@ -86,7 +86,7 @@
 				try {
 					Thread.sleep(pollingIntervall);
 				} catch (final InterruptedException e) {
-					Thread.currentThread().interrupt();  // mark interruption
+					Thread.currentThread().interrupt(); // mark interruption
 					FordiacLogHelper.logError(e.getMessage(), e);
 				}
 				if (devInteractor.isConnected()) {
@@ -100,8 +100,8 @@
 					}
 				} else {
 					setRunning(false);
+					clearMonitoredElements();
 				}
-
 			}
 		}
 	}
@@ -290,6 +290,10 @@
 		} catch (final DeploymentException e) {
 			// we don't need to do anything here
 		}
+		clearMonitoredElements();
+	}
+
+	private void clearMonitoredElements() {
 		systemMonData.getMonitoredElements().stream()
 				.filter(el -> (el.getPort().getDevice().equals(device) && (el instanceof MonitoringElement)))
 				.forEach(el -> ((MonitoringElement) el).setCurrentValue("")); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java
index 6b8be37..64e0992 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java
@@ -1,7 +1,7 @@
 /*******************************************************************************
- * Copyright (c) 2012 - 2023 Profactor GmbH, AIT, TU Wien ACIN, fortiss GmbH,
- * 							 Johannes Kepler University
- * 							 Martin Erich Jobst
+ * Copyright (c) 2012, 2024 Profactor GmbH, AIT, TU Wien ACIN, fortiss GmbH,
+ *                          Johannes Kepler University
+ *                          Martin Erich Jobst
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -209,16 +209,15 @@
 	}
 
 	public Collection<MonitoringBaseElement> getElementsToMonitor(final AutomationSystem sys) {
-		if(sys != null) {
+		if (sys != null) {
 			final SystemMonitoringData sysData = systemMonitoringData.get(sys);
-			if(sysData != null) {
+			if (sysData != null) {
 				return sysData.getMonitoredElements();
 			}
 		}
 		return Collections.emptyList();
 	}
 
-
 	/**
 	 * Enable system.
 	 *
@@ -269,11 +268,13 @@
 		return getSystemMonitoringData(system).isMonitoringForSystemEnabled();
 	}
 
-	/** Contains system.
+	/**
+	 * Contains system.
 	 *
 	 * @param system the system
 	 *
-	 * @return true, if successful */
+	 * @return true, if successful
+	 */
 	public boolean monitoringForSystemEnabled(final AutomationSystem system) {
 		final SystemMonitoringData data = getSystemMonitoringData(system);
 		return data.isMonitoringForSystemEnabled();
@@ -291,9 +292,7 @@
 	public void triggerEvent(final IInterfaceElement interfaceElement) {
 		final MonitoringBaseElement element = getMonitoringElement(interfaceElement);
 
-		if (element instanceof MonitoringElement) {
-			final MonitoringElement monitoringElement = (MonitoringElement) element;
-
+		if (element instanceof final MonitoringElement monitoringElement) {
 			final List<MonitoringElement> elements = new ArrayList<>();
 			final SystemMonitoringData data = getSystemMonitoringData(monitoringElement.getPort().getSystem());
 
@@ -312,7 +311,6 @@
 				elements.add((MonitoringElement) element);
 			}
 
-
 			for (final MonitoringElement me : elements) {
 				final IDeviceManagementInteractor devMgmInteractor = data.getDevMgmInteractor(me.getPort().getDevice());
 				if (devMgmInteractor != null) {
@@ -344,7 +342,7 @@
 		final IInterfaceElement interfaceElement = element.getPort().getInterfaceElement();
 		if (interfaceElement instanceof VarDeclaration) {
 			try {
-				value = VariableOperations.newVariable((VarDeclaration) interfaceElement, value).toString();
+				value = VariableOperations.newVariable((VarDeclaration) interfaceElement, value).toString(false);
 			} catch (final Exception e) {
 				showInvalidValueErrorMsg(element, value);
 				return;
@@ -352,8 +350,7 @@
 		}
 
 		final SystemMonitoringData data = getSystemMonitoringData(automationSystem);
-		final IDeviceManagementInteractor devMgmInteractor = data
-				.getDevMgmInteractor(device);
+		final IDeviceManagementInteractor devMgmInteractor = data.getDevMgmInteractor(device);
 
 		if (devMgmInteractor != null) {
 			writeElements(element, value, devMgmInteractor);
@@ -445,7 +442,7 @@
 
 	private static void showSystemNotFoundErrorMsg(final MonitoringElement element) {
 		MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", //$NON-NLS-1$
-				"System could not be found for FB port: " + element.getPort() + ".");  //$NON-NLS-1$//$NON-NLS-2$
+				"System could not be found for FB port: " + element.getPort() + "."); //$NON-NLS-1$//$NON-NLS-2$
 	}
 
 	private static void showInvalidValueErrorMsg(final MonitoringElement element, final String value) {
diff --git a/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target b/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target
index 05c9774..1b6248f 100644
--- a/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target
+++ b/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target
@@ -3,17 +3,17 @@
 <target name="4diac-ide Target" sequenceNumber="21">
 	<locations>
 		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<repository location="https://download.eclipse.org/elk/updates/nightly"/>
-			<unit id="org.eclipse.elk.libavoid.feature.feature.group" version="0.0.0"/>
-			<unit id="org.eclipse.elk.algorithms.feature.feature.group" version="0.0.0"/>
-			<unit id="org.eclipse.elk.algorithms.feature.source.feature.group" version="0.0.0"/>
-			<unit id="org.eclipse.elk.feature.feature.group" version="0.0.0"/>
-			<unit id="org.eclipse.elk.feature.source.feature.group" version="0.0.0"/>
-			<unit id="org.eclipse.elk.libavoid.feature.source.feature.group" version="0.0.0"/>
+			<repository location="https://download.eclipse.org/elk/updates/releases/0.9.0/"/>
+			<unit id="org.eclipse.elk.algorithms.feature.feature.group" version="0.9.0"/>
+			<unit id="org.eclipse.elk.algorithms.feature.source.feature.group" version="0.9.0"/>
+			<unit id="org.eclipse.elk.feature.feature.group" version="0.9.0"/>
+			<unit id="org.eclipse.elk.feature.source.feature.group" version="0.9.0"/>
+			<unit id="org.eclipse.elk.libavoid.feature.feature.group" version="0.9.0"/>
+			<unit id="org.eclipse.elk.libavoid.feature.source.feature.group" version="0.9.0"/>
 		</location>
 		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<repository location="https://download.eclipse.org/nebula/releases/3.1.0/"/>
-			<unit id="org.eclipse.nebula.feature.feature.group" version="3.0.0.202312260654"/>
+			<repository location="https://download.eclipse.org/nebula/releases/latest"/>
+			<unit id="org.eclipse.nebula.feature.feature.group" version="3.1.1.202402011804"/>
 		</location>
 		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
 			<repository location="https://download.eclipse.org/tools/gef/classic/nightly/latest/"/>
@@ -29,40 +29,78 @@
 			<unit id="org.eclipse.gef.source.feature.group" version="0.0.0"/>
 		</location>
 		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<repository location="https://download.eclipse.org/eclipse/updates/4.30"/>
-			<unit id="org.eclipse.pde.feature.group" version="3.15.200.v20231201-0110"/>
-			<unit id="org.eclipse.platform.ide" version="4.30.0.I20231201-0110"/>
+			<repository location="https://download.eclipse.org/eclipse/updates/4.31"/>
+			<unit id="org.eclipse.pde.feature.group" version="3.15.300.v20240229-0520"/>
+			<unit id="org.eclipse.platform.ide" version="4.31.0.I20240229-0520"/>
 		</location>
 		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
 			<repository location="http://download.eclipse.org/modeling/emf/compare/updates/releases/3.3"/>
-			<unit id="org.eclipse.emf.compare.egit.feature.group" version="3.3.23.202311200811"/>
-			<unit id="org.eclipse.emf.compare.egit.source.feature.group" version="3.3.23.202311200811"/>
-			<unit id="org.eclipse.emf.compare.feature.group" version="3.3.23.202311200811"/>
-			<unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="3.3.23.202311200811"/>
-			<unit id="org.eclipse.emf.compare.ide.ui.source.feature.group" version="3.3.23.202311200811"/>
-			<unit id="org.eclipse.emf.compare.rcp.ui.feature.group" version="3.3.23.202311200811"/>
-			<unit id="org.eclipse.emf.compare.rcp.ui.source.feature.group" version="3.3.23.202311200811"/>
-			<unit id="org.eclipse.emf.compare.source.feature.group" version="3.3.23.202311200811"/>
+			<unit id="org.eclipse.emf.compare.egit.feature.group" version="3.3.24.202401051648"/>
+			<unit id="org.eclipse.emf.compare.egit.source.feature.group" version="3.3.24.202401051648"/>
+			<unit id="org.eclipse.emf.compare.feature.group" version="3.3.24.202401051648"/>
+			<unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="3.3.24.202401051648"/>
+			<unit id="org.eclipse.emf.compare.ide.ui.source.feature.group" version="3.3.24.202401051648"/>
+			<unit id="org.eclipse.emf.compare.rcp.ui.feature.group" version="3.3.24.202401051648"/>
+			<unit id="org.eclipse.emf.compare.rcp.ui.source.feature.group" version="3.3.24.202401051648"/>
+			<unit id="org.eclipse.emf.compare.source.feature.group" version="3.3.24.202401051648"/>
 		</location>
 		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<repository location="https://download.eclipse.org/nattable/releases/2.2.1/repository/"/>
-			<unit id="org.eclipse.nebula.widgets.nattable.core.feature.feature.group" version="2.2.1.202311151329"/>
-			<unit id="org.eclipse.nebula.widgets.nattable.core.source.feature.feature.group" version="2.2.1.202311151329"/>
+			<repository location="https://download.eclipse.org/nattable/releases/2.3.0/repository/"/>
+			<unit id="org.eclipse.nebula.widgets.nattable.core.feature.feature.group" version="2.3.0.202402191815"/>
+			<unit id="org.eclipse.nebula.widgets.nattable.core.source.feature.feature.group" version="2.3.0.202402191815"/>
 		</location>
 		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<repository location="https://download.eclipse.org/releases/2023-12"/>
-			<unit id="org.eclipse.egit.feature.group" version="6.8.0.202311291450-r"/>
-			<unit id="org.eclipse.emf.sdk.feature.group" version="2.36.0.v20231107-0612"/>
-			<unit id="org.eclipse.ocl.all.sdk.feature.group" version="5.19.0.v20231129-1236"/>
-			<unit id="org.eclipse.sirius.properties.feature.feature.group" version="7.3.0.202311270829"/>
-			<unit id="org.eclipse.sirius.samples.feature.group" version="7.3.0.202311270829"/>
-			<unit id="org.eclipse.sirius.specifier.feature.group" version="7.3.0.202311270829"/>
-			<unit id="org.eclipse.sirius.specifier.properties.feature.feature.group" version="7.3.0.202311270829"/>
+			<repository location="https://download.eclipse.org/releases/2024-03"/>
+			<unit id="javax.activation" version="1.2.2.v20221203-1659"/>
+			<unit id="org.eclipse.egit.feature.group" version="6.9.0.202403050737-r"/>
+			<unit id="org.eclipse.emf.sdk.feature.group" version="2.37.0.v20240203-1010"/>
+			<unit id="org.eclipse.ocl.all.sdk.feature.group" version="5.20.0.v20240305-1416"/>
+			<unit id="org.eclipse.sirius.properties.feature.feature.group" version="7.4.0.202403051613"/>
+			<unit id="org.eclipse.sirius.samples.feature.group" version="7.4.0.202403051613"/>
+			<unit id="org.eclipse.sirius.specifier.feature.group" version="7.4.0.202403051613"/>
+			<unit id="org.eclipse.sirius.specifier.properties.feature.feature.group" version="7.4.0.202403051613"/>
 			<unit id="org.eclipse.swtbot.eclipse.feature.group" version="4.1.0.202306071420"/>
 			<unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="4.1.0.202306071420"/>
 			<unit id="org.eclipse.swtbot.feature.group" version="4.1.0.202306071420"/>
 			<unit id="org.eclipse.swtbot.ide.feature.group" version="4.1.0.202306071420"/>
-			<unit id="org.eclipse.xtext.sdk.feature.group" version="2.33.0.v20231121-0955"/>
+			<unit id="org.eclipse.xtext.sdk.feature.group" version="2.34.0.v20240227-0940"/>
+		</location>		
+		<location includeDependencyDepth="infinite" includeDependencyScopes="compile" includeSource="true" missingManifest="generate" type="Maven">
+
+			<feature id="org.eclipse.fordiac.ide.milo" label="Milo Dependencies" provider-name="Eclipse 4diac" version="2.0.1.qualifier">
+
+   
+
+   
+
+   
+
+   
+				<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="javax.activation" version="0.0.0"/>
+			</feature>
+			<dependencies>
+				<dependency>
+					<groupId>org.eclipse.milo</groupId>
+					<artifactId>sdk-client</artifactId>
+					<version>0.6.12</version>
+					<type>jar</type>
+				</dependency>
+				<dependency>
+					<groupId>org.slf4j</groupId>
+					<artifactId>slf4j-simple</artifactId>
+					<version>1.7.32</version>
+					<type>jar</type>
+				</dependency>
+			</dependencies>
 		</location>
 	</locations>
 </target>
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.product/pom.xml b/plugins/org.eclipse.fordiac.ide.product/pom.xml
index 0e3fee1..0b64a58 100644
--- a/plugins/org.eclipse.fordiac.ide.product/pom.xml
+++ b/plugins/org.eclipse.fordiac.ide.product/pom.xml
@@ -6,7 +6,7 @@
 		<relativePath>../../pom.xml</relativePath>
 		<groupId>org.eclipse.fordiac</groupId>
 		<artifactId>parent</artifactId>
-		<version>2.0.1-SNAPSHOT</version>
+		<version>3.0.0-SNAPSHOT</version>
 	</parent>
 
 
@@ -34,7 +34,7 @@
 						<artifact>
 							<groupId>org.eclipse.fordiac</groupId>
 							<artifactId>org.eclipse.fordiac.ide.product</artifactId>
-							<version>2.0.1-SNAPSHOT</version>
+							<version>3.0.0-SNAPSHOT</version>
 						</artifact>
 					</target>
 					<filters>
diff --git a/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF
index 4e395f2..f4c2cf7 100644
--- a/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.fordiac.ide.model.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Resource Editing
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.resourceediting;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF
index fd8695c..cc120c7 100644
--- a/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Runtime
 Bundle-SymbolicName: org.eclipse.fordiac.ide.runtime;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Export-Package: org.eclipse.fordiac.ide.runtime,
  org.eclipse.fordiac.ide.runtime.views
@@ -18,6 +18,4 @@
  org.eclipse.e4.ui.di
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ActivationPolicy: lazy
-Import-Package: javax.annotation;version="1.0.0";resolution:=optional,
- javax.inject;version="1.0.0"
 Automatic-Module-Name: org.eclipse.fordiac.ide.runtime
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/Messages.java b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/Messages.java
new file mode 100644
index 0000000..92d90b6
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/Messages.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.runtime;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * The Class Messages.
+ */
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
+public final class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.runtime.messages"; //$NON-NLS-1$
+
+	public static String RuntimeLaunchTab_Port;
+
+	public static String RuntimeLaunchTab_ERROR_WrongPort;
+
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+		// empty private constructor
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/RuntimeLaunchTab.java b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/RuntimeLaunchTab.java
new file mode 100644
index 0000000..c9e0ece
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/RuntimeLaunchTab.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.runtime;
+
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public abstract class RuntimeLaunchTab extends AbstractLaunchConfigurationTab {
+
+	protected static final String ATTR_LOCATION = "org.eclipse.ui.externaltools.ATTR_LOCATION"; //$NON-NLS-1$
+	protected static final String ATTR_WORKING_DIRECTORY = "org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY"; //$NON-NLS-1$
+	protected static final String ATTR_BUILD_SCOPE = "org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE"; //$NON-NLS-1$
+
+	private Text portField;
+
+	@Override
+	public void setDefaults(final ILaunchConfigurationWorkingCopy configuration) {
+		configuration.removeAttribute(LaunchRuntimeUtils.ATTR_TOOL_ARGUMENTS);
+		configuration.removeAttribute(ATTR_WORKING_DIRECTORY);
+		configuration.setAttribute(ATTR_BUILD_SCOPE, "NONE"); //$NON-NLS-1$
+	}
+
+	@Override
+	public boolean isValid(final ILaunchConfiguration launchConfig) {
+		setErrorMessage(null);
+		try {
+			final int port = Integer.parseInt(portField.getText());
+			if ((port < 1024) || (port > 65535)) {
+				throw new NumberFormatException();
+			}
+		} catch (final NumberFormatException nfe) {
+			setErrorMessage(Messages.RuntimeLaunchTab_ERROR_WrongPort);
+			return false;
+		}
+		return true;
+	}
+
+	protected String getPortValue() {
+		return portField.getText();
+	}
+
+	protected void setPortValue(final String portValue) {
+		portField.setText(portValue);
+	}
+
+	protected void createPortSelection(final Composite parent) {
+		final Label label = new Label(parent, SWT.NONE);
+		label.setText(Messages.RuntimeLaunchTab_Port);
+		portField = new Text(parent, SWT.BORDER);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).applyTo(portField);
+		portField.addVerifyListener(RuntimeLaunchTab::ensureTextIsValidPortNumber);
+		portField.addModifyListener(ev -> scheduleUpdateJob());
+	}
+
+	private static void ensureTextIsValidPortNumber(final VerifyEvent e) {
+		final String portFieldValue = e.text;
+		e.doit = portFieldValue.matches("\\d*"); //$NON-NLS-1$
+		if (e.doit && !portFieldValue.isBlank()) {
+			final int port = Integer.parseInt(portFieldValue);
+			e.doit = port < 65535;
+		}
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/messages.properties b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/messages.properties
new file mode 100644
index 0000000..9c7c367
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/messages.properties
@@ -0,0 +1,19 @@
+ ###############################################################################
+ # Copyright (c) 2008 - 2010 Profactor GmbH
+ #				 2020		 Andrea Zoitl
+ # 
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # http://www.eclipse.org/legal/epl-2.0.
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ #   Martijn Rooker, Gerhard Ebenhofer, Thomas Strasser
+ #     - initial API and implementation and/or initial documentation
+ #   Andrea Zoitl
+ #	   - externalized all translatable strings
+ ###############################################################################
+RuntimeLaunchTab_Port=Port:
+
+RuntimeLaunchTab_ERROR_WrongPort=Wrong Port number. Only values allowed between 1024 and 65535.
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF
index d66226b..a7900f2 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtext.mwe
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtext.mwe; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF
index 737dfc0..2d74eae 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.ide
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.ide; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.structuredtextalgorithm,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF
index 1015ae7..0f645d0 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.model
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.model; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext.xbase.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF
index cc8bb37..2404048 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.tests;singleton:=true
-Bundle-Version: 0.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.fordiac.ide.structuredtextalgorithm.tests;x-internal=true
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF
index 5c70b6c..f3d2766 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.ui
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.ui; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.structuredtextalgorithm,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF
index c957b83..b967ee3 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF
index 7996546..4819a8f 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore.ide
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore.ide; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.structuredtextcore,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF
index 51a9b10..5c1f118a 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore.model
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore.model; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext.xbase.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF
index cb613a7..3737366 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore.ui
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore.ui; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.model,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF
index 4d468db..11442de 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF
index 3935175..2742bb8 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide;singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.structuredtextfunctioneditor,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF
index d71dcd0..c1ccb02 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.model
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.model; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext.xbase.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF
index 745b141..f2697e1 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests; singleton:=true
 Bundle-ActivationPolicy: lazy
 Import-Package: org.junit.jupiter.api,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF
index 50de849..e89eb26 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests; singleton:=true
 Bundle-ActivationPolicy: lazy
 Import-Package: org.junit.jupiter.api,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF
index 92f6a70..1951ee0 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui;singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.fordiac.ide.structuredtextfunctioneditor,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF
index 4c2436c..8fae012 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor;singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF
index d16304b..bfe2827 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Subapplication Type Editor
 Bundle-SymbolicName: org.eclipse.fordiac.ide.subapptypeeditor;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/EditorSubAppTypeItemProvider.java
similarity index 95%
rename from plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubAppItemProvider.java
rename to plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/EditorSubAppTypeItemProvider.java
index 8f8141a..feff860 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubAppItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/EditorSubAppTypeItemProvider.java
@@ -26,11 +26,11 @@
 import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppTypeItemProvider;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
 
-public class TypedSubAppItemProvider extends SubAppTypeItemProvider {
+public class EditorSubAppTypeItemProvider extends SubAppTypeItemProvider {
 
 	protected FBNetworkItemProvider subAppNetworkItemProvider = null;
 
-	public TypedSubAppItemProvider(final AdapterFactory adapterFactory) {
+	public EditorSubAppTypeItemProvider(final AdapterFactory adapterFactory) {
 		super(adapterFactory);
 		subAppNetworkItemProvider = new FBNetworkItemProvider(adapterFactory) {
 
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java
index e03b9d4..9cf0bc5 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java
@@ -26,9 +26,9 @@
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.provider.FBNetworkItemProvider;
-import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppItemProvider;
+import org.eclipse.fordiac.ide.model.libraryElement.provider.TypedSubAppItemProvider;
 
-public class SubAppItemProviderForTypedSubapps extends SubAppItemProvider {
+public class SubAppItemProviderForTypedSubapps extends TypedSubAppItemProvider {
 
 	protected FBNetworkItemProvider subAppNetworkItemProvider = null;
 
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java
index 213f581..84a03b1 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java
@@ -17,21 +17,20 @@
 
 public class TypedSubappProviderAdapterFactory extends LibraryElementItemProviderAdapterFactory {
 
-
 	@Override
 	public Adapter createSubAppTypeAdapter() {
 		if (subAppTypeItemProvider == null) {
-			subAppTypeItemProvider = new TypedSubAppItemProvider(this);
+			subAppTypeItemProvider = new EditorSubAppTypeItemProvider(this);
 		}
 		return subAppTypeItemProvider;
 	}
 
 	@Override
-	public Adapter createSubAppAdapter() {
-		if (subAppItemProvider == null) {
-			subAppItemProvider = new SubAppItemProviderForTypedSubapps(this);
+	public Adapter createTypedSubAppAdapter() {
+		if (typedSubAppItemProvider == null) {
+			typedSubAppItemProvider = new SubAppItemProviderForTypedSubapps(this);
 		}
-		return subAppItemProvider;
+		return typedSubAppItemProvider;
 	}
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF
index 6af3ebb..9cba93f 100644
--- a/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.fordiac.ide.systemconfiguration.segment;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF
index 2868f4b..fa79080 100644
--- a/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF
@@ -25,7 +25,7 @@
  org.eclipse.fordiac.ide.model.eval
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: System Configuration
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.systemconfiguration;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF
index 2dcc665..8e5a294 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF
@@ -37,7 +37,7 @@
  org.eclipse.fordiac.ide.fbtypeeditor.network,
  org.eclipse.fordiac.ide.library.model
 Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.systemmanagement.ui;singleton:=true
 Automatic-Module-Name: org.eclipse.fordiac.ide.systemmanagement.ui
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java
index b22748e..e65cec6 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java
@@ -45,11 +45,19 @@
 	}
 
 	@Override
-	public Adapter createSubAppAdapter() {
-		if (subAppItemProvider == null) {
-			subAppItemProvider = new SubAppItemProviderForSystem(this);
+	public Adapter createTypedSubAppAdapter() {
+		if (typedSubAppItemProvider == null) {
+			typedSubAppItemProvider = new TypedSubAppItemProviderForSystem(this);
 		}
-		return subAppItemProvider;
+		return typedSubAppItemProvider;
+	}
+
+	@Override
+	public Adapter createUntypedSubAppAdapter() {
+		if (untypedSubAppItemProvider == null) {
+			untypedSubAppItemProvider = new UntypedSubAppItemProviderForSystem(this);
+		}
+		return untypedSubAppItemProvider;
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java
index c17993a..72b6b5a 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java
@@ -31,11 +31,19 @@
 	}
 
 	@Override
-	public Adapter createSubAppAdapter() {
-		if (subAppItemProvider == null) {
-			subAppItemProvider = new SubAppItemProviderForSystem(this);
+	public Adapter createTypedSubAppAdapter() {
+		if (typedSubAppItemProvider == null) {
+			typedSubAppItemProvider = new TypedSubAppItemProviderForSystem(this);
 		}
-		return subAppItemProvider;
+		return typedSubAppItemProvider;
+	}
+
+	@Override
+	public Adapter createUntypedSubAppAdapter() {
+		if (untypedSubAppItemProvider == null) {
+			untypedSubAppItemProvider = new UntypedSubAppItemProviderForSystem(this);
+		}
+		return untypedSubAppItemProvider;
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/TypedSubAppItemProviderForSystem.java
similarity index 91%
copy from plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
copy to plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/TypedSubAppItemProviderForSystem.java
index 24bfa6e..7f4b91f 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/TypedSubAppItemProviderForSystem.java
@@ -27,7 +27,7 @@
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
 import org.eclipse.fordiac.ide.model.libraryElement.provider.FBNetworkItemProvider;
-import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppItemProvider;
+import org.eclipse.fordiac.ide.model.libraryElement.provider.TypedSubAppItemProvider;
 
 /**
  * a dedicated item provider that will ensure that in the system tree the
@@ -37,11 +37,11 @@
  * @author alil
  *
  */
-public class SubAppItemProviderForSystem extends SubAppItemProvider {
+public class TypedSubAppItemProviderForSystem extends TypedSubAppItemProvider {
 
 	private FBNetworkItemProvider subAppNetworkItemProvider = null;
 
-	public SubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
+	public TypedSubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
 		super(adapterFactory);
 		subAppNetworkItemProvider = new FBNetworkItemProviderForSystem(adapterFactory);
 	}
@@ -61,7 +61,8 @@
 	@Override
 	public boolean hasChildren(final Object object) {
 		if (((SubApp) object).isTyped()) {
-			// if we are typed subapp we always say we have children, avoids early copying of type network
+			// if we are typed subapp we always say we have children, avoids early copying
+			// of type network
 			return true;
 		}
 		final FBNetwork fbNetwork = getFBNetwork(object);
@@ -81,7 +82,8 @@
 		final SubApp subapp = ((SubApp) object);
 		FBNetwork subAppNetwork = subapp.getSubAppNetwork();
 		if ((null == subAppNetwork) && subapp.isTyped()) {
-			// the subapp currently does not have a subappnetwork and it is typed, copy the subapp network from the type
+			// the subapp currently does not have a subappnetwork and it is typed, copy the
+			// subapp network from the type
 			// to the instance
 			subAppNetwork = subapp.loadSubAppNetwork();
 		}
@@ -100,7 +102,8 @@
 	public void notifyChanged(final Notification notification) {
 		if (LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY == notification
 				.getFeatureID(TypedConfigureableObject.class)) {
-			// if the type entry get change inform viewer to update the parent's children, this ensures that any
+			// if the type entry get change inform viewer to update the parent's children,
+			// this ensures that any
 			// filters that may be enabled are applied
 			final SubApp subapp = (SubApp) notification.getNotifier();
 			final Notification wrappedNotification = ViewerNotification.wrapNotification(notification,
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/UntypedSubAppItemProviderForSystem.java
similarity index 91%
rename from plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
rename to plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/UntypedSubAppItemProviderForSystem.java
index 24bfa6e..71b087d 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/UntypedSubAppItemProviderForSystem.java
@@ -27,7 +27,7 @@
 import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
 import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
 import org.eclipse.fordiac.ide.model.libraryElement.provider.FBNetworkItemProvider;
-import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppItemProvider;
+import org.eclipse.fordiac.ide.model.libraryElement.provider.UntypedSubAppItemProvider;
 
 /**
  * a dedicated item provider that will ensure that in the system tree the
@@ -37,11 +37,11 @@
  * @author alil
  *
  */
-public class SubAppItemProviderForSystem extends SubAppItemProvider {
+public class UntypedSubAppItemProviderForSystem extends UntypedSubAppItemProvider {
 
 	private FBNetworkItemProvider subAppNetworkItemProvider = null;
 
-	public SubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
+	public UntypedSubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
 		super(adapterFactory);
 		subAppNetworkItemProvider = new FBNetworkItemProviderForSystem(adapterFactory);
 	}
@@ -61,7 +61,8 @@
 	@Override
 	public boolean hasChildren(final Object object) {
 		if (((SubApp) object).isTyped()) {
-			// if we are typed subapp we always say we have children, avoids early copying of type network
+			// if we are typed subapp we always say we have children, avoids early copying
+			// of type network
 			return true;
 		}
 		final FBNetwork fbNetwork = getFBNetwork(object);
@@ -81,7 +82,8 @@
 		final SubApp subapp = ((SubApp) object);
 		FBNetwork subAppNetwork = subapp.getSubAppNetwork();
 		if ((null == subAppNetwork) && subapp.isTyped()) {
-			// the subapp currently does not have a subappnetwork and it is typed, copy the subapp network from the type
+			// the subapp currently does not have a subappnetwork and it is typed, copy the
+			// subapp network from the type
 			// to the instance
 			subAppNetwork = subapp.loadSubAppNetwork();
 		}
@@ -100,7 +102,8 @@
 	public void notifyChanged(final Notification notification) {
 		if (LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY == notification
 				.getFeatureID(TypedConfigureableObject.class)) {
-			// if the type entry get change inform viewer to update the parent's children, this ensures that any
+			// if the type entry get change inform viewer to update the parent's children,
+			// this ensures that any
 			// filters that may be enabled are applied
 			final SubApp subapp = (SubApp) notification.getNotifier();
 			final Notification wrappedNotification = ViewerNotification.wrapNotification(notification,
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java
index 4e0dbf9..d7dde3e 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java
@@ -19,6 +19,8 @@
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import org.eclipse.fordiac.ide.library.model.library.Required;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
 import org.eclipse.fordiac.ide.library.model.util.VersionComparator;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
 import org.eclipse.fordiac.ide.systemmanagement.ui.Messages;
@@ -103,9 +105,10 @@
 		libGroupings = libraries.stream().collect(Collectors.groupingBy(lib -> lib.symbolicName));
 	}
 
-	public Map<String, URI> getChosenLibraries() {
-		final Map<String, URI> libs = new HashMap<>();
-		libraries.stream().filter(LibDisplay::isSelected).forEach(lib -> libs.put(lib.getSymbolicName(), lib.getUri()));
+	public Map<Required, URI> getChosenLibraries() {
+		final Map<Required, URI> libs = new HashMap<>();
+		libraries.stream().filter(LibDisplay::isSelected).forEach(
+				lib -> libs.put(ManifestHelper.createRequired(lib.getSymbolicName(), lib.getVersion()), lib.getUri()));
 		return libs;
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF
index 29d590d..d3d5825 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
  org.eclipse.fordiac.ide.library.model
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: System Management
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.systemmanagement;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java
index be4c8ee..6610c3a 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java
@@ -26,6 +26,7 @@
 
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Stream;
@@ -45,6 +46,8 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
+import org.eclipse.fordiac.ide.library.model.library.Required;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
 import org.eclipse.fordiac.ide.model.dataimport.SystemImporter;
 import org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem;
 import org.eclipse.fordiac.ide.model.typelibrary.SystemEntry;
@@ -103,12 +106,17 @@
 
 	@SuppressWarnings("static-method")
 	public IProject createNew4diacProject(final String projectName, final IPath location,
-			final Map<String, URI> includedLibraries, final IProgressMonitor monitor) throws CoreException {
+			final Map<Required, URI> includedLibraries, final IProgressMonitor monitor) throws CoreException {
 		final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
 
 		final IProject project = root.getProject(projectName);
 		final IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
 
+		final Map<String, URI> includes = new HashMap<>();
+		includedLibraries.forEach((key, value) -> {
+			includes.put(key.getSymbolicName(), value);
+		});
+
 		if (!Platform.getLocation().equals(location)) {
 			description.setLocation(location);
 		}
@@ -126,10 +134,12 @@
 		project.open(monitor);
 
 		// configure type lib
-		SystemPaletteManagement.linkToolTypeLibsToDestination(includedLibraries,
-				project.getFolder(TYPE_LIB_FOLDER_NAME));
+		SystemPaletteManagement.linkToolTypeLibsToDestination(includes, project.getFolder(TYPE_LIB_FOLDER_NAME));
 
 		TypeLibraryManager.INSTANCE.getTypeLibrary(project); // insert the project into the project list
+
+		ManifestHelper.createProjectManifest(project, includedLibraries.keySet());
+
 		return project;
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java
index 7605dd9..0379a9c 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java
@@ -34,7 +34,7 @@
 import org.eclipse.core.runtime.URIUtil;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.fordiac.ide.library.model.library.Manifest;
-import org.eclipse.fordiac.ide.library.model.library.util.LibraryResourceImpl;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
 import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
@@ -70,35 +70,27 @@
 
 	public static Map<Manifest, java.net.URI> getStandardLibraries(final IProject project) {
 		final Map<Manifest, java.net.URI> libraries = new HashMap<>();
-		final Map<String, Object> loadOptions = new HashMap<>();
 		final FilenameFilter filter = (file, name) -> name.equals("MANIFEST.MF"); //$NON-NLS-1$
 
-		try {
-			final java.net.URI typeLibURI = new java.net.URI("ECLIPSE_HOME/" + TypeLibraryTags.TYPE_LIBRARY); //$NON-NLS-1$
-			final IPathVariableManager varMan = project.getPathVariableManager();
-			final java.net.URI typeLibURIResolved = varMan.resolveURI(typeLibURI);
-			final File typeLib = new File(typeLibURIResolved);
+		final java.net.URI typeLibURI = java.net.URI.create("ECLIPSE_HOME/" + TypeLibraryTags.TYPE_LIBRARY); //$NON-NLS-1$
+		final IPathVariableManager varMan = project.getPathVariableManager();
+		final java.net.URI typeLibURIResolved = varMan.resolveURI(typeLibURI);
+		final File typeLib = new File(typeLibURIResolved);
 
-			if (typeLib.isDirectory()) {
-				for (final File file : typeLib.listFiles()) {
-					if (!file.getName().startsWith(".") && file.isDirectory()) { //$NON-NLS-1$
-						final File[] manifestArr = file.listFiles(filter);
-						if (manifestArr.length > 0) {
-							final LibraryResourceImpl res = new LibraryResourceImpl(
-									URI.createURI(manifestArr[0].toURI().toString()));
-							res.load(loadOptions);
-							final Manifest manifest = (Manifest) res.getContents().get(0);
-							if ("Library".equals(manifest.getScope()) && manifest.getProduct() != null //$NON-NLS-1$
-									&& manifest.getProduct().getSymbolicName() != null) {
-								libraries.put(manifest, URIUtil.append(typeLibURI, file.getName()));
-							}
+		if (typeLib.isDirectory()) {
+			for (final File file : typeLib.listFiles()) {
+				if (!file.getName().startsWith(".") && file.isDirectory()) { //$NON-NLS-1$
+					final File[] manifestArr = file.listFiles(filter);
+					if (manifestArr.length > 0) {
+						final Manifest manifest = ManifestHelper
+								.getManifest(URI.createURI(manifestArr[0].toURI().toString()));
+						if (manifest != null && ManifestHelper.isLibrary(manifest) && manifest.getProduct() != null
+								&& manifest.getProduct().getSymbolicName() != null) {
+							libraries.put(manifest, URIUtil.append(typeLibURI, file.getName()));
 						}
 					}
 				}
 			}
-
-		} catch (final Exception e) {
-			FordiacLogHelper.logError(e.getMessage(), e);
 		}
 
 		return libraries;
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF
index 6b27163..3b9e73d 100644
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF
@@ -22,7 +22,7 @@
  org.eclipse.fordiac.ide.model.ui
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: FB Type Management
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.typemanagement;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeChange.java b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeChange.java
deleted file mode 100644
index 3c449d7..0000000
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeChange.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2023 Primetals Technologies Austria GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Michael Oberlehner - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.typemanagement.refactoring;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
-import org.eclipse.fordiac.ide.systemmanagement.changelistener.FordiacResourceChangeListener;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.resource.RenameResourceChange;
-
-public class RenameTypeChange extends RenameResourceChange {
-
-	private final TypeEntry typeEntry;
-
-	public RenameTypeChange(final TypeEntry typeEntry, final String newName) {
-		super(typeEntry.getFile().getFullPath(), newName);
-		this.typeEntry = typeEntry;
-	}
-
-	@Override
-	public Change perform(final IProgressMonitor pm) throws CoreException {
-		final Change perform = super.perform(pm);
-		final IPath newPath = renamedResourcePath(typeEntry.getFile().getFullPath(), getNewName());
-		final IResource findMember = ResourcesPlugin.getWorkspace().getRoot().findMember(newPath);
-		if (findMember instanceof final IFile file) {
-			FordiacResourceChangeListener.updateTypeEntryByRename(file, typeEntry);
-		}
-		return perform;
-	}
-
-	private static IPath renamedResourcePath(final IPath path, final String newName) {
-		return path.removeLastSegments(1).append(newName);
-	}
-
-}
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeRefactoring.java b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeRefactoring.java
deleted file mode 100644
index 10c9961..0000000
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeRefactoring.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2023 Primetals Technologies Austria GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Michael Oberlehner - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.typemanagement.refactoring;
-
-import java.text.MessageFormat;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.fordiac.ide.model.data.StructuredType;
-import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
-import org.eclipse.fordiac.ide.model.libraryElement.FBType;
-import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
-import org.eclipse.fordiac.ide.model.libraryElement.LibraryElement;
-import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
-import org.eclipse.fordiac.ide.model.search.types.FBInstanceSearch;
-import org.eclipse.fordiac.ide.model.search.types.FBTypeSearch;
-import org.eclipse.fordiac.ide.model.search.types.InstanceSearch;
-import org.eclipse.fordiac.ide.model.search.types.StructDataTypeSearch;
-import org.eclipse.fordiac.ide.model.typelibrary.DataTypeEntry;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
-import org.eclipse.fordiac.ide.typemanagement.Messages;
-import org.eclipse.fordiac.ide.ui.editors.EditorUtils;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.CompositeChange;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.part.FileEditorInput;
-
-public class RenameTypeRefactoring extends Refactoring {
-
-	private final TypeEntry typeEntry;
-	private String newName;
-	private final String oldName;
-
-	protected String getOldName() {
-		return oldName;
-	}
-
-	public RenameTypeRefactoring(final TypeEntry typeEntry, final String oldName) {
-		this.typeEntry = typeEntry;
-		this.oldName = oldName;
-	}
-
-	public RenameTypeRefactoring() {
-		this.typeEntry = null;
-		this.oldName = ""; //$NON-NLS-1$
-	}
-
-	@Override
-	public RefactoringStatus checkFinalConditions(final IProgressMonitor monitor)
-			throws CoreException, OperationCanceledException {
-		return new RefactoringStatus();
-	}
-
-	@Override
-	public RefactoringStatus checkInitialConditions(final IProgressMonitor monitor)
-			throws CoreException, OperationCanceledException {
-		final RefactoringStatus status = new RefactoringStatus();
-		try {
-			monitor.beginTask("Checking preconditions...", 1); //$NON-NLS-1$
-			checkEditor(status, typeEntry, getOldName());
-
-		} finally {
-			monitor.done();
-		}
-		return status;
-	}
-
-	public static void checkEditor(final RefactoringStatus result, final TypeEntry typeEntry, final String oldName) {
-		// depending if the in-place renaming is active we may not be in the display
-		// thread
-		Display.getDefault().syncExec(() -> {
-			final IEditorPart findEditor = EditorUtils.findEditor(
-					(final IEditorPart editor) -> editor.getEditorInput() instanceof final FileEditorInput fei
-							&& fei.getFile().equals(typeEntry.getFile()));
-			if (findEditor != null && findEditor.isDirty()) {
-				if (shouldSaveFile(findEditor.getSite().getShell(), oldName)) {
-					findEditor.doSave(new NullProgressMonitor());
-				} else {
-					result.addFatalError("Abort rename as editor is dirty!"); //$NON-NLS-1$
-				}
-			}
-		});
-	}
-
-	private static boolean shouldSaveFile(final Shell shell, final String oldName) {
-		final int result = MessageDialog.open(MessageDialog.QUESTION, shell, "Rename of Type with unsaved changes!", //$NON-NLS-1$
-				MessageFormat.format(
-						"There are unsaved changes for type \"{0}\". Do you want to save them before renaming?", //$NON-NLS-1$
-						TypeEntry.getTypeNameFromFileName(oldName)),
-				SWT.NONE, "Save", "Cancel"); //$NON-NLS-1$//$NON-NLS-2$
-		return result == 0;
-	}
-
-	@Override
-	public Change createChange(final IProgressMonitor monitor) throws CoreException, OperationCanceledException {
-		try {
-			monitor.beginTask("Creating change...", 1); //$NON-NLS-1$
-
-			final LibraryElement type = typeEntry.getType();
-			if (type instanceof final StructuredType structType) {
-				return createStructDataChange(structType);
-			}
-			if (type instanceof final FBType fbType) {
-				return createFBDataChange(fbType);
-			}
-			return null;
-
-		} finally {
-			monitor.done();
-		}
-	}
-
-	private CompositeChange createStructDataChange(final StructuredType type) {
-		InstanceSearch search = StructDataTypeSearch
-				.createStructMemberSearch((StructuredType) typeEntry.getTypeEditable());
-
-		final Set<INamedElement> allFBWithStruct = InstanceSearch.performProjectSearch(typeEntry.getFile().getProject(),
-				StructDataTypeSearch.createStructMemberSearch((StructuredType) typeEntry.getTypeEditable()),
-				StructDataTypeSearch.createStructInterfaceSearch((StructuredType) typeEntry.getTypeEditable()),
-				new FBInstanceSearch((DataTypeEntry) typeEntry));
-		allFBWithStruct.addAll(search.searchStructuredTypes(typeEntry.getTypeLibrary()));
-		final CompositeChange parentChange = new CompositeChange(
-				MessageFormat.format(Messages.Refactoring_RenameFromTo, typeEntry.getTypeName(), getNewName()));
-
-		parentChange.add(new RenameTypeChange(typeEntry, getNewName() + ".dtp")); //$NON-NLS-1$
-
-		final CompositeChange change = new CompositeChange(Messages.Refactoring_AffectedStruct);
-		final CompositeChange fbTypeChanges = new CompositeChange("Fb Types:"); //$NON-NLS-1$
-		search = StructDataTypeSearch.createStructInterfaceSearch((StructuredType) typeEntry.getTypeEditable());
-		final Set<INamedElement> fbTypes = search.performTypeLibBlockSearch(typeEntry.getTypeLibrary());
-		fbTypes.forEach(fb -> fbTypeChanges.add(new InterfaceDataTypeChange((FBType) fb, typeEntry, oldName)));
-		parentChange.add(fbTypeChanges);
-		allFBWithStruct.stream().map(this::createSubChange).forEach(change::add);
-
-		if (!allFBWithStruct.isEmpty()) {
-			parentChange.add(change);
-		}
-
-		return parentChange;
-	}
-
-	private CompositeChange createFBDataChange(final FBType type) {
-		final CompositeChange parentChange = new CompositeChange(
-				MessageFormat.format(Messages.Refactoring_RenameFromTo, typeEntry.getTypeName(), getNewName()));
-		Set<INamedElement> allFBs;
-		if (type instanceof SubAppType) {
-			parentChange.add(
-					new RenameTypeChange(typeEntry, getNewName() + TypeLibraryTags.SUBAPP_TYPE_FILE_ENDING_WITH_DOT));
-		} else {
-			parentChange
-					.add(new RenameTypeChange(typeEntry, getNewName() + TypeLibraryTags.FB_TYPE_FILE_ENDING_WITH_DOT));
-		}
-		final CompositeChange change = new CompositeChange(Messages.Refactoring_AffectedInstancesOfFB);
-		allFBs = InstanceSearch.performProjectSearch(typeEntry.getFile().getProject(),
-				FBTypeSearch.createFBTypeSearch(type));
-		allFBs.stream().map(FBNetworkElement.class::cast).map(fbn -> new UpdateInstancesChange(fbn, typeEntry))
-				.forEach(change::add);
-		if (!allFBs.isEmpty()) {
-			parentChange.add(change);
-		}
-		return parentChange;
-	}
-
-	private Change createSubChange(final INamedElement element) {
-		if (element instanceof final StructuredType stElement) {
-			return new StructuredTypeMemberChange(stElement, typeEntry, typeEntry.getTypeName(), getNewName());
-		}
-		if (element instanceof final FBType fbType) {
-			return new InterfaceDataTypeChange(fbType, typeEntry, oldName);
-		}
-		if (element instanceof final FBNetworkElement elem) {
-			return new UpdateInstancesChange(elem, typeEntry);
-		}
-		return null;
-	}
-
-	public RefactoringStatus setAndValidateTypeName(final String name) {
-
-		final RefactoringStatus result = new RefactoringStatus();
-
-		if (getOldName().equals(name)) {
-			result.addFatalError(MessageFormat.format(" {0} is not a new Name", name)); //$NON-NLS-1$
-
-		} else if (nameExistsInTypeLibrary(name)) {
-			result.addFatalError(MessageFormat.format(Messages.RenameType_TypeExists, name));
-		}
-
-		if (result.isOK()) {
-			newName = name;
-		}
-		return result;
-
-	}
-
-	protected boolean nameExistsInTypeLibrary(final String name) {
-		return TypeLibraryManager.INSTANCE.getTypeLibrary(typeEntry.getFile().getProject()).find(name) != null;
-	}
-
-	@Override
-	public String getName() {
-		return Messages.RenameType_Name;
-	}
-
-	public TypeEntry getTypeEntry() {
-		return typeEntry;
-	}
-
-	public String getNewName() {
-		return newName;
-	}
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java
index 6eb5087..fdaecf5 100644
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java
+++ b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java
@@ -40,7 +40,6 @@
 import org.eclipse.fordiac.ide.model.IdentifierVerifier;
 import org.eclipse.fordiac.ide.model.buildpath.util.BuildpathUtil;
 import org.eclipse.fordiac.ide.model.helpers.PackageNameHelper;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibrary;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
 import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
@@ -181,13 +180,12 @@
 							getTypeTemplatesFolder().toString()));
 			return false;
 		}
-		if (super.getFileName().isEmpty()) {
+		if (getTypeName().isEmpty()) {
 			setErrorMessage(Messages.NewFBTypeWizardPage_EmptyTypenameIsNotValid);
 			return false;
 		}
 
-		// use super.getFileName here to get the type name without extension
-		final Optional<String> errorMessage = IdentifierVerifier.verifyIdentifier(super.getFileName());
+		final Optional<String> errorMessage = IdentifierVerifier.verifyIdentifier(getTypeName());
 		if (errorMessage.isPresent()) {
 			setErrorMessage(errorMessage.get());
 			return false;
@@ -204,9 +202,8 @@
 			return false;
 		}
 
-		// Check for duplicates in typelib if a project is selected
-		if (null != getContainerFullPath() && isDuplicate()) {
-			setErrorMessage(MessageFormat.format(Messages.NewFBTypeWizardPage_TypeAlreadyExists, getFileName()));
+		if (isDuplicate()) {
+			setErrorMessage(MessageFormat.format(Messages.NewFBTypeWizardPage_TypeAlreadyExists, getFullTypeName()));
 			return false;
 		}
 
@@ -214,38 +211,21 @@
 	}
 
 	private boolean isDuplicate() {
-		// here: getContainerFullPath().segment(0) --> name of the selected project
-		final TypeLibrary lib = TypeLibraryManager.INSTANCE
-				.getTypeLibrary(ResourcesPlugin.getWorkspace().getRoot().getProject(getContainerFullPath().segment(0)));
-
-		final String[] s = getTemplate().getName().split("\\."); //$NON-NLS-1$
-		final String fileExtension = s[s.length - 1].toUpperCase();
-		if (fileExtension.equals(TypeLibraryTags.DATA_TYPE_FILE_ENDING)) {
-			return isDtpDuplicate(lib);
+		final TypeLibrary lib = getTypeLibrary();
+		if (lib == null) {
+			return false;
 		}
-		if (fileExtension.equals(TypeLibraryTags.GLOBAL_CONST_FILE_ENDING)) {
-			return isGcfDuplicate(lib);
+
+		final String fileExtension = IPath.fromFile(getTemplate()).getFileExtension();
+		final Map<String, ?> types;
+		if (TypeLibraryTags.ATTRIBUTE_TYPE_FILE_ENDING.equalsIgnoreCase(fileExtension)) {
+			types = lib.getAttributeTypes();
+		} else if (TypeLibraryTags.GLOBAL_CONST_FILE_ENDING.equalsIgnoreCase(fileExtension)) {
+			types = lib.getGlobalConstants();
+		} else {
+			types = lib.getProgramTypes();
 		}
-		return isSubFbtAdpDuplicate(lib, fileExtension);
-	}
-
-	private boolean isSubFbtAdpDuplicate(final TypeLibrary lib, final String fileExtension) {
-		final Map<String, ? extends TypeEntry> map = switch (fileExtension) {
-		case TypeLibraryTags.SUBAPP_TYPE_FILE_ENDING -> lib.getSubAppTypes();
-		case TypeLibraryTags.FB_TYPE_FILE_ENDING, TypeLibraryTags.FC_TYPE_FILE_ENDING -> lib.getFbTypes();
-		case TypeLibraryTags.ADAPTER_TYPE_FILE_ENDING -> lib.getAdapterTypes();
-		default -> null;
-		};
-		return (null != map) && (map.containsKey(super.getFileName()));
-	}
-
-	private boolean isDtpDuplicate(final TypeLibrary lib) {
-		return lib.getDataTypeLibrary().getTypeIfExists(super.getFileName()) != null;
-	}
-
-	private boolean isGcfDuplicate(final TypeLibrary lib) {
-		final Map<String, ?> map = lib.getGlobalConstants();
-		return map.containsKey(super.getFileName());
+		return types.containsKey(getFullTypeName());
 	}
 
 	public File getTemplate() {
@@ -286,6 +266,19 @@
 		return retval;
 	}
 
+	public String getTypeName() {
+		// use super.getFileName here to get the type name without extension
+		return super.getFileName();
+	}
+
+	public String getFullTypeName() {
+		final String packageName = getPackageName();
+		if (!packageName.isBlank()) {
+			return packageName + PackageNameHelper.PACKAGE_NAME_DELIMITER + getTypeName();
+		}
+		return getTypeName();
+	}
+
 	public boolean getOpenType() {
 		return openType;
 	}
diff --git a/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF
index 439484f..be76013 100644
--- a/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-ActivationPolicy: lazy
 Bundle-SymbolicName: org.eclipse.fordiac.ide.ui.errormessages
 Bundle-Activator: org.eclipse.fordiac.ide.ui.errormessages.Activator
-Bundle-Version: 1.13.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ui.errormessages
diff --git a/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
index faf9cbd..ecaf7b8 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
@@ -15,7 +15,6 @@
  org.eclipse.ui.views.properties.tabbed,
  org.eclipse.core.commands,
  org.eclipse.e4.core.services,
- org.eclipse.osgi.services,
  org.eclipse.e4.core.contexts,
  org.eclipse.fordiac.ide.ui.errormessages,
  org.eclipse.nebula.widgets.grid;visibility:=reexport,
@@ -23,9 +22,10 @@
  org.eclipse.e4.ui.workbench,
  org.eclipse.e4.ui.model.workbench,
  org.eclipse.emf.ecore
+Import-Package: org.osgi.service.event 
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Common UI Controls
 Bundle-Activator: org.eclipse.fordiac.ide.ui.UIPlugin
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/DirectoryChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/DirectoryChooserControl.java
deleted file mode 100644
index 499fde2..0000000
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/DirectoryChooserControl.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2011, 2014 Profactor GmbH, fortiss GmbH
- * 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Gerhard Ebenhofer, Alois Zoitl
- *     - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.ui;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * The Class DirectoryChooserControl.
- * 
- * @author Gerhard Ebenhofer (gerhard.ebenhofer@profactor.at)
- */
-public class DirectoryChooserControl extends Composite {
-
-	/** The text. */
-	private Text text = null;
-
-	/** The label text. */
-	private final String labelText;
-
-	/**
-	 * Instantiates a new directory chooser control.
-	 * 
-	 * @param parent the parent
-	 * @param style  the style
-	 * @param label  the label
-	 */
-	public DirectoryChooserControl(final Composite parent, final int style, final String label) {
-		super(parent, style);
-		this.labelText = label;
-		initialize(false);
-	}
-
-	/**
-	 * Initialize.
-	 */
-	private void initialize(boolean useLabel) {
-		GridData gridData = new org.eclipse.swt.layout.GridData();
-		gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER;
-		GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 3;
-		gridLayout.marginHeight = 5;
-		gridLayout.marginWidth = 0;
-		CLabel cLabel = new CLabel(this, SWT.NONE);
-		if (useLabel) {
-			cLabel.setText(this.labelText);
-		} else {
-			cLabel.setText(FordiacMessages.DirectoryChooserControl_LABEL_ChooseDirectory);
-		}
-		text = new Text(this, SWT.BORDER);
-		text.setLayoutData(gridData);
-		Button button = new Button(this, SWT.NONE);
-		button.setText(FordiacMessages.DirectoryChooserControl_LABEL_Browse);
-		button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
-			@Override
-			public void widgetSelected(final org.eclipse.swt.events.SelectionEvent e) {
-				DirectoryDialog dialog = new DirectoryDialog(Display.getDefault().getActiveShell(), SWT.SAVE);
-				String dir = text.getText();
-
-				dialog.setText(labelText);
-				dialog.setMessage(FordiacMessages.DirectoryChooserControl_LABEL_SelectdDirectoryDialogMessage);
-
-				if (!dir.equals("")) { //$NON-NLS-1$
-					dialog.setFilterPath(dir);
-				}
-
-				String selectedDirectory = dialog.open();
-
-				if (selectedDirectory != null) {
-					text.setText(selectedDirectory);
-					notifyDirectoryListeners();
-				}
-
-			}
-		});
-
-		text.addTraverseListener(e -> {
-			if (e.detail == SWT.TRAVERSE_RETURN) {
-				e.doit = false;
-				notifyDirectoryListeners();
-			}
-		});
-
-		text.addFocusListener(new FocusAdapter() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
-			 * .events.FocusEvent)
-			 */
-			@Override
-			public void focusLost(org.eclipse.swt.events.FocusEvent e) {
-				notifyDirectoryListeners();
-			}
-
-		});
-
-		this.setLayout(gridLayout);
-	}
-
-	/** The listeners. */
-	private List<IDirectoryChanged> listeners = new ArrayList<>();
-
-	/**
-	 * Adds the directory changed listener.
-	 * 
-	 * @param listener the listener
-	 */
-	public void addDirectoryChangedListener(final IDirectoryChanged listener) {
-		if (!listeners.contains(listener)) {
-			listeners.add(listener);
-		}
-	}
-
-	/**
-	 * Removes the directory changed listener.
-	 * 
-	 * @param listener the listener
-	 */
-	public void removeDirectoryChangedListener(final IDirectoryChanged listener) {
-		if (listeners.contains(listener)) {
-			listeners.remove(listener);
-		}
-	}
-
-	/**
-	 * Notify directory listeners.
-	 */
-	private void notifyDirectoryListeners() {
-		for (Iterator<IDirectoryChanged> iter = listeners.iterator(); iter.hasNext();) {
-			IDirectoryChanged l = iter.next();
-			l.directoryChanged(text.getText());
-		}
-	}
-
-	/**
-	 * Gets the directory.
-	 * 
-	 * @return the directory
-	 */
-	public String getDirectory() {
-		return text.getText();
-	}
-
-	/**
-	 * Sets the directory.
-	 * 
-	 * @param dir the new directory
-	 */
-	public void setDirectory(final String dir) {
-		text.setText(dir);
-	}
-} // @jve:decl-index=0:visual-constraint="10,10"
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java
index 77c0b81..9d0590f 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java
@@ -122,6 +122,10 @@
 
 	public static String Group_LABEL_DisableAutoResize; // NOSONAR
 	public static String Group_TOOLTIP_DisableAutoResize; // NOSONAR
+	public static String Dialog_Add_Or_Remove_Pin; // NOSONAR
+	public static String Dialog_Repair_Pin;// NOSONAR
+	public static String Dialog_Repair_Add;// NOSONAR
+	public static String Dialog_Repair_Remove;// NOSONAR
 
 	public static String Subapp_Size_DisableAutoResize; // NOSONAR
 
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IDirectoryChanged.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IDirectoryChanged.java
deleted file mode 100644
index 799d4d2..0000000
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IDirectoryChanged.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Profactor GmbH
- * 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Gerhard Ebenhofer
- *     - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.ui;
-
-/**
- * The Interface IDirectoryChanged.
- */
-public interface IDirectoryChanged {
-
-	/**
-	 * Directory changed.
-	 * 
-	 * @param newDirectory the new directory
-	 */
-	void directoryChanged(String newDirectory);
-
-}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IFileChanged.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IFileChanged.java
deleted file mode 100644
index 8c1598b..0000000
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IFileChanged.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Profactor GmbH
- * 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Gerhard Ebenhofer
- *     - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.ui;
-
-/**
- * The Interface IFileChanged.
- */
-public interface IFileChanged {
-
-	/**
-	 * File changed.
-	 * 
-	 * @param newFile the new file - not guaranted that the file exists
-	 */
-	void fileChanged(String newFile);
-
-}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java
index 9f1fe26..ca58721 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java
@@ -42,7 +42,9 @@
 	// Part Images
 
 	// Icon Images
-	ICON_4DIAC_16, ICON_4DIAC_32,
+	ICON_4DIAC_16,
+	ICON_4DIAC_32,
+	ICON_4DIAC_FORTE,
 	ICON_ADAPTER_LIST,
 	ICON_ADAPTER_TYPE, ICON_ADD_STATE, ICON_ALGORITHM, ICON_APPLICATION,
 	ICON_ATTRIBUTE_DECLARATION,
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties
index 2ef95ed..cd2cb4a 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties
@@ -88,7 +88,7 @@
 With=With
 
 DirectoryChooserControl_LABEL_ChooseDirectory=Choose Directory
-DirectoryChooserControl_LABEL_Browse=Browse
+DirectoryChooserControl_LABEL_Browse=&Browse...
 DirectoryChooserControl_LABEL_SelectdDirectoryDialogMessage=Select the directory ...
 
 FordiacPreferencePage_LABEL_PreferencePageDescription=4diac IDE Preferences Page
@@ -118,5 +118,8 @@
 
 Group_LABEL_DisableAutoResize=Disable Auto-Resize
 Group_TOOLTIP_DisableAutoResize=Disable Auto-Resize
-
 Subapp_Size_DisableAutoResize=Disable Auto-Resize
+Dialog_Add_Or_Remove_Pin=Add pin to type or remove pin from instances?
+Dialog_Repair_Pin= Repair error pin
+Dialog_Repair_Add=add pin to definition
+Dialog_Repair_Remove=Remove pin from instances
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/AbstractChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/AbstractChooserControl.java
new file mode 100644
index 0000000..65a6b02
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/AbstractChooserControl.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2024 Profactor GmbH, fortiss GmbH,
+ *                          Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Gerhard Ebenhofer, Alois Zoitl
+ *     - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - extracted from DirectoryChooser Control
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.widget;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.fordiac.ide.ui.FordiacMessages;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Base class for a chooser control, which has combined a text field and a
+ * button.
+ *
+ */
+public abstract class AbstractChooserControl extends Composite {
+
+	public interface IChooserValueChanged {
+
+		/**
+		 * Value in the c hooser control has changed.
+		 *
+		 * @param newValue the new value in the chooser control
+		 */
+		void chooserChanged(String newValue);
+
+	}
+
+	private final List<IChooserValueChanged> listeners = new ArrayList<>();
+
+	private Text text = null;
+
+	/**
+	 * Instantiates a new directory chooser control.
+	 *
+	 * @param parent the parent
+	 * @param style  the style
+	 * @param label  the label
+	 */
+	protected AbstractChooserControl(final Composite parent, final int style, final String label,
+			final boolean labelInParent) {
+		super(parent, style);
+		initialize(label, labelInParent);
+	}
+
+	/**
+	 * Initialize.
+	 *
+	 * @param labelInParent
+	 */
+	private void initialize(final String labelText, final boolean labelInParent) {
+		GridLayoutFactory.fillDefaults().numColumns(3).margins(0, 5).applyTo(this);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).grab(true, false).applyTo(this);
+
+		final Label label = new Label(labelInParent ? getParent() : this, SWT.NONE);
+		label.setText(labelText);
+		if (labelInParent) {
+			label.moveAbove(this);
+		}
+
+		text = new Text(this, SWT.BORDER);
+		GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).grab(true, false).applyTo(text);
+
+		final Button button = new Button(this, SWT.NONE);
+		button.setText(FordiacMessages.DirectoryChooserControl_LABEL_Browse);
+		button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
+			@Override
+			public void widgetSelected(final org.eclipse.swt.events.SelectionEvent e) {
+
+				final String selectedValue = openChooserDialog(label.getText(), text.getText());
+
+				if (selectedValue != null) {
+					text.setText(selectedValue);
+					notifyListeners();
+				}
+
+			}
+
+		});
+
+		text.addTraverseListener(e -> {
+			if (e.detail == SWT.TRAVERSE_RETURN) {
+				e.doit = false;
+				notifyListeners();
+			}
+		});
+
+		text.addFocusListener(new FocusAdapter() {
+
+			/*
+			 * (non-Javadoc)
+			 *
+			 * @see org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
+			 * .events.FocusEvent)
+			 */
+			@Override
+			public void focusLost(final org.eclipse.swt.events.FocusEvent e) {
+				notifyListeners();
+			}
+
+		});
+
+	}
+
+	protected abstract String openChooserDialog(final String labelText, final String value);
+
+	/**
+	 * Adds the chooser changed listener.
+	 *
+	 * @param listener the listener
+	 */
+	public void addChooserValueChangedListener(final IChooserValueChanged listener) {
+		if (!listeners.contains(listener)) {
+			listeners.add(listener);
+		}
+	}
+
+	/**
+	 * Removes the chooser changed listener.
+	 *
+	 * @param listener the listener
+	 */
+	public void removeChooserChangedListener(final IChooserValueChanged listener) {
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Notify chooser listeners.
+	 */
+	private void notifyListeners() {
+		for (final IChooserValueChanged l : listeners) {
+			l.chooserChanged(text.getText());
+		}
+	}
+
+	public String getValue() {
+		return text.getText();
+	}
+
+	/**
+	 * Sets the value
+	 *
+	 * @param newValue the new value for the chooser dialog
+	 */
+	public void setValue(final String newValue) {
+		text.setText(newValue);
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/DirectoryChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/DirectoryChooserControl.java
new file mode 100644
index 0000000..72808e4
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/DirectoryChooserControl.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2024 Profactor GmbH, fortiss GmbH,
+ *                          Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Gerhard Ebenhofer, Alois Zoitl
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.widget;
+
+import org.eclipse.fordiac.ide.ui.FordiacMessages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+
+/**
+ * The Class DirectoryChooserControl.
+ *
+ */
+public class DirectoryChooserControl extends AbstractChooserControl {
+
+	/**
+	 * Instantiates a new directory chooser control.
+	 *
+	 * @param parent the parent
+	 * @param style  the style
+	 * @param label  the label
+	 */
+	public DirectoryChooserControl(final Composite parent, final int style, final String label) {
+		super(parent, style, label, false);
+	}
+
+	public DirectoryChooserControl(final Composite parent, final int style, final String label,
+			final boolean labelInParent) {
+		super(parent, style, label, labelInParent);
+	}
+
+	@Override
+	protected String openChooserDialog(final String labelText, final String value) {
+		final DirectoryDialog dialog = new DirectoryDialog(this.getShell(), SWT.SAVE);
+		dialog.setText(labelText);
+		dialog.setMessage(FordiacMessages.DirectoryChooserControl_LABEL_SelectdDirectoryDialogMessage);
+
+		if (!value.isEmpty()) {
+			dialog.setFilterPath(value);
+		}
+		return dialog.open();
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/FileChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/FileChooserControl.java
new file mode 100644
index 0000000..ca9b870
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/FileChooserControl.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.widget;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+
+public class FileChooserControl extends AbstractChooserControl {
+
+	public FileChooserControl(final Composite parent, final int style, final String label,
+			final boolean labelInParent) {
+		super(parent, style, label, labelInParent);
+	}
+
+	public FileChooserControl(final Composite parent, final int style, final String label) {
+		super(parent, style, label, false);
+	}
+
+	@Override
+	protected String openChooserDialog(final String labelText, final String value) {
+		final FileDialog dialog = new FileDialog(this.getShell(), SWT.OPEN);
+		dialog.setText(labelText);
+
+		if (!value.isEmpty()) {
+			dialog.setFilterPath(value);
+		}
+
+		return dialog.open();
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF
index c3d118f..656af87 100644
--- a/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF
@@ -9,7 +9,7 @@
  org.eclipse.fordiac.ide.systemmanagement
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Utils
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.fordiac.ide.util;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF
index 4eb0bce..01a78ab 100644
--- a/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Validation
 Bundle-SymbolicName: org.eclipse.fordiac.ide.validation;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Activator: org.eclipse.fordiac.ide.validation.Activator
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.core.runtime,
diff --git a/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF
index 0cb5953..2690d40 100644
--- a/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
  org.eclipse.fordiac.ide.systemmanagement
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Name: Main
 Bundle-Activator: org.eclipse.fordiac.ide.Activator
 Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide/pom.xml b/plugins/org.eclipse.fordiac.ide/pom.xml
index ca3be49..646cbb6 100644
--- a/plugins/org.eclipse.fordiac.ide/pom.xml
+++ b/plugins/org.eclipse.fordiac.ide/pom.xml
@@ -6,7 +6,7 @@
     <relativePath>../../pom.xml</relativePath>
     <groupId>org.eclipse.fordiac</groupId>
     <artifactId>parent</artifactId>
-    <version>2.0.1-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.fordiac.ide</artifactId>
diff --git a/pom.xml b/pom.xml
index 7941c17..485ba3f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.eclipse.fordiac</groupId>
 	<artifactId>parent</artifactId>
-	<version>2.0.1-SNAPSHOT</version>
+	<version>3.0.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>Eclipse 4diac IDE Parent Project</name>
 	<modules>
@@ -19,16 +19,16 @@
 		<maven.compiler.source>17</maven.compiler.source>
 		<maven.compiler.target>17</maven.compiler.target>
 		<maven.compiler.release/>
-		<tycho.version>4.0.4</tycho.version>
-		<tycho-repo.url>https://download.eclipse.org/releases/2023-12</tycho-repo.url>
+		<tycho.version>4.0.6</tycho.version>
+		<tycho-repo.url>https://download.eclipse.org/releases/2024-03</tycho-repo.url>
 		<sonar.exclusions>**/src-gen/**/*,**/xtend-gen/**/*</sonar.exclusions>
 		<sonar.projectName>Eclipse 4diac</sonar.projectName>
 		<sonar.java.source>17</sonar.java.source>
 		<org.eclipse.justj.jre.repository>https://download.eclipse.org/justj/jres/17/updates/release/latest</org.eclipse.justj.jre.repository>
-        <xtend-version>2.33.0</xtend-version>
-        <eclipse.platform.version>4.30</eclipse.platform.version>
-        <equinox.executable.version>3.8.2300</equinox.executable.version>
-        <eclipse.cbi.version>1.4.2</eclipse.cbi.version>
+        <xtend-version>2.34.0</xtend-version>
+        <eclipse.platform.version>4.31</eclipse.platform.version>
+        <equinox.executable.version>3.8.2400</equinox.executable.version>
+        <eclipse.cbi.version>1.4.3</eclipse.cbi.version>
 	</properties>
 
 	<repositories>
@@ -62,7 +62,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-clean-plugin</artifactId>
-				<version>3.1.0</version>
+				<version>3.3.2</version>
 				<configuration>
 					<filesets>
 						<fileset>
@@ -118,7 +118,7 @@
 						<artifact>
 							<groupId>org.eclipse.fordiac</groupId>
 							<artifactId>org.eclipse.fordiac.ide.product</artifactId>
-							<version>2.0.1-SNAPSHOT</version>
+							<version>3.0.0-SNAPSHOT</version>
 						</artifact>
 					</target>
 					
@@ -255,7 +255,7 @@
 		<dependency>
 			<groupId>org.junit.jupiter</groupId>
 			<artifactId>junit-jupiter</artifactId>
-			<version>5.10.0</version>
+			<version>5.10.2</version>
 		</dependency>
 		<dependency>
 			<groupId>org.eclipse.xtend</groupId>
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF
index fe018c7..024f381 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Contracts Tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.contracts
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Fragment-Host: org.eclipse.fordiac.ide.contracts
 Automatic-Module-Name: org.eclipse.fordiac.ide.test.contracts
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml b/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml
index 6733482..d21c01b 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml
@@ -6,10 +6,10 @@
     <relativePath>../../pom.xml</relativePath>
     <groupId>org.eclipse.fordiac</groupId>
     <artifactId>parent</artifactId>
-    <version>2.0.1-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.fordiac.ide.test.contracts</artifactId>
   <packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
 </project> 
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java
index 922be4c..49c09fc 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java
@@ -21,7 +21,7 @@
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 import org.junit.jupiter.api.Test;
 
 class ContractTest {
@@ -32,7 +32,7 @@
 		final Contract contract = Contract
 				.getContractFromComment("ASSUMPTION CU occurs every [11,22]ms" + System.lineSeparator() //$NON-NLS-1$
 						+ "GUARANTEE Whenever event CU occurs, then event CUO occurs within [7,10]ms"); //$NON-NLS-1$
-		final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+		final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 		subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
 		contract.setOwner(subApp);
 		final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
@@ -55,7 +55,7 @@
 		final Contract contract = Contract
 				.getContractFromComment("ASSUMPTION CU occurs every [11,22]ms" + System.lineSeparator() //$NON-NLS-1$
 						+ "GUARANTEE Whenever event CU occurs, then event CUO occurs within [7,10]ms"); //$NON-NLS-1$
-		final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+		final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 		subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
 		contract.setOwner(subApp);
 		final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java
index 6f5e734..d0f93d7 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java
@@ -21,7 +21,7 @@
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 import org.junit.jupiter.api.Test;
 
 class SimplifyAssumptionTest {
@@ -32,7 +32,7 @@
 		final Contract contract = Contract
 				.getContractFromComment("ASSUMPTION CU occurs every [11,22]ms" + System.lineSeparator() //$NON-NLS-1$
 						+ "ASSUMPTION CU occurs every [5,16]ms"); //$NON-NLS-1$
-		final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+		final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 		subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
 		contract.setOwner(subApp);
 		final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java
index d476435..ba3176e 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java
@@ -21,7 +21,7 @@
 import org.eclipse.fordiac.ide.model.libraryElement.Event;
 import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
 import org.junit.jupiter.api.Test;
 
 class SimplifyGuaranteeTest {
@@ -31,7 +31,7 @@
 		final Contract contract = Contract.getContractFromComment(
 				"GUARANTEE Whenever event CU occurs, then event CUO occurs within [7,100]ms" + System.lineSeparator() //$NON-NLS-1$
 						+ "GUARANTEE Whenever event CU occurs, then event CUO occurs within [50,90]ms"); //$NON-NLS-1$
-		final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+		final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 		subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
 		contract.setOwner(subApp);
 		final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
diff --git a/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF
index d7e5242..eef63d7 100644
--- a/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: forte_ng Tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.export
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Fragment-Host: org.eclipse.fordiac.ide.export.forte_ng
 Automatic-Module-Name: org.eclipse.fordiac.ide.test.export
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend b/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend
index 20a87d7..466f308 100644
--- a/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend
+++ b/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend
@@ -14,6 +14,7 @@
 
 import org.eclipse.fordiac.ide.export.forte_lua.st.StructuredTextSupportFactory
 import org.eclipse.fordiac.ide.export.language.ILanguageSupportFactory
+import org.eclipse.fordiac.ide.globalconstantseditor.GlobalConstantsStandaloneSetup
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory
 import org.eclipse.fordiac.ide.model.typelibrary.DataTypeLibrary
 import org.eclipse.fordiac.ide.structuredtextalgorithm.STAlgorithmStandaloneSetup
@@ -33,6 +34,7 @@
 	@BeforeAll
 	def static void setup() {
 		new DataTypeLibrary()
+		GlobalConstantsStandaloneSetup.doSetup()
 		STFunctionStandaloneSetup.doSetup()
 		STAlgorithmStandaloneSetup.doSetup()
 		StructuredTextSupportFactory.register()
diff --git a/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF
index 5487425..37925dd 100644
--- a/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: FB Interpreter
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.fb.interpreter
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.emf.ecore.xmi,
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF
index 99a03f7..1a5f85e 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Model Command Tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.model.commands
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Fragment-Host: org.eclipse.fordiac.ide.model.commands
 Automatic-Module-Name: org.eclipse.fordiac.ide.test.model.commands
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -10,7 +10,6 @@
 Require-Bundle: org.eclipse.core.resources,
  org.junit,
  org.eclipse.e4.core.services,
- org.eclipse.osgi.services,
  org.eclipse.e4.core.contexts,
  org.eclipse.fordiac.ide.application,
  org.eclipse.fordiac.ide.elk,
@@ -21,4 +20,5 @@
  org.junit.jupiter.api,
  org.junit.jupiter.params,
  org.junit.jupiter.params.provider,
- org.opentest4j
+ org.opentest4j,
+ org.osgi.service.event
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml b/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml
index 43af62c..803117d 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml
@@ -6,10 +6,10 @@
     <relativePath>../../pom.xml</relativePath>
     <groupId>org.eclipse.fordiac</groupId>
     <artifactId>parent</artifactId>
-    <version>2.0.1-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.fordiac.ide.test.model.commands</artifactId>
   <packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
 </project> 
\ No newline at end of file
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java
index f059df6..0dc51ce 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java
@@ -34,14 +34,14 @@
 import org.junit.jupiter.params.provider.Arguments;
 
 public class CreateStructFromInterfaceElementsCommandTest
-extends CommandTestBase<CreateStructFromInterfaceElementsCommandTest.State> {
+		extends CommandTestBase<CreateStructFromInterfaceElementsCommandTest.State> {
 	private static final String SET_STRUCT_NAME = "setStruct"; //$NON-NLS-1$
 
 	public static class State extends CommandTestBase.StateBase {
 		private final SubApp subApp;
 
 		public State() {
-			subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+			subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 			subApp.setInterface(LibraryElementFactory.eINSTANCE.createInterfaceList());
 		}
 
@@ -65,12 +65,12 @@
 				new ExecutionDescription<>("Prepare Functionblocks", //$NON-NLS-1$
 						CreateStructFromInterfaceElementsCommandTest::createInterfaceElements, //
 						CreateStructFromInterfaceElementsCommandTest::verifyFBCreation //
-						), //
+				), //
 				new ExecutionDescription<>("Replace first element", //$NON-NLS-1$
 						CreateStructFromInterfaceElementsCommandTest::testWithOneElement, //
 						CreateStructFromInterfaceElementsCommandTest::verifyTestWithOneElement //
-						) //
-				);
+				) //
+		);
 		final Collection<Arguments> a = new ArrayList<>();
 		a.addAll(describeCommand("FB with two inputs and outputs", State::new, //$NON-NLS-1$
 				(StateVerifier<State>) CreateStructFromInterfaceElementsCommandTest::verifyInitalValues,
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java
index 23ae31d..27f3b58 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java
@@ -34,10 +34,10 @@
 		}
 
 		public State() {
-			subapp = LibraryElementFactory.eINSTANCE.createSubApp();
+			subapp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 		}
 
-		public State(State s) {
+		public State(final State s) {
 			subapp = EcoreUtil.copy(s.getSubApp());
 		}
 
@@ -47,23 +47,24 @@
 		}
 	}
 
-	protected static Collection<Arguments> describeCommand(String description, StateInitializer<?> initializer,
-			StateVerifier<?> initialVerifier, List<ExecutionDescription<?>> commands) {
+	protected static Collection<Arguments> describeCommand(final String description,
+			final StateInitializer<?> initializer, final StateVerifier<?> initialVerifier,
+			final List<ExecutionDescription<?>> commands) {
 		return describeCommand(description, initializer, initialVerifier, commands, CommandTestBase::defaultUndoCommand,
 				CommandTestBase::defaultRedoCommand);
 	}
 
-	protected static void verifyDefaultInitialValues(State state, State oldState, TestFunction t) {
+	protected static void verifyDefaultInitialValues(final State state, final State oldState, final TestFunction t) {
 		t.test(state.getSubApp());
 		t.test(!state.getSubApp().isUnfolded());
 	}
 
-	protected static void verifyUnfolded(State state, State oldState, TestFunction t) {
+	protected static void verifyUnfolded(final State state, final State oldState, final TestFunction t) {
 		t.test(state.getSubApp());
 		t.test(state.getSubApp().isUnfolded());
 	}
 
-	private static State toggleFolding(State state) {
+	private static State toggleFolding(final State state) {
 		state.setCommand(new ToggleSubAppRepresentationCommand(state.getSubApp()));
 
 		return commandExecution(state);
@@ -71,8 +72,8 @@
 
 	// define here the list of test sequences
 	// multiple execution descriptions are possible -> define in test class
-	protected static List<Arguments> createCommands(List<ExecutionDescription<?>> executionDescriptions) {
-		List<Arguments> commands = new ArrayList<>();
+	protected static List<Arguments> createCommands(final List<ExecutionDescription<?>> executionDescriptions) {
+		final List<Arguments> commands = new ArrayList<>();
 		// test series 1
 		commands.addAll(describeCommand("Toggling Attribute", // //$NON-NLS-1$
 				State::new, //
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java
index 126de0d..2606d09 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java
@@ -17,7 +17,7 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.eclipse.fordiac.ide.application.commands.NewSubAppCommandTest;
+import org.eclipse.fordiac.ide.model.commands.create.CreateSubAppInstanceCommand;
 import org.eclipse.fordiac.ide.model.commands.create.FBCreateCommandTest;
 import org.eclipse.fordiac.ide.model.commands.testinfra.FBNetworkTestBase;
 import org.eclipse.fordiac.ide.model.libraryElement.FB;
@@ -37,17 +37,16 @@
 
 	private static State initState() {
 		State s = new State();
-		s = NewSubAppCommandTest.createEmptySubApp(s);
-		final SubApp subapp = (SubApp) s.getFbNetwork().getElementNamed(SUBAPP);
 
 		final SubAppType subappType = LibraryElementFactory.eINSTANCE.createSubAppType();
 		subappType.setInterfaceList(LibraryElementFactory.eINSTANCE.createInterfaceList());
 		subappType.setName(SUBAPP);
-		subappType.setFBNetwork(subapp.getSubAppNetwork());
-		subapp.setSubAppNetwork(null);
+		subappType.setFBNetwork(LibraryElementFactory.eINSTANCE.createFBNetwork());
 
-		subapp.setTypeEntry(
-				new SubAppTypeEntryMock(subappType, TypeLibraryManager.INSTANCE.getTypeLibrary(null), null));
+		final SubAppTypeEntryMock typeEntry = new SubAppTypeEntryMock(subappType,
+				TypeLibraryManager.INSTANCE.getTypeLibrary(null), null);
+		s.setCommand(new CreateSubAppInstanceCommand(typeEntry, s.getFbNetwork(), 0, 0));
+		s = commandExecution(s);
 
 		return s;
 	}
@@ -123,8 +122,8 @@
 						new ExecutionDescription<>("untype subapp", //$NON-NLS-1$
 								UntypeSubAppCommandTest::untypeSubApp, //
 								UntypeSubAppCommandTest::verifyUntypeSubApp //
-								)) //
-				));
+						)) //
+		));
 
 		a.addAll(describeCommand("Start with typed subapp and two FBs in subapp network", //$NON-NLS-1$
 				UntypeSubAppCommandTest::initStateWithFilledSubAppNetwork, //
@@ -133,8 +132,8 @@
 						new ExecutionDescription<>("untype subapp", //$NON-NLS-1$
 								UntypeSubAppCommandTest::untypeSubApp, //
 								UntypeSubAppCommandTest::verifyUntypeSubAppWithFilledSubAppNetwork //
-								)) //
-				));
+						)) //
+		));
 
 		return a;
 	}
diff --git a/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF
index c5b7cad..b43feeb 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Evaluator Tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.model.eval
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Fragment-Host: org.eclipse.fordiac.ide.model.eval
 Automatic-Module-Name: org.eclipse.fordiac.ide.test.model.eval
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF
index 428be93..de74786 100644
--- a/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Model Tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.model
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Automatic-Module-Name: org.eclipse.fordiac.ide.test.model
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Vendor: Eclipse 4diac
diff --git a/tests/org.eclipse.fordiac.ide.test.model/pom.xml b/tests/org.eclipse.fordiac.ide.test.model/pom.xml
index 4fd3e52..5ec883d 100644
--- a/tests/org.eclipse.fordiac.ide.test.model/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.model/pom.xml
@@ -6,10 +6,10 @@
     <relativePath>../../pom.xml</relativePath>
     <groupId>org.eclipse.fordiac</groupId>
     <artifactId>parent</artifactId>
-    <version>2.0.1-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.fordiac.ide.test.model</artifactId>
   <packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
 </project> 
\ No newline at end of file
diff --git a/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java b/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java
index d9452ea..4304190 100644
--- a/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java
@@ -49,35 +49,34 @@
 		final var subapp = createSubappBusOutside(struct, muxblock, demuxblock);
 
 		addVerifyConnection(subapp, //
-				subapp.getInterfaceElement(SUBAPP_INPUT_NAME),//
+				subapp.getInterfaceElement(SUBAPP_INPUT_NAME), //
 				demuxblock.getInterfaceElement(DEMUX_IN), //
 				true //
-				);
+		);
 
 		addVerifyConnection(subapp, //
-				muxblock.getInterfaceElement(MUX_OUT),//
+				muxblock.getInterfaceElement(MUX_OUT), //
 				subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME), //
 				true //
-				);
+		);
 
 		addVerifyConnection(subapp, //
-				demuxblock.getInterfaceElement(STRUCT_ELEMENT_1),//
+				demuxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
 				muxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
 				true //
-				);
+		);
 
 		addVerifyConnection(subapp, //
-				demuxblock.getInterfaceElement(STRUCT_ELEMENT_2),//
+				demuxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
 				muxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
 				true //
-				);
+		);
 
 	}
 
 	@SuppressWarnings("squid:S5960")
 	private static DataConnection addVerifyConnection(final SubApp subapp, final IInterfaceElement source,
-			final IInterfaceElement destination,
-			final boolean expected) {
+			final IInterfaceElement destination, final boolean expected) {
 		final var conn = LibraryElementFactory.eINSTANCE.createDataConnection();
 		conn.setSource(source);
 		conn.setDestination(destination);
@@ -89,7 +88,7 @@
 
 	private static SubApp createSubappBusOutside(final StructuredType struct, final Multiplexer muxblock,
 			final Demultiplexer demuxblock) {
-		final var subapp = LibraryElementFactory.eINSTANCE.createSubApp();
+		final var subapp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 
 		final var input = LibraryElementFactory.eINSTANCE.createVarDeclaration();
 		input.setType(struct);
@@ -121,39 +120,39 @@
 		final var subapp = createSubappBusInside(muxblock, demuxblock);
 
 		addVerifyConnection(subapp, //
-				subapp.getInterfaceElement(SUBAPP_INPUT_NAME),//
+				subapp.getInterfaceElement(SUBAPP_INPUT_NAME), //
 				muxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
 				true //
-				);
+		);
 
 		addVerifyConnection(subapp, //
-				subapp.getInterfaceElement(SUBAPP_INPUT_NAME),//
+				subapp.getInterfaceElement(SUBAPP_INPUT_NAME), //
 				muxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
 				true //
-				);
+		);
 
 		addVerifyConnection(subapp, //
 				demuxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
-				subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME),//
+				subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME), //
 				true //
-				);
+		);
 
 		addVerifyConnection(subapp, //
 				demuxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
-				subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME),//
+				subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME), //
 				true //
-				);
+		);
 
 		addVerifyConnection(subapp, //
 				muxblock.getInterfaceElement(MUX_OUT), //
 				demuxblock.getInterfaceElement(DEMUX_IN), //
 				true //
-				);
+		);
 
 	}
 
 	private static SubApp createSubappBusInside(final Multiplexer muxblock, final Demultiplexer demuxblock) {
-		final var subapp = LibraryElementFactory.eINSTANCE.createSubApp();
+		final var subapp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
 
 		final var input = LibraryElementFactory.eINSTANCE.createVarDeclaration();
 		input.setType(IecTypes.ElementaryTypes.DINT);
diff --git a/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF
index 50229d6..d7c4bde 100644
--- a/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: 4diac IDE UI tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.ui
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: Eclipse 4diac
 Automatic-Module-Name: org.eclipse.fordiac.ide.test.ui
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF
index bc7399f..51c891e 100644
--- a/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Util Tests
 Bundle-SymbolicName: org.eclipse.fordiac.ide.test.util
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
 Fragment-Host: org.eclipse.fordiac.ide.util
 Automatic-Module-Name: org.eclipse.fordiac.ide.test.util
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.util/pom.xml b/tests/org.eclipse.fordiac.ide.test.util/pom.xml
index 6e2a0ea..bd2db8f 100644
--- a/tests/org.eclipse.fordiac.ide.test.util/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.util/pom.xml
@@ -6,10 +6,10 @@
     <relativePath>../../pom.xml</relativePath>
     <groupId>org.eclipse.fordiac</groupId>
     <artifactId>parent</artifactId>
-    <version>2.0.1-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.fordiac.ide.test.util</artifactId>
   <packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
 </project> 
\ No newline at end of file