diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py
index 3bc2315d3bab4306f8b0d6e9c57e020856c25cf7..5171e2dd0c491de899a7bc6613d102427afde7ba 100644
--- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py
+++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py
@@ -506,7 +506,7 @@ cGetUnsignedArray2DReg = """
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             ${fesaType}* ${regName} = (${fesaType}*)calloc(dim1*dim2, sizeof(${fesaType}));
-            pRegister->getVal${regType}Array2D(${regName}, dim1, dim2);\t//use automatic conversion for JAVA non-supported type
+            pRegister->getVal${regType}Array2D(${regName}, dim1, dim2);
             pDevice->${fesaFieldName}.set(${regName}, dim1, dim2, pContext);
             free(${regName});
         }
@@ -516,8 +516,8 @@ cGetUnsignedArrayReg = """
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
             uint32_t dim1 = pRegister->getDimension1();
-            ${regType}* ${regName} = (${regType}*)calloc(dim1, sizeof(${regType}));
-            pRegister->getVal${regType}Array(${regName}, dim1);\t//use automatic conversion for JAVA non-supported type
+            ${fesaType}* ${regName} = (${fesaType}*)calloc(dim1, sizeof(${fesaType}));
+            pRegister->getVal${regType}Array(${regName}, dim1);
             pDevice->${fesaFieldName}.set(${regName}, dim1, pContext);
             free(${regName});
         }
@@ -591,7 +591,7 @@ cSetArray2DReg = """
 
 cSetStringRegData = """
         (data.is${fesaFieldName_upper}Available()) ? pPLCDevice->getRegister("${regName}")->setValString(data.${fesaFieldName}.get()) :
-                                     pPLCDevice->getRegister("${regName}")->setValString(pDevice->${fesaFieldName}.get(pContext));"""
+                                     pPLCDevice->getRegister("${regName}")->setValString(pDevice->${fesaFieldName}.get(${context}));"""
                                     
 cSetStringArrayRegData = """
         {
@@ -751,9 +751,9 @@ def genCGetScalarReg(register):
 
 def genCGetArrayReg(register):
     if register.isUnsigned():
-        return cGetUnsignedArrayReg.replace('${regName}', register.name).replace('${regType}', register.getFesaType()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${fesaType}', register.getFesaType())
+        return cGetUnsignedArrayReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${fesaType}', register.getFesaType())
     else:
-        return cGetArrayReg.replace('${regName}', register.name).replace('${regType}', register.getFesaType()).replace('${fesaFieldName}', register.getFesaFieldName())
+        return cGetArrayReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName())
 
 def genCGetArray2DReg(register):
     if register.isUnsigned():
@@ -768,7 +768,7 @@ def genCDatatypeSet(blockName,propName,className):
     return cDatatypeSet.replace('${className}', className).replace('${blockName}', blockName).replace('${propName}', propName)
 
 def genCSetStringReg(register):
-    context = ", pContext"
+    context = "pContext"
     if register.isConfiguration():
         context = ""
     return cSetStringReg.replace('${regName}', register.name).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
@@ -781,7 +781,7 @@ def genCSetStringArrayReg(register):
 
 def genCSetScalarReg(register):
     cCast = ""
-    context = ", pContext"
+    context = "pContext"
     if register.isUnsigned():
         cCast = "(" + register.getCType() + ")"
     if register.isConfiguration():
@@ -801,7 +801,7 @@ def genCSetArray2DReg(register):
     return cSetArray2DReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
         
 def genCSetStringRegData(register):
-    context = ", pContext"
+    context = "pContext"
     if register.isConfiguration():
         context = ""
     return cSetStringRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
diff --git a/silecs-codegen/src/xml/test/AllTypes.silecsdesign b/silecs-codegen/src/xml/test/AllTypes.silecsdesign
index d72cc901edff1e0f66aec3d109a7f24cee0d52cd..43990ce50699b99de1403d40a4ae1ea3d4cf1afd 100644
--- a/silecs-codegen/src/xml/test/AllTypes.silecsdesign
+++ b/silecs-codegen/src/xml/test/AllTypes.silecsdesign
@@ -5,174 +5,226 @@
 		<Editor user-login="schwinn"/>
 	</Information>
 	<SILECS-Class name="AllTypes" version="0.1.0" domain="OPERATIONAL">
-		<Acquisition-Block name="MyROBlock" generateFesaProperty="true" fesaPropertyName="MyROBlockProp">
-			<Acquisition-Register name="RO_int8" generateFesaValueItem="true">
-				<scalar format="int8"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa">
-				<scalar format="int16"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa">
-				<scalar format="int32"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
-			<!--<Register name="RO_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<!--<Register name="RO_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa">
-				<scalar format="float32"/>
-			</Acquisition-Register>
-			<!--<Register name="RO_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" esaFieldName="RO_float64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa">
-				<scalar format="date"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa">
-				<scalar format="char"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa">
-				<scalar format="byte"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa">
-				<scalar format="word"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa">
-				<scalar format="dword"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa">
-				<scalar format="int"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa">
-				<scalar format="dint"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa">
-				<scalar format="real"/>
-			</Acquisition-Register>
-			<Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa">
-				<scalar format="dt"/>
-			</Acquisition-Register>
-		</Acquisition-Block>
-		<Setting-Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp">
-			<Setting-Register name="RW_int8" generateFesaValueItem="true">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-			<Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-			<Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-			<Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-			<Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-			<Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-			<!--<Register name="RW_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<!--<Register name="RW_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-			<!--<Register name="RW_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-			<Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-			<Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-			<Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-			<Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-			<Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-			<Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-			<Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-			<Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-			<Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
-		</Setting-Block>
-		<Command-Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp">
-			<Setting-Register name="WO_int8" generateFesaValueItem="true">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
-			<Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
-			<Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
-			<Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
-			<Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
-			<Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
-			<!--<Register name="WO_int64" format="int64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<!--<Register name="WO_uint64" format="uint64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
-			<!--<Register name="WO_float64" format="float64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
-			<Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
-			<Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa">
-				<array dim="10" format="date"/>
-			</Setting-Register>
-			<Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa">
-				<array dim="10" format="char"/>
-			</Setting-Register>
-			<Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
-			<Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa">
-				<array dim="10" format="word"/>
-			</Setting-Register>
-			<Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
-			<Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa">
-				<array dim="10" format="int"/>
-			</Setting-Register>
-			<Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
-			<Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa">
-				<array dim="10" format="real"/>
-			</Setting-Register>
-			<Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
-		</Command-Block>
+        <Acquisition-Block name="MyROBlock" generateFesaProperty="true" fesaPropertyName="MyROBlockProp">
+            <Acquisition-Register name="RO_int8" generateFesaValueItem="true">
+                <scalar format="int8"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa">
+                <scalar format="uint8"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa">
+                <scalar format="int16"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa">
+                <scalar format="uint16"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa">
+                <scalar format="int32"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa">
+                <scalar format="uint32"/>
+            </Acquisition-Register>
+            <!--<Register name="RO_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int64_fesa"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <!--<Register name="RO_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint64_fesa"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa">
+                <scalar format="float32"/>
+            </Acquisition-Register>
+            <!--<Register name="RO_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" esaFieldName="RO_float64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa">
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa">
+                <scalar format="date"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa">
+                <scalar format="char"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa">
+                <scalar format="byte"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa">
+                <scalar format="word"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa">
+                <scalar format="dword"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa">
+                <scalar format="int"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa">
+                <scalar format="dint"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa">
+                <scalar format="real"/>
+            </Acquisition-Register>
+            <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa">
+                <scalar format="dt"/>
+            </Acquisition-Register>
+        </Acquisition-Block>
+        <Setting-Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp">
+            <Setting-Register name="RW_int8" generateFesaValueItem="true">
+                <scalar format="int8"/>
+            </Setting-Register>
+            <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
+                <scalar format="uint8"/>
+            </Setting-Register>
+            <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
+                <scalar format="int16"/>
+            </Setting-Register>
+            <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
+                <scalar format="uint16"/>
+            </Setting-Register>
+            <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
+                <scalar format="int32"/>
+            </Setting-Register>
+            <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
+                <scalar format="uint32"/>
+            </Setting-Register>
+            <!--<Register name="RW_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int64_fesa"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <!--<Register name="RW_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint64_fesa"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
+                <scalar format="float32"/>
+            </Setting-Register>
+            <!--<Register name="RW_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" esaFieldName="RW_float64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+            <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
+                <scalar format="date"/>
+            </Setting-Register>
+            <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
+                <scalar format="char"/>
+            </Setting-Register>
+            <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
+                <scalar format="byte"/>
+            </Setting-Register>
+            <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
+                <scalar format="word"/>
+            </Setting-Register>
+            <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
+                <scalar format="dword"/>
+            </Setting-Register>
+            <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
+                <scalar format="int"/>
+            </Setting-Register>
+            <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
+                <scalar format="dint"/>
+            </Setting-Register>
+            <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
+                <scalar format="real"/>
+            </Setting-Register>
+            <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
+                <scalar format="dt"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_int8" generateFesaValueItem="true">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+            <!-- <Register name="RW_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <!--<Register name="RW_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+            <!--<Register name="RW_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <!-- <Register name="RW_string" format="string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" array-dim1="2" array-dim2="2"/> 2d string arrays not supported in FESA -->
+            <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+            <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
+        </Setting-Block>
+        <Command-Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp">
+            <Setting-Register name="WO_int8" generateFesaValueItem="true">
+                <array dim="10" format="int8"/>
+            </Setting-Register>
+            <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa">
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
+            <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa">
+                <array dim="10" format="int16"/>
+            </Setting-Register>
+            <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa">
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
+            <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa">
+                <array dim="10" format="int32"/>
+            </Setting-Register>
+            <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa">
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
+            <!--<Register name="WO_int64" format="int64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int64_fesa" array-dim1="10"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <!--<Register name="WO_uint64" format="uint64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint64_fesa" array-dim1="10"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa">
+                <array dim="10" format="float32"/>
+            </Setting-Register>
+            <!--<Register name="WO_float64" format="float64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa">
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
+            <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa">
+                <array dim="10" format="date"/>
+            </Setting-Register>
+            <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa">
+                <array dim="10" format="char"/>
+            </Setting-Register>
+            <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa">
+                <array dim="10" format="byte"/>
+            </Setting-Register>
+            <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa">
+                <array dim="10" format="word"/>
+            </Setting-Register>
+            <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa">
+                <array dim="10" format="dword"/>
+            </Setting-Register>
+            <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa">
+                <array dim="10" format="int"/>
+            </Setting-Register>
+            <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa">
+                <array dim="10" format="dint"/>
+            </Setting-Register>
+            <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa">
+                <array dim="10" format="real"/>
+            </Setting-Register>
+            <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa">
+                <array dim="10" format="dt"/>
+            </Setting-Register>
+        </Command-Block>
         <Configuration-Block name="MyCBlock" generateFesaProperty="true" fesaPropertyName="MyCBlockProp">
             <Configuration-Register name="C_int8" generateFesaValueItem="true">
                 <array2D dim1="2" dim2="2" format="int8"/>
diff --git a/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign b/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign
index a4c90afbafe18308fe0f3f40e53e88d2f9238a8f..1e5b06d00537d22d3196a5937725b9036a220e88 100644
--- a/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign
+++ b/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign
@@ -62,56 +62,110 @@
 			</Acquisition-Register>
 		</Acquisition-Block>
 		<Setting-Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp">
-			<Setting-Register name="RW_int8" generateFesaValueItem="true">
+            <Setting-Register name="RW_int8" generateFesaValueItem="true">
+                <scalar format="int8"/>
+            </Setting-Register>
+            <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
+                <scalar format="uint8"/>
+            </Setting-Register>
+            <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
+                <scalar format="int16"/>
+            </Setting-Register>
+            <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
+                <scalar format="uint16"/>
+            </Setting-Register>
+            <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
+                <scalar format="int32"/>
+            </Setting-Register>
+            <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
+                <scalar format="uint32"/>
+            </Setting-Register>
+            <!--<Register name="RW_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int64_fesa"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <!--<Register name="RW_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint64_fesa"/> not Supported for Beckhoff, Siemens and Schneider -->
+            <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
+                <scalar format="float32"/>
+            </Setting-Register>
+            <!--<Register name="RW_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" esaFieldName="RW_float64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+            <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
+                <scalar format="date"/>
+            </Setting-Register>
+            <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
+                <scalar format="char"/>
+            </Setting-Register>
+            <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
+                <scalar format="byte"/>
+            </Setting-Register>
+            <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
+                <scalar format="word"/>
+            </Setting-Register>
+            <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
+                <scalar format="dword"/>
+            </Setting-Register>
+            <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
+                <scalar format="int"/>
+            </Setting-Register>
+            <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
+                <scalar format="dint"/>
+            </Setting-Register>
+            <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
+                <scalar format="real"/>
+            </Setting-Register>
+            <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
+                <scalar format="dt"/>
+            </Setting-Register>
+			<Setting-Register name="RW2_int8" generateFesaValueItem="true">
 				<array2D dim1="2" dim2="2" format="int8"/>
 			</Setting-Register>
-			<Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
+			<Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa">
 				<array2D dim1="2" dim2="2" format="uint8"/>
 			</Setting-Register>
-			<Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
+			<Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa">
 				<array2D dim1="2" dim2="2" format="int16"/>
 			</Setting-Register>
-			<Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
+			<Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa">
 				<array2D dim1="2" dim2="2" format="uint16"/>
 			</Setting-Register>
-			<Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
+			<Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa">
 				<array2D dim1="2" dim2="2" format="int32"/>
 			</Setting-Register>
-			<Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
+			<Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa">
 				<array2D dim1="2" dim2="2" format="uint32"/>
 			</Setting-Register>
 			<!-- <Register name="RW_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Beckhoff, Siemens and Schneider -->
 			<!--<Register name="RW_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Beckhoff, Siemens and Schneider -->
-			<Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
+			<Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa">
 				<array2D dim1="2" dim2="2" format="float32"/>
 			</Setting-Register>
 			<!--<Register name="RW_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
 			<!-- <Register name="RW_string" format="string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" array-dim1="2" array-dim2="2"/> 2d string arrays not supported in FESA -->
-			<Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
+			<Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa">
 				<array2D dim1="2" dim2="2" format="date"/>
 			</Setting-Register>
-			<Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
+			<Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa">
 				<array2D dim1="2" dim2="2" format="char"/>
 			</Setting-Register>
-			<Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
+			<Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa">
 				<array2D dim1="2" dim2="2" format="byte"/>
 			</Setting-Register>
-			<Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
+			<Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa">
 				<array2D dim1="2" dim2="2" format="word"/>
 			</Setting-Register>
-			<Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
+			<Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa">
 				<array2D dim1="2" dim2="2" format="dword"/>
 			</Setting-Register>
-			<Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
+			<Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa">
 				<array2D dim1="2" dim2="2" format="int"/>
 			</Setting-Register>
-			<Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
+			<Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa">
 				<array2D dim1="2" dim2="2" format="dint"/>
 			</Setting-Register>
-			<Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
+			<Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa">
 				<array2D dim1="2" dim2="2" format="real"/>
 			</Setting-Register>
-			<Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
+			<Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa">
 				<array2D dim1="2" dim2="2" format="dt"/>
 			</Setting-Register>
 		</Setting-Block>
diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp b/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp
index fad71dc718d2336c4ac6a5c3a5f712b8c1a18d0d..887d00f775f8c60072ddd3a4f8dd2956082250ce 100644
--- a/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp
+++ b/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp
@@ -232,134 +232,155 @@ namespace AllTypes
 
         if (recvNow) pPLCDevice -> recv(blockName_);        
     
+        pDevice->RW_int8.set( pPLCDevice->getRegister("RW_int8")->getValInt8(), pContext);
+        pDevice->RW_uint8_fesa.set( pPLCDevice->getRegister("RW_uint8")->getValUInt8(), pContext);
+        pDevice->RW_int16_fesa.set( pPLCDevice->getRegister("RW_int16")->getValInt16(), pContext);
+        pDevice->RW_uint16_fesa.set( pPLCDevice->getRegister("RW_uint16")->getValUInt16(), pContext);
+        pDevice->RW_int32_fesa.set( pPLCDevice->getRegister("RW_int32")->getValInt32(), pContext);
+        pDevice->RW_uint32_fesa.set( pPLCDevice->getRegister("RW_uint32")->getValUInt32(), pContext);
+        pDevice->RW_float32_fesa.set( pPLCDevice->getRegister("RW_float32")->getValFloat32(), pContext);
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int8");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_string");
+            pDevice->RW_string_fesa.set(pRegister->getValString().c_str(), pContext);
+        }
+
+        pDevice->RW_date_fesa.set( pPLCDevice->getRegister("RW_date")->getValDate(), pContext);
+        pDevice->RW_char_fesa.set( pPLCDevice->getRegister("RW_char")->getValInt8(), pContext);
+        pDevice->RW_byte_fesa.set( pPLCDevice->getRegister("RW_byte")->getValUInt8(), pContext);
+        pDevice->RW_word_fesa.set( pPLCDevice->getRegister("RW_word")->getValUInt16(), pContext);
+        pDevice->RW_dword_fesa.set( pPLCDevice->getRegister("RW_dword")->getValUInt32(), pContext);
+        pDevice->RW_int_fesa.set( pPLCDevice->getRegister("RW_int")->getValInt16(), pContext);
+        pDevice->RW_dint_fesa.set( pPLCDevice->getRegister("RW_dint")->getValInt32(), pContext);
+        pDevice->RW_real_fesa.set( pPLCDevice->getRegister("RW_real")->getValFloat32(), pContext);
+        pDevice->RW_dt_fesa.set( pPLCDevice->getRegister("RW_dt")->getValDate(), pContext);
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int8");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_int8.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_int8.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint8");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint8");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            int16_t* RW_uint8 = (int16_t*)calloc(dim1*dim2, sizeof(int16_t));
-            pRegister->getValUInt8Array2D(RW_uint8, dim1, dim2);	//use automatic conversion for JAVA non-supported type
-            pDevice->RW_uint8_fesa.set(RW_uint8, dim1, dim2, pContext);
-            free(RW_uint8);
+            int16_t* RW2_uint8 = (int16_t*)calloc(dim1*dim2, sizeof(int16_t));
+            pRegister->getValUInt8Array2D(RW2_uint8, dim1, dim2);
+            pDevice->RW2_uint8_fesa.set(RW2_uint8, dim1, dim2, pContext);
+            free(RW2_uint8);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int16");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int16");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_int16_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_int16_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint16");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint16");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            int32_t* RW_uint16 = (int32_t*)calloc(dim1*dim2, sizeof(int32_t));
-            pRegister->getValUInt16Array2D(RW_uint16, dim1, dim2);	//use automatic conversion for JAVA non-supported type
-            pDevice->RW_uint16_fesa.set(RW_uint16, dim1, dim2, pContext);
-            free(RW_uint16);
+            int32_t* RW2_uint16 = (int32_t*)calloc(dim1*dim2, sizeof(int32_t));
+            pRegister->getValUInt16Array2D(RW2_uint16, dim1, dim2);
+            pDevice->RW2_uint16_fesa.set(RW2_uint16, dim1, dim2, pContext);
+            free(RW2_uint16);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_int32_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_int32_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            int64_t* RW_uint32 = (int64_t*)calloc(dim1*dim2, sizeof(int64_t));
-            pRegister->getValUInt32Array2D(RW_uint32, dim1, dim2);	//use automatic conversion for JAVA non-supported type
-            pDevice->RW_uint32_fesa.set(RW_uint32, dim1, dim2, pContext);
-            free(RW_uint32);
+            int64_t* RW2_uint32 = (int64_t*)calloc(dim1*dim2, sizeof(int64_t));
+            pRegister->getValUInt32Array2D(RW2_uint32, dim1, dim2);
+            pDevice->RW2_uint32_fesa.set(RW2_uint32, dim1, dim2, pContext);
+            free(RW2_uint32);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_float32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_float32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_float32_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_float32_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_date");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_date");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_date_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_date_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_char");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_char");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_char_fesa.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_char_fesa.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_byte");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_byte");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            int16_t* RW_byte = (int16_t*)calloc(dim1*dim2, sizeof(int16_t));
-            pRegister->getValUInt8Array2D(RW_byte, dim1, dim2);	//use automatic conversion for JAVA non-supported type
-            pDevice->RW_byte_fesa.set(RW_byte, dim1, dim2, pContext);
-            free(RW_byte);
+            int16_t* RW2_byte = (int16_t*)calloc(dim1*dim2, sizeof(int16_t));
+            pRegister->getValUInt8Array2D(RW2_byte, dim1, dim2);
+            pDevice->RW2_byte_fesa.set(RW2_byte, dim1, dim2, pContext);
+            free(RW2_byte);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_word");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_word");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            int32_t* RW_word = (int32_t*)calloc(dim1*dim2, sizeof(int32_t));
-            pRegister->getValUInt16Array2D(RW_word, dim1, dim2);	//use automatic conversion for JAVA non-supported type
-            pDevice->RW_word_fesa.set(RW_word, dim1, dim2, pContext);
-            free(RW_word);
+            int32_t* RW2_word = (int32_t*)calloc(dim1*dim2, sizeof(int32_t));
+            pRegister->getValUInt16Array2D(RW2_word, dim1, dim2);
+            pDevice->RW2_word_fesa.set(RW2_word, dim1, dim2, pContext);
+            free(RW2_word);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dword");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dword");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            int64_t* RW_dword = (int64_t*)calloc(dim1*dim2, sizeof(int64_t));
-            pRegister->getValUInt32Array2D(RW_dword, dim1, dim2);	//use automatic conversion for JAVA non-supported type
-            pDevice->RW_dword_fesa.set(RW_dword, dim1, dim2, pContext);
-            free(RW_dword);
+            int64_t* RW2_dword = (int64_t*)calloc(dim1*dim2, sizeof(int64_t));
+            pRegister->getValUInt32Array2D(RW2_dword, dim1, dim2);
+            pDevice->RW2_dword_fesa.set(RW2_dword, dim1, dim2, pContext);
+            free(RW2_dword);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_int_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_int_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dint");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dint");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_dint_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_dint_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_real");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_real");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_real_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_real_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dt");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dt");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
-            pDevice->RW_dt_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext);
+            pDevice->RW2_dt_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext);
         }
 
     }
@@ -373,132 +394,150 @@ namespace AllTypes
         Silecs::PLC* pPLC  = pCluster_->getPLC(pDevice->plcHostName.get());
         Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get());
 
+        pPLCDevice->getRegister("RW_int8")->setValInt8( pDevice->RW_int8.get(pContext));
+        pPLCDevice->getRegister("RW_uint8")->setValUInt8( (uint8_t)pDevice->RW_uint8_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_int16")->setValInt16( pDevice->RW_int16_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_uint16")->setValUInt16( (uint16_t)pDevice->RW_uint16_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_int32")->setValInt32( pDevice->RW_int32_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_uint32")->setValUInt32( (uint32_t)pDevice->RW_uint32_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_float32")->setValFloat32( pDevice->RW_float32_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_string")->setValString(pDevice->RW_string_fesa.get(pContext));
+
+        pPLCDevice->getRegister("RW_date")->setValDate( pDevice->RW_date_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_char")->setValInt8( pDevice->RW_char_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_byte")->setValUInt8( (uint8_t)pDevice->RW_byte_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_word")->setValUInt16( (uint16_t)pDevice->RW_word_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_dword")->setValUInt32( (uint32_t)pDevice->RW_dword_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_int")->setValInt16( pDevice->RW_int_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_dint")->setValInt32( pDevice->RW_dint_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_real")->setValFloat32( pDevice->RW_real_fesa.get(pContext));
+        pPLCDevice->getRegister("RW_dt")->setValDate( pDevice->RW_dt_fesa.get(pContext));
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int8");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int8");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValInt8Array2D(pDevice->RW_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValInt8Array2D(pDevice->RW2_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint8");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint8");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt8Array2D(pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValUInt8Array2D(pDevice->RW2_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int16");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int16");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValInt16Array2D(pDevice->RW_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValInt16Array2D(pDevice->RW2_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint16");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint16");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt16Array2D(pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValUInt16Array2D(pDevice->RW2_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValInt32Array2D(pDevice->RW_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValInt32Array2D(pDevice->RW2_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt32Array2D(pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValUInt32Array2D(pDevice->RW2_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_float32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_float32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValFloat32Array2D(pDevice->RW_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValFloat32Array2D(pDevice->RW2_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_date");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_date");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValDateArray2D(pDevice->RW_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValDateArray2D(pDevice->RW2_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_char");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_char");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValInt8Array2D(pDevice->RW_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValInt8Array2D(pDevice->RW2_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_byte");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_byte");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt8Array2D(pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValUInt8Array2D(pDevice->RW2_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_word");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_word");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt16Array2D(pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValUInt16Array2D(pDevice->RW2_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dword");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dword");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt32Array2D(pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValUInt32Array2D(pDevice->RW2_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValInt16Array2D(pDevice->RW_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValInt16Array2D(pDevice->RW2_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dint");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dint");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValInt32Array2D(pDevice->RW_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValInt32Array2D(pDevice->RW2_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_real");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_real");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValFloat32Array2D(pDevice->RW_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValFloat32Array2D(pDevice->RW2_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dt");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dt");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValDateArray2D(pDevice->RW_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setValDateArray2D(pDevice->RW2_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         if (sendNow) pPLCDevice->send(blockName_);
@@ -513,148 +552,182 @@ namespace AllTypes
         Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get());
         Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get());
 
+        (data.isRW_int8Available()) ? pPLCDevice->getRegister("RW_int8")->setValInt8( data.RW_int8.get()) :
+                                          pPLCDevice->getRegister("RW_int8")->setValInt8( pDevice->RW_int8.get(pContext));
+        (data.isRW_uint8_fesaAvailable()) ? pPLCDevice->getRegister("RW_uint8")->setValUInt8( (uint8_t)data.RW_uint8_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_uint8")->setValUInt8( (uint8_t)pDevice->RW_uint8_fesa.get(pContext));
+        (data.isRW_int16_fesaAvailable()) ? pPLCDevice->getRegister("RW_int16")->setValInt16( data.RW_int16_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_int16")->setValInt16( pDevice->RW_int16_fesa.get(pContext));
+        (data.isRW_uint16_fesaAvailable()) ? pPLCDevice->getRegister("RW_uint16")->setValUInt16( (uint16_t)data.RW_uint16_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_uint16")->setValUInt16( (uint16_t)pDevice->RW_uint16_fesa.get(pContext));
+        (data.isRW_int32_fesaAvailable()) ? pPLCDevice->getRegister("RW_int32")->setValInt32( data.RW_int32_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_int32")->setValInt32( pDevice->RW_int32_fesa.get(pContext));
+        (data.isRW_uint32_fesaAvailable()) ? pPLCDevice->getRegister("RW_uint32")->setValUInt32( (uint32_t)data.RW_uint32_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_uint32")->setValUInt32( (uint32_t)pDevice->RW_uint32_fesa.get(pContext));
+        (data.isRW_float32_fesaAvailable()) ? pPLCDevice->getRegister("RW_float32")->setValFloat32( data.RW_float32_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_float32")->setValFloat32( pDevice->RW_float32_fesa.get(pContext));
+        (data.isRW_string_fesaAvailable()) ? pPLCDevice->getRegister("RW_string")->setValString(data.RW_string_fesa.get()) :
+                                     pPLCDevice->getRegister("RW_string")->setValString(pDevice->RW_string_fesa.get(pContext));
+        (data.isRW_date_fesaAvailable()) ? pPLCDevice->getRegister("RW_date")->setValDate( data.RW_date_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_date")->setValDate( pDevice->RW_date_fesa.get(pContext));
+        (data.isRW_char_fesaAvailable()) ? pPLCDevice->getRegister("RW_char")->setValInt8( data.RW_char_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_char")->setValInt8( pDevice->RW_char_fesa.get(pContext));
+        (data.isRW_byte_fesaAvailable()) ? pPLCDevice->getRegister("RW_byte")->setValUInt8( (uint8_t)data.RW_byte_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_byte")->setValUInt8( (uint8_t)pDevice->RW_byte_fesa.get(pContext));
+        (data.isRW_word_fesaAvailable()) ? pPLCDevice->getRegister("RW_word")->setValUInt16( (uint16_t)data.RW_word_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_word")->setValUInt16( (uint16_t)pDevice->RW_word_fesa.get(pContext));
+        (data.isRW_dword_fesaAvailable()) ? pPLCDevice->getRegister("RW_dword")->setValUInt32( (uint32_t)data.RW_dword_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_dword")->setValUInt32( (uint32_t)pDevice->RW_dword_fesa.get(pContext));
+        (data.isRW_int_fesaAvailable()) ? pPLCDevice->getRegister("RW_int")->setValInt16( data.RW_int_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_int")->setValInt16( pDevice->RW_int_fesa.get(pContext));
+        (data.isRW_dint_fesaAvailable()) ? pPLCDevice->getRegister("RW_dint")->setValInt32( data.RW_dint_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_dint")->setValInt32( pDevice->RW_dint_fesa.get(pContext));
+        (data.isRW_real_fesaAvailable()) ? pPLCDevice->getRegister("RW_real")->setValFloat32( data.RW_real_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_real")->setValFloat32( pDevice->RW_real_fesa.get(pContext));
+        (data.isRW_dt_fesaAvailable()) ? pPLCDevice->getRegister("RW_dt")->setValDate( data.RW_dt_fesa.get()) :
+                                          pPLCDevice->getRegister("RW_dt")->setValDate( pDevice->RW_dt_fesa.get(pContext));
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int8");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int8");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_int8Available()) ? pRegister->setValInt8Array2D(data.RW_int8.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValInt8Array2D(pDevice->RW_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_int8Available()) ? pRegister->setValInt8Array2D(data.RW2_int8.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt8Array2D(pDevice->RW2_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint8");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint8");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_uint8_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW_uint8_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValUInt8Array2D(pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_uint8_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW2_uint8_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt8Array2D(pDevice->RW2_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int16");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int16");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_int16_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW_int16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValInt16Array2D(pDevice->RW_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_int16_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW2_int16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt16Array2D(pDevice->RW2_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint16");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint16");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_uint16_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW_uint16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValUInt16Array2D(pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_uint16_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW2_uint16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt16Array2D(pDevice->RW2_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_int32_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW_int32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValInt32Array2D(pDevice->RW_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_int32_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW2_int32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt32Array2D(pDevice->RW2_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_uint32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_uint32_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW_uint32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValUInt32Array2D(pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_uint32_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW2_uint32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt32Array2D(pDevice->RW2_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_float32");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_float32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_float32_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW_float32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValFloat32Array2D(pDevice->RW_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_float32_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW2_float32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValFloat32Array2D(pDevice->RW2_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_date");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_date");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_date_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW_date_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValDateArray2D(pDevice->RW_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_date_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW2_date_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValDateArray2D(pDevice->RW2_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_char");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_char");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_char_fesaAvailable()) ? pRegister->setValInt8Array2D(data.RW_char_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValInt8Array2D(pDevice->RW_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_char_fesaAvailable()) ? pRegister->setValInt8Array2D(data.RW2_char_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt8Array2D(pDevice->RW2_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_byte");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_byte");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_byte_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW_byte_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValUInt8Array2D(pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_byte_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW2_byte_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt8Array2D(pDevice->RW2_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_word");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_word");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_word_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW_word_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValUInt16Array2D(pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_word_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW2_word_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt16Array2D(pDevice->RW2_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dword");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dword");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_dword_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW_dword_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValUInt32Array2D(pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_dword_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW2_dword_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt32Array2D(pDevice->RW2_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_int");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_int_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW_int_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValInt16Array2D(pDevice->RW_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_int_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW2_int_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt16Array2D(pDevice->RW2_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dint");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dint");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_dint_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW_dint_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValInt32Array2D(pDevice->RW_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_dint_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW2_dint_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt32Array2D(pDevice->RW2_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_real");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_real");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_real_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW_real_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValFloat32Array2D(pDevice->RW_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_real_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW2_real_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValFloat32Array2D(pDevice->RW2_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
-            Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dt");
+            Silecs::Register* pRegister = pPLCDevice->getRegister("RW2_dt");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            (data.isRW_dt_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW_dt_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setValDateArray2D(pDevice->RW_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            (data.isRW2_dt_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW2_dt_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValDateArray2D(pDevice->RW2_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         if (sendNow) pPLCDevice->send(blockName_);
diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design
index 4b25e6602f826fb3af5c527dd5684e320a303741..4c4333c495448afb9b882c16350dc2814695965c 100644
--- a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design
+++ b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design
@@ -47,7 +47,7 @@
                         <server-action-ref server-action-name-ref="SettingGetAction"/>
                     </get-action>
                 </GSI-Setting-Property>
-                <GSI-Setting-Property name="MyRWBlockProp" multiplexed="false" visibility="development"><value-item name="RW_dt_fesa" direction="INOUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_dt_fesa"/></value-item><value-item name="RW_real_fesa" direction="INOUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_real_fesa"/></value-item><value-item name="RW_dint_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_dint_fesa"/></value-item><value-item name="RW_int_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_int_fesa"/></value-item><value-item name="RW_dword_fesa" direction="INOUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_dword_fesa"/></value-item><value-item name="RW_word_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_word_fesa"/></value-item><value-item name="RW_byte_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_byte_fesa"/></value-item><value-item name="RW_char_fesa" direction="INOUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_char_fesa"/></value-item><value-item name="RW_date_fesa" direction="INOUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_date_fesa"/></value-item><value-item name="RW_float32_fesa" direction="INOUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_float32_fesa"/></value-item><value-item name="RW_uint32_fesa" direction="INOUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_uint32_fesa"/></value-item><value-item name="RW_int32_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_int32_fesa"/></value-item><value-item name="RW_uint16_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_uint16_fesa"/></value-item><value-item name="RW_int16_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_int16_fesa"/></value-item><value-item name="RW_uint8_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_uint8_fesa"/></value-item><value-item name="RW_int8" direction="INOUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW_int8"/></value-item><update-flag-item direction="OUT" optional="true" name="updateFlags"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" optional="true" name="cycleName"><array type="char"><dim>32</dim></array></cycle-name-item><set-action><server-action-ref server-action-name-ref="SetMyRWBlockProp"/></set-action><get-action><server-action-ref server-action-name-ref="GetMyRWBlockProp"/></get-action></GSI-Setting-Property><GSI-Power-Property multiplexed="false" name="Power" visibility="operational">
+                <GSI-Setting-Property name="MyRWBlockProp" multiplexed="false" visibility="development"><value-item name="RW2_dt_fesa" direction="INOUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_dt_fesa"/></value-item><value-item name="RW2_real_fesa" direction="INOUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_real_fesa"/></value-item><value-item name="RW2_dint_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_dint_fesa"/></value-item><value-item name="RW2_int_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int_fesa"/></value-item><value-item name="RW2_dword_fesa" direction="INOUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_dword_fesa"/></value-item><value-item name="RW2_word_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_word_fesa"/></value-item><value-item name="RW2_byte_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_byte_fesa"/></value-item><value-item name="RW2_char_fesa" direction="INOUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_char_fesa"/></value-item><value-item name="RW2_date_fesa" direction="INOUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_date_fesa"/></value-item><value-item name="RW2_float32_fesa" direction="INOUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_float32_fesa"/></value-item><value-item name="RW2_uint32_fesa" direction="INOUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_uint32_fesa"/></value-item><value-item name="RW2_int32_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int32_fesa"/></value-item><value-item name="RW2_uint16_fesa" direction="INOUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_uint16_fesa"/></value-item><value-item name="RW2_int16_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int16_fesa"/></value-item><value-item name="RW2_uint8_fesa" direction="INOUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_uint8_fesa"/></value-item><value-item name="RW2_int8" direction="INOUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="RW2_int8"/></value-item><value-item name="RW_dt_fesa" direction="INOUT"><scalar type="double"/><data-field-ref field-name-ref="RW_dt_fesa"/></value-item><value-item name="RW_real_fesa" direction="INOUT"><scalar type="float"/><data-field-ref field-name-ref="RW_real_fesa"/></value-item><value-item name="RW_dint_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_dint_fesa"/></value-item><value-item name="RW_int_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_int_fesa"/></value-item><value-item name="RW_dword_fesa" direction="INOUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RW_dword_fesa"/></value-item><value-item name="RW_word_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_word_fesa"/></value-item><value-item name="RW_byte_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_byte_fesa"/></value-item><value-item name="RW_char_fesa" direction="INOUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RW_char_fesa"/></value-item><value-item name="RW_date_fesa" direction="INOUT"><scalar type="double"/><data-field-ref field-name-ref="RW_date_fesa"/></value-item><value-item name="RW_string_fesa" direction="INOUT"><array type="char"><dim>64</dim></array><data-field-ref field-name-ref="RW_string_fesa"/></value-item><value-item name="RW_float32_fesa" direction="INOUT"><scalar type="float"/><data-field-ref field-name-ref="RW_float32_fesa"/></value-item><value-item name="RW_uint32_fesa" direction="INOUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RW_uint32_fesa"/></value-item><value-item name="RW_int32_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_int32_fesa"/></value-item><value-item name="RW_uint16_fesa" direction="INOUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RW_uint16_fesa"/></value-item><value-item name="RW_int16_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_int16_fesa"/></value-item><value-item name="RW_uint8_fesa" direction="INOUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RW_uint8_fesa"/></value-item><value-item name="RW_int8" direction="INOUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RW_int8"/></value-item><update-flag-item direction="OUT" optional="true" name="updateFlags"><builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/></update-flag-item><cycle-name-item direction="OUT" optional="true" name="cycleName"><array type="char"><dim>32</dim></array></cycle-name-item><set-action><server-action-ref server-action-name-ref="SetMyRWBlockProp"/></set-action><get-action><server-action-ref server-action-name-ref="GetMyRWBlockProp"/></get-action></GSI-Setting-Property><GSI-Power-Property multiplexed="false" name="Power" visibility="operational">
                     <description>Used to turn the power of a device on or off.</description>
                     <update-flag-item direction="OUT" name="updateFlags" optional="true">
                         <builtin-type-scalar data-type-name-ref="NOTIFICATION_UPDATE"/>
@@ -632,7 +632,7 @@ corresponding string array containing keys to illustrate the meaning of the deta
                 </GSI-module-status-labels-field>
             </configuration>
             <setting>
-                <field name="WO_dt_fesa" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_real_fesa" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_dint_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_dword_fesa" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_word_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_byte_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_char_fesa" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="WO_date_fesa" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_string_fesa" multiplexed="false" persistent="true"><array2D type="char"><dim1>10</dim1><dim2>64</dim2></array2D></field><field name="WO_float32_fesa" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_uint32_fesa" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_int32_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_uint16_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int16_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_uint8_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_int8" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="RW_dt_fesa" multiplexed="false" persistent="true"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_real_fesa" multiplexed="false" persistent="true"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dint_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dword_fesa" multiplexed="false" persistent="true"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_word_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_byte_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_char_fesa" multiplexed="false" persistent="true"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_date_fesa" multiplexed="false" persistent="true"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_float32_fesa" multiplexed="false" persistent="true"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint32_fesa" multiplexed="false" persistent="true"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int32_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint16_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int16_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint8_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int8" multiplexed="false" persistent="true"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><GSI-power-field multiplexed="false" name="power" persistent="false">
+                <field name="WO_dt_fesa" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_real_fesa" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_dint_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_dword_fesa" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_word_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_byte_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_char_fesa" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="WO_date_fesa" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_string_fesa" multiplexed="false" persistent="true"><array2D type="char"><dim1>10</dim1><dim2>64</dim2></array2D></field><field name="WO_float32_fesa" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_uint32_fesa" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_int32_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_uint16_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int16_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_uint8_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_int8" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="RW2_dt_fesa" multiplexed="false" persistent="true"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_real_fesa" multiplexed="false" persistent="true"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_dint_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_int_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_dword_fesa" multiplexed="false" persistent="true"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_word_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_byte_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_char_fesa" multiplexed="false" persistent="true"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_date_fesa" multiplexed="false" persistent="true"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_float32_fesa" multiplexed="false" persistent="true"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_uint32_fesa" multiplexed="false" persistent="true"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_int32_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_uint16_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_int16_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_uint8_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW2_int8" multiplexed="false" persistent="true"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dt_fesa" multiplexed="false" persistent="true"><scalar type="double"/></field><field name="RW_real_fesa" multiplexed="false" persistent="true"><scalar type="float"/></field><field name="RW_dint_fesa" multiplexed="false" persistent="true"><scalar type="int32_t"/></field><field name="RW_int_fesa" multiplexed="false" persistent="true"><scalar type="int16_t"/></field><field name="RW_dword_fesa" multiplexed="false" persistent="true"><scalar type="int64_t"/></field><field name="RW_word_fesa" multiplexed="false" persistent="true"><scalar type="int32_t"/></field><field name="RW_byte_fesa" multiplexed="false" persistent="true"><scalar type="int16_t"/></field><field name="RW_char_fesa" multiplexed="false" persistent="true"><scalar type="int8_t"/></field><field name="RW_date_fesa" multiplexed="false" persistent="true"><scalar type="double"/></field><field name="RW_string_fesa" multiplexed="false" persistent="true"><array type="char"><dim>64</dim></array></field><field name="RW_float32_fesa" multiplexed="false" persistent="true"><scalar type="float"/></field><field name="RW_uint32_fesa" multiplexed="false" persistent="true"><scalar type="int64_t"/></field><field name="RW_int32_fesa" multiplexed="false" persistent="true"><scalar type="int32_t"/></field><field name="RW_uint16_fesa" multiplexed="false" persistent="true"><scalar type="int32_t"/></field><field name="RW_int16_fesa" multiplexed="false" persistent="true"><scalar type="int16_t"/></field><field name="RW_uint8_fesa" multiplexed="false" persistent="true"><scalar type="int16_t"/></field><field name="RW_int8" multiplexed="false" persistent="true"><scalar type="int8_t"/></field><GSI-power-field multiplexed="false" name="power" persistent="false">
                     <custom-type-scalar data-type-name-ref="DEVICE_POWER"/>
                 </GSI-power-field>
             </setting>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam
index 70ee79b851f440d31b521726f23c8321176b0b31..28f3785ffc5f66822b0c745c5c57be27ce206d0b 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.878641"/>
-    <Deployment checksum="2903751780"/>
+    <Generation date="2018-01-31 17:06:08.923964"/>
+    <Deployment checksum="698440379"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Beckhoff_BC9020" plc-brand="BECKHOFF" plc-system="TWINCat-2" plc-model="BC9020" protocol="BLOCK_MODE" address="32768" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="32768" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW0..MW23/24 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="32816" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW24..MW2251/2228 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="32816" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW24..MW2113/2090 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
       <Acquisition-Block name="MyROBlock" size="53" address="32816" mem-size="122">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="65">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="86" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="94" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="96" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="98" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="100" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="104" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="106" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="110" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="114" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="33060" mem-size="468">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="33060" mem-size="330">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="2" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="6" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="8" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="12" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="16" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="20" mem-size="65">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="86" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="94" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="96" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="98" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="100" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="104" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="106" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="110" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="114" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="122" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="126" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="130" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="138" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="146" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="162" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="178" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="194" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="226" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="230" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="234" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="242" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="258" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="266" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="282" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="298" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="33996" mem-size="1170">
+      <Command-Block name="MyWOBlock" size="530" address="33720" mem-size="1170">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="650">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="830" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="910" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="920" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="930" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="950" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="990" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1010" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1050" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1090" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="36336" mem-size="468">
+      <Configuration-Block name="MyCBlock" size="212" address="36060" mem-size="468">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC2.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC2.silecsparam
index 76c23b00b403ccec86e7c51d60c2e5287ae302f6..77d518b42cee876970e4cca547db06a0f5c81014 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC2.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC2.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.926827"/>
-    <Deployment checksum="2305663869"/>
+    <Generation date="2018-01-31 17:06:08.965570"/>
+    <Deployment checksum="3857507129"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Beckhoff_CX9020_TC2" plc-brand="BECKHOFF" plc-system="TWINCat-2" plc-model="CX9020" protocol="BLOCK_MODE" address="24576" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="24576" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW0..MW51/52 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="24628" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW52..MW4523/4472 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="24628" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW52..MW4259/4208 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
       <Acquisition-Block name="MyROBlock" size="53" address="24628" mem-size="128">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="65">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="88" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="96" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="98" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="100" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="104" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="108" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="112" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="116" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="120" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="24884" mem-size="468">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="24884" mem-size="336">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="2" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="6" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="8" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="12" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="16" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="20" mem-size="65">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="88" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="96" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="98" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="100" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="104" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="108" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="112" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="116" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="120" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="128" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="132" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="136" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="144" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="152" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="168" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="184" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="200" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="232" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="236" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="240" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="248" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="264" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="272" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="288" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="304" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="25820" mem-size="1172">
+      <Command-Block name="MyWOBlock" size="530" address="25556" mem-size="1172">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="650">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="832" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="912" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="922" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="932" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="952" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="992" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1012" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1052" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1092" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="28164" mem-size="468">
+      <Configuration-Block name="MyCBlock" size="212" address="27900" mem-size="468">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC3.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC3.silecsparam
index 21b1f9d2b8d124af58dba9f8e64514f20114980b..e64e770715254d15252637b6bdc41df3fb17d124 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC3.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020_TC3.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.976073"/>
-    <Deployment checksum="2305663869"/>
+    <Generation date="2018-01-31 17:06:09.018813"/>
+    <Deployment checksum="3857507129"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Beckhoff_CX9020_TC3" plc-brand="BECKHOFF" plc-system="TWINCat-3" plc-model="CX9020" protocol="BLOCK_MODE" address="24576" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="24576" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW0..MW25/26 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="24628" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW26..MW2261/2236 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="24628" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW26..MW2129/2104 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
       <Acquisition-Block name="MyROBlock" size="53" address="24628" mem-size="128">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="65">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="88" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="96" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="98" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="100" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="104" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="108" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="112" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="116" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="120" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="24884" mem-size="468">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="24884" mem-size="336">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="2" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="6" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="8" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="12" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="16" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="20" mem-size="65">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="88" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="96" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="98" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="100" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="104" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="108" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="112" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="116" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="120" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="128" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="132" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="136" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="144" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="152" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="168" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="184" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="200" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="232" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="236" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="240" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="248" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="264" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="272" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="288" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="304" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="25820" mem-size="1172">
+      <Command-Block name="MyWOBlock" size="530" address="25556" mem-size="1172">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="650">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="832" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="912" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="922" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="932" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="952" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="992" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1012" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1052" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1092" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="28164" mem-size="468">
+      <Configuration-Block name="MyCBlock" size="212" address="27900" mem-size="468">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam
index 9d4a8c0c5409fb22ca0d6d8081accdf8e04ff51c..1db0bb1f2eb880c5588cd9b97eaea838e97ab934 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:12.122661"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:09.210682"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Rabbit_BlockMode" plc-brand="DIGI" plc-system="Standard-C" plc-model="Rabbit_RCM_4010" protocol="BLOCK_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW0..MW21/22 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2301/2280 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2165/2144 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
       <Acquisition-Block name="MyROBlock" size="53" address="44" mem-size="120">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="2">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="2">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="284" mem-size="480">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="284" mem-size="344">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="2" mem-size="2">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="6" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="8" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="12" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="16" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="20" mem-size="64">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="2">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="94" mem-size="2">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="96" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="98" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="102" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="104" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="108" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="112" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="120" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="128" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="136" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="144" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="152" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="168" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="184" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="200" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="232" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="240" mem-size="8">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="248" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="256" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="272" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="280" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="296" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="312" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="1244" mem-size="1200">
+      <Command-Block name="MyWOBlock" size="530" address="972" mem-size="1200">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="20">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="60" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="80" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="120" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="160" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="200" mem-size="640">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="20">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="940" mem-size="20">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="960" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="980" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1020" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1040" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1080" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1120" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="3644" mem-size="480">
+      <Configuration-Block name="MyCBlock" size="212" address="3372" mem-size="480">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam
index 05907d64f98bbba4d880f4a1638fe126e9711d87..02a9573ec99115dc74a6f6a4bad6acd04c75346d 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:12.087466"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:09.167728"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Rabbit_DeviceMode" plc-brand="DIGI" plc-system="Standard-C" plc-model="Rabbit_RCM_4010" protocol="DEVICE_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW0..MW21/22 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2301/2280 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2165/2144 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
       <Acquisition-Block name="MyROBlock" size="53" address="0" mem-size="120">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="2">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="2">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="120" mem-size="480">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="120" mem-size="344">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="2" mem-size="2">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="6" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="8" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="12" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="16" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="20" mem-size="64">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="2">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="94" mem-size="2">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="96" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="98" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="102" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="104" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="108" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="112" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="120" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="128" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="136" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="144" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="152" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="168" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="184" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="200" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="232" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="240" mem-size="8">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="248" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="256" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="272" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="280" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="296" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="312" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="600" mem-size="1200">
+      <Command-Block name="MyWOBlock" size="530" address="464" mem-size="1200">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="20">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="60" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="80" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="120" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="160" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="200" mem-size="640">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="20">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="940" mem-size="20">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="960" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="980" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1020" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1040" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1080" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1120" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="1800" mem-size="480">
+      <Configuration-Block name="MyCBlock" size="212" address="1664" mem-size="480">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
@@ -237,7 +285,7 @@
             </Configuration-Register>
       </Configuration-Block>
       <Instance label="testDevice1" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
-      <Instance label="testDevice2" address="2324" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
+      <Instance label="testDevice2" address="2188" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
   </SILECS-Mapping>
 </SILECS-Param>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam
index f367184de1de98ed33a6cab28085841a98b46e63..ffe64ae92876f25e257fd2d8b40e11d3f4a14a50 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:12.045673"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:09.115829"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Schneider_M340" plc-brand="SCHNEIDER" plc-system="UNITY Pro" plc-model="M340" protocol="BLOCK_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW0..MW21/22 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2273/2252 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2141/2120 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
       <Acquisition-Block name="MyROBlock" size="53" address="44" mem-size="124">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="100" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="104" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="108" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="112" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="116" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="292" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="292" mem-size="340">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="2" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="6" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="8" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="12" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="16" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="20" mem-size="64">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="2">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="94" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="96" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="100" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="104" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="108" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="112" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="116" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="124" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="132" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="136" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="144" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="152" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="168" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="184" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="200" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="232" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="240" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="244" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="252" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="268" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="276" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="292" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="308" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="1236" mem-size="1184">
+      <Command-Block name="MyWOBlock" size="530" address="972" mem-size="1184">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="30" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="50" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="72" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="112" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="152" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="192" mem-size="640">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="832" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="912" mem-size="20">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="932" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="942" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="964" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1004" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1024" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1064" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1104" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="3604" mem-size="472">
+      <Configuration-Block name="MyCBlock" size="212" address="3340" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam
index a86a8e78c1c22c55a86816ea9f2fd1300215e19b..d35da53b02d7be1236cb022f7938199a24a1cb05 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:12.015393"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:09.065295"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Schneider_PremiumQuantum" plc-brand="SCHNEIDER" plc-system="UNITY Pro" plc-model="Premium" protocol="BLOCK_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW0..MW21/22 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2265/2244 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="44" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="MW22..MW2129/2108 words" used-DI="0 word" used-DO="0 word" used-AI="0 word" used-AO="0 word">
       <Acquisition-Block name="MyROBlock" size="53" address="44" mem-size="120">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="284" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="284" mem-size="336">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="2" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="6" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="8" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="12" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="16" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="20" mem-size="64">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="2">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="94" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="96" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="98" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="102" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="104" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="108" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="112" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="120" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="128" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="132" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="140" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="148" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="164" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="180" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="196" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="228" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="236" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="240" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="248" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="264" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="272" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="288" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="304" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="1228" mem-size="1180">
+      <Command-Block name="MyWOBlock" size="530" address="956" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="30" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="50" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="70" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="110" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="150" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="190" mem-size="640">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="830" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="910" mem-size="20">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="3588" mem-size="472">
+      <Configuration-Block name="MyCBlock" size="212" address="3316" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam
index 1785329088b0837817b7134a213ed0b4d72cf676..376b8a7847957ff19bff0039428e0fbc2b73977c 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.709988"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:08.722245"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Siemens_Step7Block" plc-brand="SIEMENS" plc-system="STEP-7" plc-model="SIMATIC_S7-300" protocol="DEVICE_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB0..DB0/48 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB2/4484 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB2/4192 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
       <Acquisition-Block name="MyROBlock" size="53" address="0" mem-size="118">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="118" mem-size="326">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="1" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="2" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="6" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="10" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="14" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="18" mem-size="66">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="93" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="94" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="96" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="100" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="102" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="106" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="110" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="118" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="122" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="126" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="134" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="142" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="158" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="174" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="190" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="222" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="226" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="230" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="238" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="254" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="262" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="278" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="294" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180">
+      <Command-Block name="MyWOBlock" size="530" address="444" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="1770" mem-size="472">
+      <Configuration-Block name="MyCBlock" size="212" address="1624" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam
index 0dcb2f4f302c3f654c821c3c59521b4b96cd32c8..05d4dcab0b2d75734921584f27ec1f6af38ab43e 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.759024"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:08.779231"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Siemens_Step7Device" plc-brand="SIEMENS" plc-system="STEP-7" plc-model="SIMATIC_S7-300" protocol="BLOCK_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB0..DB0/48 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
@@ -23,165 +23,213 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB4/4484 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB4/4192 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
       <Acquisition-Block name="MyROBlock" size="53" address="1" mem-size="118">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="2" mem-size="326">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="1" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="2" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="6" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="10" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="14" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="18" mem-size="66">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="93" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="94" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="96" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="100" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="102" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="106" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="110" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="118" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="122" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="126" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="134" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="142" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="158" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="174" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="190" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="222" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="226" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="230" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="238" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="254" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="262" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="278" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="294" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="3" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
       <Configuration-Block name="MyCBlock" size="212" address="4" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam
index 9520df2fdd83e3b4f229b688bbefbdfcb21347b9..1eb150cc370d47b28bbfda966c054c51ec93a345 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.677527"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:08.664473"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Siemens_TiaBlock" plc-brand="SIEMENS" plc-system="TIA-PORTAL" plc-model="SIMATIC_S7-300" protocol="BLOCK_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB0..DB0/48 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
@@ -23,165 +23,213 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB4/4484 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB4/4192 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
       <Acquisition-Block name="MyROBlock" size="53" address="1" mem-size="118">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="2" mem-size="326">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="1" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="2" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="6" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="10" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="14" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="18" mem-size="66">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="93" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="94" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="96" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="100" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="102" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="106" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="110" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="118" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="122" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="126" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="134" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="142" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="158" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="174" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="190" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="222" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="226" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="230" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="238" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="254" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="262" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="278" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="294" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="3" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
       <Configuration-Block name="MyCBlock" size="212" address="4" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam
index 6dadcb0b895968ba79966827aff88fd8799e3520..a5ec4f63d36afe9adbaae9b455d67b715bea8fd6 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.639987"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:08.626917"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Siemens_TiaDevice" plc-brand="SIEMENS" plc-system="TIA-PORTAL" plc-model="SIMATIC_S7-300" protocol="DEVICE_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB0..DB0/48 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB2/4484 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB2/4192 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
       <Acquisition-Block name="MyROBlock" size="53" address="0" mem-size="118">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="118" mem-size="326">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="1" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="2" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="6" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="10" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="14" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="18" mem-size="66">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="93" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="94" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="96" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="100" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="102" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="106" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="110" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="118" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="122" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="126" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="134" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="142" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="158" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="174" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="190" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="222" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="226" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="230" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="238" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="254" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="262" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="278" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="294" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180">
+      <Command-Block name="MyWOBlock" size="530" address="444" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="1770" mem-size="472">
+      <Configuration-Block name="MyCBlock" size="212" address="1624" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensBlock.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensBlock.silecsparam
index cd3ba1ac19342a190b83287ce5dc25f7a2cc2ff8..0dedaabe0ad83b2ebf3139852e50970ccdd1f1a4 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensBlock.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensBlock.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.842372"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:08.881285"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Virtual_SiemensBlock" plc-brand="SIEMENS" plc-system="SNAP7 linux32" plc-model="SIMATIC_S7-VIRTUAL" protocol="BLOCK_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB0..DB0/48 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
@@ -23,165 +23,213 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB4/4484 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB4/4192 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
       <Acquisition-Block name="MyROBlock" size="53" address="1" mem-size="118">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="2" mem-size="326">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="1" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="2" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="6" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="10" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="14" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="18" mem-size="66">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="93" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="94" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="96" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="100" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="102" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="106" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="110" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="118" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="122" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="126" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="134" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="142" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="158" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="174" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="190" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="222" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="226" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="230" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="238" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="254" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="262" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="278" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="294" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="3" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
       <Configuration-Block name="MyCBlock" size="212" address="4" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensDevice.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensDevice.silecsparam
index ec48ebe0b3eefb4e1f97121474eaa6283d28f37a..99fd26f2efa783d5d38a38694c4ced2731595d4b 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensDevice.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Virtual_SiemensDevice.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2018-01-31 10:48:11.796522"/>
-    <Deployment checksum="582399177"/>
+    <Generation date="2018-01-31 17:06:08.834131"/>
+    <Deployment checksum="1058313111"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Virtual_SiemensDevice" plc-brand="SIEMENS" plc-system="SNAP7 linux32" plc-model="SIMATIC_S7-VIRTUAL" protocol="DEVICE_MODE" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" domain="" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB0..DB0/48 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
@@ -23,167 +23,215 @@
       </Acquisition-Block>
       <Instance label="SilecsHeader" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
-    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB2/4484 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
+    <SILECS-Class name="AllTypes" version="0.1.0" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1" used-mem="DB1..DB2/4192 bytes" used-DI="0 byte" used-DO="0 byte" used-AI="0 byte" used-AO="0 byte">
       <Acquisition-Block name="MyROBlock" size="53" address="0" mem-size="118">
         <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
-				<scalar format="int8"/>
-			</Acquisition-Register>
+                <scalar format="int8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1">
-				<scalar format="uint8"/>
-			</Acquisition-Register>
+                <scalar format="uint8"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2">
-				<scalar format="int16"/>
-			</Acquisition-Register>
+                <scalar format="int16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2">
-				<scalar format="uint16"/>
-			</Acquisition-Register>
+                <scalar format="uint16"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4">
-				<scalar format="int32"/>
-			</Acquisition-Register>
+                <scalar format="int32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4">
-				<scalar format="uint32"/>
-			</Acquisition-Register>
+                <scalar format="uint32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4">
-				<scalar format="float32"/>
-			</Acquisition-Register>
+                <scalar format="float32"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66">
-				<string string-length="64" format="string"/>
-			</Acquisition-Register>
+                <string string-length="64" format="string"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8">
-				<scalar format="date"/>
-			</Acquisition-Register>
+                <scalar format="date"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1">
-				<scalar format="char"/>
-			</Acquisition-Register>
+                <scalar format="char"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1">
-				<scalar format="byte"/>
-			</Acquisition-Register>
+                <scalar format="byte"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2">
-				<scalar format="word"/>
-			</Acquisition-Register>
+                <scalar format="word"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4">
-				<scalar format="dword"/>
-			</Acquisition-Register>
+                <scalar format="dword"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2">
-				<scalar format="int"/>
-			</Acquisition-Register>
+                <scalar format="int"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4">
-				<scalar format="dint"/>
-			</Acquisition-Register>
+                <scalar format="dint"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4">
-				<scalar format="real"/>
-			</Acquisition-Register>
+                <scalar format="real"/>
+            </Acquisition-Register>
         <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8">
-				<scalar format="dt"/>
-			</Acquisition-Register>
+                <scalar format="dt"/>
+            </Acquisition-Register>
       </Acquisition-Block>
-      <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472">
-        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
-				<array2D dim1="2" dim2="2" format="int8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
-				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
-				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
-				<array2D dim1="2" dim2="2" format="int32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
-				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
-				<array2D dim1="2" dim2="2" format="float32"/>
-			</Setting-Register>
-        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
-				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Setting-Register>
-        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
-				<array2D dim1="2" dim2="2" format="date"/>
-			</Setting-Register>
-        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
-				<array2D dim1="2" dim2="2" format="char"/>
-			</Setting-Register>
-        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
-				<array2D dim1="2" dim2="2" format="byte"/>
-			</Setting-Register>
-        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
-				<array2D dim1="2" dim2="2" format="word"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dword"/>
-			</Setting-Register>
-        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
-				<array2D dim1="2" dim2="2" format="int"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
-				<array2D dim1="2" dim2="2" format="dint"/>
-			</Setting-Register>
-        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
-				<array2D dim1="2" dim2="2" format="real"/>
-			</Setting-Register>
-        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
-				<array2D dim1="2" dim2="2" format="dt"/>
-			</Setting-Register>
+      <Setting-Block name="MyRWBlock" size="261" address="118" mem-size="326">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1">
+                <scalar format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="1" mem-size="1">
+                <scalar format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="2" mem-size="2">
+                <scalar format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="4" mem-size="2">
+                <scalar format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="6" mem-size="4">
+                <scalar format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="10" mem-size="4">
+                <scalar format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="14" mem-size="4">
+                <scalar format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="18" mem-size="66">
+                <string string-length="64" format="string"/>
+            </Setting-Register>
+        <Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="84" mem-size="8">
+                <scalar format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="92" mem-size="1">
+                <scalar format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="93" mem-size="1">
+                <scalar format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="94" mem-size="2">
+                <scalar format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="96" mem-size="4">
+                <scalar format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="100" mem-size="2">
+                <scalar format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="102" mem-size="4">
+                <scalar format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="106" mem-size="4">
+                <scalar format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="110" mem-size="8">
+                <scalar format="dt"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int8" generateFesaValueItem="true" size="1" address="118" mem-size="4">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint8" generateFesaValueItem="true" fesaFieldName="RW2_uint8_fesa" size="1" address="122" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int16" generateFesaValueItem="true" fesaFieldName="RW2_int16_fesa" size="2" address="126" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint16" generateFesaValueItem="true" fesaFieldName="RW2_uint16_fesa" size="2" address="134" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int32" generateFesaValueItem="true" fesaFieldName="RW2_int32_fesa" size="4" address="142" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_uint32" generateFesaValueItem="true" fesaFieldName="RW2_uint32_fesa" size="4" address="158" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_float32" generateFesaValueItem="true" fesaFieldName="RW2_float32_fesa" size="4" address="174" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_date" generateFesaValueItem="true" fesaFieldName="RW2_date_fesa" size="8" address="190" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_char" generateFesaValueItem="true" fesaFieldName="RW2_char_fesa" size="1" address="222" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_byte" generateFesaValueItem="true" fesaFieldName="RW2_byte_fesa" size="1" address="226" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_word" generateFesaValueItem="true" fesaFieldName="RW2_word_fesa" size="2" address="230" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dword" generateFesaValueItem="true" fesaFieldName="RW2_dword_fesa" size="4" address="238" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_int" generateFesaValueItem="true" fesaFieldName="RW2_int_fesa" size="2" address="254" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dint" generateFesaValueItem="true" fesaFieldName="RW2_dint_fesa" size="4" address="262" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_real" generateFesaValueItem="true" fesaFieldName="RW2_real_fesa" size="4" address="278" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Setting-Register>
+        <Setting-Register name="RW2_dt" generateFesaValueItem="true" fesaFieldName="RW2_dt_fesa" size="8" address="294" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Setting-Register>
       </Setting-Block>
-      <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180">
+      <Command-Block name="MyWOBlock" size="530" address="444" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
-				<array dim="10" format="int8"/>
-			</Setting-Register>
+                <array dim="10" format="int8"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10">
-				<array dim="10" format="uint8"/>
-			</Setting-Register>
+                <array dim="10" format="uint8"/>
+            </Setting-Register>
         <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20">
-				<array dim="10" format="int16"/>
-			</Setting-Register>
+                <array dim="10" format="int16"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20">
-				<array dim="10" format="uint16"/>
-			</Setting-Register>
+                <array dim="10" format="uint16"/>
+            </Setting-Register>
         <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40">
-				<array dim="10" format="int32"/>
-			</Setting-Register>
+                <array dim="10" format="int32"/>
+            </Setting-Register>
         <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40">
-				<array dim="10" format="uint32"/>
-			</Setting-Register>
+                <array dim="10" format="uint32"/>
+            </Setting-Register>
         <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40">
-				<array dim="10" format="float32"/>
-			</Setting-Register>
+                <array dim="10" format="float32"/>
+            </Setting-Register>
         <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660">
-				<stringArray dim="10" string-length="64" format="string"/>
-			</Setting-Register>
+                <stringArray dim="10" string-length="64" format="string"/>
+            </Setting-Register>
         <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80">
-				<array dim="10" format="date"/>
-			</Setting-Register>
+                <array dim="10" format="date"/>
+            </Setting-Register>
         <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10">
-				<array dim="10" format="char"/>
-			</Setting-Register>
+                <array dim="10" format="char"/>
+            </Setting-Register>
         <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10">
-				<array dim="10" format="byte"/>
-			</Setting-Register>
+                <array dim="10" format="byte"/>
+            </Setting-Register>
         <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20">
-				<array dim="10" format="word"/>
-			</Setting-Register>
+                <array dim="10" format="word"/>
+            </Setting-Register>
         <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40">
-				<array dim="10" format="dword"/>
-			</Setting-Register>
+                <array dim="10" format="dword"/>
+            </Setting-Register>
         <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20">
-				<array dim="10" format="int"/>
-			</Setting-Register>
+                <array dim="10" format="int"/>
+            </Setting-Register>
         <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40">
-				<array dim="10" format="dint"/>
-			</Setting-Register>
+                <array dim="10" format="dint"/>
+            </Setting-Register>
         <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40">
-				<array dim="10" format="real"/>
-			</Setting-Register>
+                <array dim="10" format="real"/>
+            </Setting-Register>
         <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80">
-				<array dim="10" format="dt"/>
-			</Setting-Register>
+                <array dim="10" format="dt"/>
+            </Setting-Register>
       </Command-Block>
-      <Configuration-Block name="MyCBlock" size="212" address="1770" mem-size="472">
+      <Configuration-Block name="MyCBlock" size="212" address="1624" mem-size="472">
         <Configuration-Register name="C_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
                 <array2D dim1="2" dim2="2" format="int8"/>
             </Configuration-Register>
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp
index bfdd8f3041e888e9347236421d595193ac2a1f55..90aa5cc74ed7fe62b0cb12b75a0ac32656fc2e25 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp
@@ -11,13 +11,13 @@ VAR_GLOBAL
     _version_a781_SilecsHeader AT %MW0: STRING(16):= DEV;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _checksum_a781_SilecsHeader AT %MW9: DWORD:= 2903751780;
+    _checksum_a781_SilecsHeader AT %MW9: DWORD:= 698440379;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
     _user_a781_SilecsHeader AT %MW11: STRING(16):= 'schwinn';
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _date_a781_SilecsHeader AT %MW20: DT:= DT#2018-1-31-10:49:39;
+    _date_a781_SilecsHeader AT %MW20: DT:= DT#2018-1-31-17:6:28;
 
     (*AllTypes/testDevice1/MyROBlock *)
     RO_int8_a583_testDevice1 AT %MW24: SINT;
@@ -122,309 +122,405 @@ VAR_GLOBAL
     RO_dt_a583_testDevice2 AT %MW142: DT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int8_a583_testDevice1 AT %MW146: ARRAY [0..1, 0..1] OF SINT;
+    RW_int8_a583_testDevice1 AT %MW146: SINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint8_a583_testDevice1 AT %MW148: ARRAY [0..1, 0..1] OF BYTE;
+    RW_uint8_a583_testDevice1 AT %MW147: BYTE;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int16_a583_testDevice1 AT %MW150: ARRAY [0..1, 0..1] OF INT;
+    RW_int16_a583_testDevice1 AT %MW148: INT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint16_a583_testDevice1 AT %MW154: ARRAY [0..1, 0..1] OF WORD;
+    RW_uint16_a583_testDevice1 AT %MW149: WORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int32_a583_testDevice1 AT %MW158: ARRAY [0..1, 0..1] OF DINT;
+    RW_int32_a583_testDevice1 AT %MW150: DINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint32_a583_testDevice1 AT %MW166: ARRAY [0..1, 0..1] OF DWORD;
+    RW_uint32_a583_testDevice1 AT %MW152: DWORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_float32_a583_testDevice1 AT %MW174: ARRAY [0..1, 0..1] OF REAL;
+    RW_float32_a583_testDevice1 AT %MW154: REAL;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_string_a583_testDevice1 AT %MW182: ARRAY [0..1, 0..1] OF STRING(64);
+    RW_string_a583_testDevice1 AT %MW156: STRING(64);
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_date_a583_testDevice1 AT %MW312: ARRAY [0..1, 0..1] OF DT;
+    RW_date_a583_testDevice1 AT %MW189: DT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_char_a583_testDevice1 AT %MW328: ARRAY [0..1, 0..1] OF SINT;
+    RW_char_a583_testDevice1 AT %MW193: SINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_byte_a583_testDevice1 AT %MW330: ARRAY [0..1, 0..1] OF BYTE;
+    RW_byte_a583_testDevice1 AT %MW194: BYTE;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_word_a583_testDevice1 AT %MW332: ARRAY [0..1, 0..1] OF WORD;
+    RW_word_a583_testDevice1 AT %MW195: WORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dword_a583_testDevice1 AT %MW336: ARRAY [0..1, 0..1] OF DWORD;
+    RW_dword_a583_testDevice1 AT %MW196: DWORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int_a583_testDevice1 AT %MW344: ARRAY [0..1, 0..1] OF INT;
+    RW_int_a583_testDevice1 AT %MW198: INT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dint_a583_testDevice1 AT %MW348: ARRAY [0..1, 0..1] OF DINT;
+    RW_dint_a583_testDevice1 AT %MW199: DINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_real_a583_testDevice1 AT %MW356: ARRAY [0..1, 0..1] OF REAL;
+    RW_real_a583_testDevice1 AT %MW201: REAL;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dt_a583_testDevice1 AT %MW364: ARRAY [0..1, 0..1] OF DT;
+    RW_dt_a583_testDevice1 AT %MW203: DT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int8_a583_testDevice1 AT %MW207: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint8_a583_testDevice1 AT %MW209: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int16_a583_testDevice1 AT %MW211: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint16_a583_testDevice1 AT %MW215: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int32_a583_testDevice1 AT %MW219: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint32_a583_testDevice1 AT %MW227: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_float32_a583_testDevice1 AT %MW235: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_date_a583_testDevice1 AT %MW243: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_char_a583_testDevice1 AT %MW259: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_byte_a583_testDevice1 AT %MW261: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_word_a583_testDevice1 AT %MW263: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dword_a583_testDevice1 AT %MW267: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int_a583_testDevice1 AT %MW275: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dint_a583_testDevice1 AT %MW279: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_real_a583_testDevice1 AT %MW287: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dt_a583_testDevice1 AT %MW295: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int8_a583_testDevice2 AT %MW311: SINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint8_a583_testDevice2 AT %MW312: BYTE;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int16_a583_testDevice2 AT %MW313: INT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint16_a583_testDevice2 AT %MW314: WORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int32_a583_testDevice2 AT %MW315: DINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint32_a583_testDevice2 AT %MW317: DWORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_float32_a583_testDevice2 AT %MW319: REAL;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_string_a583_testDevice2 AT %MW321: STRING(64);
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_date_a583_testDevice2 AT %MW354: DT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_char_a583_testDevice2 AT %MW358: SINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_byte_a583_testDevice2 AT %MW359: BYTE;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_word_a583_testDevice2 AT %MW360: WORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_dword_a583_testDevice2 AT %MW361: DWORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int_a583_testDevice2 AT %MW363: INT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_dint_a583_testDevice2 AT %MW364: DINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_real_a583_testDevice2 AT %MW366: REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int8_a583_testDevice2 AT %MW380: ARRAY [0..1, 0..1] OF SINT;
+    RW_dt_a583_testDevice2 AT %MW368: DT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint8_a583_testDevice2 AT %MW382: ARRAY [0..1, 0..1] OF BYTE;
+    RW2_int8_a583_testDevice2 AT %MW372: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int16_a583_testDevice2 AT %MW384: ARRAY [0..1, 0..1] OF INT;
+    RW2_uint8_a583_testDevice2 AT %MW374: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint16_a583_testDevice2 AT %MW388: ARRAY [0..1, 0..1] OF WORD;
+    RW2_int16_a583_testDevice2 AT %MW376: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int32_a583_testDevice2 AT %MW392: ARRAY [0..1, 0..1] OF DINT;
+    RW2_uint16_a583_testDevice2 AT %MW380: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint32_a583_testDevice2 AT %MW400: ARRAY [0..1, 0..1] OF DWORD;
+    RW2_int32_a583_testDevice2 AT %MW384: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_float32_a583_testDevice2 AT %MW408: ARRAY [0..1, 0..1] OF REAL;
+    RW2_uint32_a583_testDevice2 AT %MW392: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_string_a583_testDevice2 AT %MW416: ARRAY [0..1, 0..1] OF STRING(64);
+    RW2_float32_a583_testDevice2 AT %MW400: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_date_a583_testDevice2 AT %MW546: ARRAY [0..1, 0..1] OF DT;
+    RW2_date_a583_testDevice2 AT %MW408: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_char_a583_testDevice2 AT %MW562: ARRAY [0..1, 0..1] OF SINT;
+    RW2_char_a583_testDevice2 AT %MW424: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_byte_a583_testDevice2 AT %MW564: ARRAY [0..1, 0..1] OF BYTE;
+    RW2_byte_a583_testDevice2 AT %MW426: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_word_a583_testDevice2 AT %MW566: ARRAY [0..1, 0..1] OF WORD;
+    RW2_word_a583_testDevice2 AT %MW428: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dword_a583_testDevice2 AT %MW570: ARRAY [0..1, 0..1] OF DWORD;
+    RW2_dword_a583_testDevice2 AT %MW432: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int_a583_testDevice2 AT %MW578: ARRAY [0..1, 0..1] OF INT;
+    RW2_int_a583_testDevice2 AT %MW440: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dint_a583_testDevice2 AT %MW582: ARRAY [0..1, 0..1] OF DINT;
+    RW2_dint_a583_testDevice2 AT %MW444: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_real_a583_testDevice2 AT %MW590: ARRAY [0..1, 0..1] OF REAL;
+    RW2_real_a583_testDevice2 AT %MW452: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dt_a583_testDevice2 AT %MW598: ARRAY [0..1, 0..1] OF DT;
+    RW2_dt_a583_testDevice2 AT %MW460: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int8_a583_testDevice1 AT %MW614: ARRAY [0..9] OF SINT;
+    WO_int8_a583_testDevice1 AT %MW476: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint8_a583_testDevice1 AT %MW619: ARRAY [0..9] OF BYTE;
+    WO_uint8_a583_testDevice1 AT %MW481: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int16_a583_testDevice1 AT %MW624: ARRAY [0..9] OF INT;
+    WO_int16_a583_testDevice1 AT %MW486: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint16_a583_testDevice1 AT %MW634: ARRAY [0..9] OF WORD;
+    WO_uint16_a583_testDevice1 AT %MW496: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int32_a583_testDevice1 AT %MW644: ARRAY [0..9] OF DINT;
+    WO_int32_a583_testDevice1 AT %MW506: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint32_a583_testDevice1 AT %MW664: ARRAY [0..9] OF DWORD;
+    WO_uint32_a583_testDevice1 AT %MW526: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_float32_a583_testDevice1 AT %MW684: ARRAY [0..9] OF REAL;
+    WO_float32_a583_testDevice1 AT %MW546: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_string_a583_testDevice1 AT %MW704: ARRAY [0..9] OF STRING(64);
+    WO_string_a583_testDevice1 AT %MW566: ARRAY [0..9] OF STRING(64);
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_date_a583_testDevice1 AT %MW1029: ARRAY [0..9] OF DT;
+    WO_date_a583_testDevice1 AT %MW891: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_char_a583_testDevice1 AT %MW1069: ARRAY [0..9] OF SINT;
+    WO_char_a583_testDevice1 AT %MW931: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_byte_a583_testDevice1 AT %MW1074: ARRAY [0..9] OF BYTE;
+    WO_byte_a583_testDevice1 AT %MW936: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_word_a583_testDevice1 AT %MW1079: ARRAY [0..9] OF WORD;
+    WO_word_a583_testDevice1 AT %MW941: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dword_a583_testDevice1 AT %MW1089: ARRAY [0..9] OF DWORD;
+    WO_dword_a583_testDevice1 AT %MW951: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int_a583_testDevice1 AT %MW1109: ARRAY [0..9] OF INT;
+    WO_int_a583_testDevice1 AT %MW971: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dint_a583_testDevice1 AT %MW1119: ARRAY [0..9] OF DINT;
+    WO_dint_a583_testDevice1 AT %MW981: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_real_a583_testDevice1 AT %MW1139: ARRAY [0..9] OF REAL;
+    WO_real_a583_testDevice1 AT %MW1001: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dt_a583_testDevice1 AT %MW1159: ARRAY [0..9] OF DT;
+    WO_dt_a583_testDevice1 AT %MW1021: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int8_a583_testDevice2 AT %MW1199: ARRAY [0..9] OF SINT;
+    WO_int8_a583_testDevice2 AT %MW1061: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint8_a583_testDevice2 AT %MW1204: ARRAY [0..9] OF BYTE;
+    WO_uint8_a583_testDevice2 AT %MW1066: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int16_a583_testDevice2 AT %MW1209: ARRAY [0..9] OF INT;
+    WO_int16_a583_testDevice2 AT %MW1071: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint16_a583_testDevice2 AT %MW1219: ARRAY [0..9] OF WORD;
+    WO_uint16_a583_testDevice2 AT %MW1081: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int32_a583_testDevice2 AT %MW1229: ARRAY [0..9] OF DINT;
+    WO_int32_a583_testDevice2 AT %MW1091: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint32_a583_testDevice2 AT %MW1249: ARRAY [0..9] OF DWORD;
+    WO_uint32_a583_testDevice2 AT %MW1111: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_float32_a583_testDevice2 AT %MW1269: ARRAY [0..9] OF REAL;
+    WO_float32_a583_testDevice2 AT %MW1131: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_string_a583_testDevice2 AT %MW1289: ARRAY [0..9] OF STRING(64);
+    WO_string_a583_testDevice2 AT %MW1151: ARRAY [0..9] OF STRING(64);
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_date_a583_testDevice2 AT %MW1614: ARRAY [0..9] OF DT;
+    WO_date_a583_testDevice2 AT %MW1476: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_char_a583_testDevice2 AT %MW1654: ARRAY [0..9] OF SINT;
+    WO_char_a583_testDevice2 AT %MW1516: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_byte_a583_testDevice2 AT %MW1659: ARRAY [0..9] OF BYTE;
+    WO_byte_a583_testDevice2 AT %MW1521: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_word_a583_testDevice2 AT %MW1664: ARRAY [0..9] OF WORD;
+    WO_word_a583_testDevice2 AT %MW1526: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dword_a583_testDevice2 AT %MW1674: ARRAY [0..9] OF DWORD;
+    WO_dword_a583_testDevice2 AT %MW1536: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int_a583_testDevice2 AT %MW1694: ARRAY [0..9] OF INT;
+    WO_int_a583_testDevice2 AT %MW1556: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dint_a583_testDevice2 AT %MW1704: ARRAY [0..9] OF DINT;
+    WO_dint_a583_testDevice2 AT %MW1566: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_real_a583_testDevice2 AT %MW1724: ARRAY [0..9] OF REAL;
+    WO_real_a583_testDevice2 AT %MW1586: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dt_a583_testDevice2 AT %MW1744: ARRAY [0..9] OF DT;
+    WO_dt_a583_testDevice2 AT %MW1606: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int8_a583_testDevice1 AT %MW1784: ARRAY [0..1, 0..1] OF SINT;
+    C_int8_a583_testDevice1 AT %MW1646: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint8_a583_testDevice1 AT %MW1786: ARRAY [0..1, 0..1] OF BYTE;
+    C_uint8_a583_testDevice1 AT %MW1648: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int16_a583_testDevice1 AT %MW1788: ARRAY [0..1, 0..1] OF INT;
+    C_int16_a583_testDevice1 AT %MW1650: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint16_a583_testDevice1 AT %MW1792: ARRAY [0..1, 0..1] OF WORD;
+    C_uint16_a583_testDevice1 AT %MW1654: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int32_a583_testDevice1 AT %MW1796: ARRAY [0..1, 0..1] OF DINT;
+    C_int32_a583_testDevice1 AT %MW1658: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint32_a583_testDevice1 AT %MW1804: ARRAY [0..1, 0..1] OF DWORD;
+    C_uint32_a583_testDevice1 AT %MW1666: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_float32_a583_testDevice1 AT %MW1812: ARRAY [0..1, 0..1] OF REAL;
+    C_float32_a583_testDevice1 AT %MW1674: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_string_a583_testDevice1 AT %MW1820: ARRAY [0..1, 0..1] OF STRING(64);
+    C_string_a583_testDevice1 AT %MW1682: ARRAY [0..1, 0..1] OF STRING(64);
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_date_a583_testDevice1 AT %MW1950: ARRAY [0..1, 0..1] OF DT;
+    C_date_a583_testDevice1 AT %MW1812: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_char_a583_testDevice1 AT %MW1966: ARRAY [0..1, 0..1] OF SINT;
+    C_char_a583_testDevice1 AT %MW1828: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_byte_a583_testDevice1 AT %MW1968: ARRAY [0..1, 0..1] OF BYTE;
+    C_byte_a583_testDevice1 AT %MW1830: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_word_a583_testDevice1 AT %MW1970: ARRAY [0..1, 0..1] OF WORD;
+    C_word_a583_testDevice1 AT %MW1832: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dword_a583_testDevice1 AT %MW1974: ARRAY [0..1, 0..1] OF DWORD;
+    C_dword_a583_testDevice1 AT %MW1836: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int_a583_testDevice1 AT %MW1982: ARRAY [0..1, 0..1] OF INT;
+    C_int_a583_testDevice1 AT %MW1844: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dint_a583_testDevice1 AT %MW1986: ARRAY [0..1, 0..1] OF DINT;
+    C_dint_a583_testDevice1 AT %MW1848: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_real_a583_testDevice1 AT %MW1994: ARRAY [0..1, 0..1] OF REAL;
+    C_real_a583_testDevice1 AT %MW1856: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dt_a583_testDevice1 AT %MW2002: ARRAY [0..1, 0..1] OF DT;
+    C_dt_a583_testDevice1 AT %MW1864: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int8_a583_testDevice2 AT %MW2018: ARRAY [0..1, 0..1] OF SINT;
+    C_int8_a583_testDevice2 AT %MW1880: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint8_a583_testDevice2 AT %MW2020: ARRAY [0..1, 0..1] OF BYTE;
+    C_uint8_a583_testDevice2 AT %MW1882: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int16_a583_testDevice2 AT %MW2022: ARRAY [0..1, 0..1] OF INT;
+    C_int16_a583_testDevice2 AT %MW1884: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint16_a583_testDevice2 AT %MW2026: ARRAY [0..1, 0..1] OF WORD;
+    C_uint16_a583_testDevice2 AT %MW1888: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int32_a583_testDevice2 AT %MW2030: ARRAY [0..1, 0..1] OF DINT;
+    C_int32_a583_testDevice2 AT %MW1892: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint32_a583_testDevice2 AT %MW2038: ARRAY [0..1, 0..1] OF DWORD;
+    C_uint32_a583_testDevice2 AT %MW1900: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_float32_a583_testDevice2 AT %MW2046: ARRAY [0..1, 0..1] OF REAL;
+    C_float32_a583_testDevice2 AT %MW1908: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_string_a583_testDevice2 AT %MW2054: ARRAY [0..1, 0..1] OF STRING(64);
+    C_string_a583_testDevice2 AT %MW1916: ARRAY [0..1, 0..1] OF STRING(64);
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_date_a583_testDevice2 AT %MW2184: ARRAY [0..1, 0..1] OF DT;
+    C_date_a583_testDevice2 AT %MW2046: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_char_a583_testDevice2 AT %MW2200: ARRAY [0..1, 0..1] OF SINT;
+    C_char_a583_testDevice2 AT %MW2062: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_byte_a583_testDevice2 AT %MW2202: ARRAY [0..1, 0..1] OF BYTE;
+    C_byte_a583_testDevice2 AT %MW2064: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_word_a583_testDevice2 AT %MW2204: ARRAY [0..1, 0..1] OF WORD;
+    C_word_a583_testDevice2 AT %MW2066: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dword_a583_testDevice2 AT %MW2208: ARRAY [0..1, 0..1] OF DWORD;
+    C_dword_a583_testDevice2 AT %MW2070: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int_a583_testDevice2 AT %MW2216: ARRAY [0..1, 0..1] OF INT;
+    C_int_a583_testDevice2 AT %MW2078: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dint_a583_testDevice2 AT %MW2220: ARRAY [0..1, 0..1] OF DINT;
+    C_dint_a583_testDevice2 AT %MW2082: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_real_a583_testDevice2 AT %MW2228: ARRAY [0..1, 0..1] OF REAL;
+    C_real_a583_testDevice2 AT %MW2090: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dt_a583_testDevice2 AT %MW2236: ARRAY [0..1, 0..1] OF DT;
+    C_dt_a583_testDevice2 AT %MW2098: ARRAY [0..1, 0..1] OF DT;
 
 END_VAR
\ No newline at end of file
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC2.exp b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC2.exp
index a501100e4e6c813ec15d2f293c5c004541c5d599..322cb027bf384afb288a934798631eaf551143bd 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC2.exp
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC2.exp
@@ -11,13 +11,13 @@ VAR_GLOBAL
     _version_a781_SilecsHeader AT %MW0: STRING(16):= DEV;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _checksum_a781_SilecsHeader AT %MW20: DWORD:= 2305663869;
+    _checksum_a781_SilecsHeader AT %MW20: DWORD:= 3857507129;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
     _user_a781_SilecsHeader AT %MW24: STRING(16):= 'schwinn';
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _date_a781_SilecsHeader AT %MW44: DT:= DT#2018-1-31-10:49:39;
+    _date_a781_SilecsHeader AT %MW44: DT:= DT#2018-1-31-17:6:28;
 
     (*AllTypes/testDevice1/MyROBlock *)
     RO_int8_a583_testDevice1 AT %MW52: SINT;
@@ -122,309 +122,405 @@ VAR_GLOBAL
     RO_dt_a583_testDevice2 AT %MW300: DT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int8_a583_testDevice1 AT %MW308: ARRAY [0..1, 0..1] OF SINT;
+    RW_int8_a583_testDevice1 AT %MW308: SINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint8_a583_testDevice1 AT %MW312: ARRAY [0..1, 0..1] OF BYTE;
+    RW_uint8_a583_testDevice1 AT %MW310: BYTE;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int16_a583_testDevice1 AT %MW316: ARRAY [0..1, 0..1] OF INT;
+    RW_int16_a583_testDevice1 AT %MW312: INT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint16_a583_testDevice1 AT %MW324: ARRAY [0..1, 0..1] OF WORD;
+    RW_uint16_a583_testDevice1 AT %MW314: WORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int32_a583_testDevice1 AT %MW332: ARRAY [0..1, 0..1] OF DINT;
+    RW_int32_a583_testDevice1 AT %MW316: DINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint32_a583_testDevice1 AT %MW348: ARRAY [0..1, 0..1] OF DWORD;
+    RW_uint32_a583_testDevice1 AT %MW320: DWORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_float32_a583_testDevice1 AT %MW364: ARRAY [0..1, 0..1] OF REAL;
+    RW_float32_a583_testDevice1 AT %MW324: REAL;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_string_a583_testDevice1 AT %MW380: ARRAY [0..1, 0..1] OF STRING(64);
+    RW_string_a583_testDevice1 AT %MW328: STRING(64);
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_date_a583_testDevice1 AT %MW640: ARRAY [0..1, 0..1] OF DT;
+    RW_date_a583_testDevice1 AT %MW396: DT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_char_a583_testDevice1 AT %MW672: ARRAY [0..1, 0..1] OF SINT;
+    RW_char_a583_testDevice1 AT %MW404: SINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_byte_a583_testDevice1 AT %MW676: ARRAY [0..1, 0..1] OF BYTE;
+    RW_byte_a583_testDevice1 AT %MW406: BYTE;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_word_a583_testDevice1 AT %MW680: ARRAY [0..1, 0..1] OF WORD;
+    RW_word_a583_testDevice1 AT %MW408: WORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dword_a583_testDevice1 AT %MW688: ARRAY [0..1, 0..1] OF DWORD;
+    RW_dword_a583_testDevice1 AT %MW412: DWORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int_a583_testDevice1 AT %MW704: ARRAY [0..1, 0..1] OF INT;
+    RW_int_a583_testDevice1 AT %MW416: INT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dint_a583_testDevice1 AT %MW712: ARRAY [0..1, 0..1] OF DINT;
+    RW_dint_a583_testDevice1 AT %MW420: DINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_real_a583_testDevice1 AT %MW728: ARRAY [0..1, 0..1] OF REAL;
+    RW_real_a583_testDevice1 AT %MW424: REAL;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dt_a583_testDevice1 AT %MW744: ARRAY [0..1, 0..1] OF DT;
+    RW_dt_a583_testDevice1 AT %MW428: DT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int8_a583_testDevice1 AT %MW436: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint8_a583_testDevice1 AT %MW440: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int16_a583_testDevice1 AT %MW444: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint16_a583_testDevice1 AT %MW452: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int32_a583_testDevice1 AT %MW460: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint32_a583_testDevice1 AT %MW476: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_float32_a583_testDevice1 AT %MW492: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_date_a583_testDevice1 AT %MW508: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_char_a583_testDevice1 AT %MW540: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_byte_a583_testDevice1 AT %MW544: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_word_a583_testDevice1 AT %MW548: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dword_a583_testDevice1 AT %MW556: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int_a583_testDevice1 AT %MW572: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dint_a583_testDevice1 AT %MW580: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_real_a583_testDevice1 AT %MW596: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dt_a583_testDevice1 AT %MW612: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int8_a583_testDevice2 AT %MW644: SINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint8_a583_testDevice2 AT %MW646: BYTE;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int16_a583_testDevice2 AT %MW648: INT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint16_a583_testDevice2 AT %MW650: WORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int32_a583_testDevice2 AT %MW652: DINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint32_a583_testDevice2 AT %MW656: DWORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_float32_a583_testDevice2 AT %MW660: REAL;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_string_a583_testDevice2 AT %MW664: STRING(64);
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_date_a583_testDevice2 AT %MW732: DT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_char_a583_testDevice2 AT %MW740: SINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_byte_a583_testDevice2 AT %MW742: BYTE;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_word_a583_testDevice2 AT %MW744: WORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_dword_a583_testDevice2 AT %MW748: DWORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int_a583_testDevice2 AT %MW752: INT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_dint_a583_testDevice2 AT %MW756: DINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_real_a583_testDevice2 AT %MW760: REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int8_a583_testDevice2 AT %MW776: ARRAY [0..1, 0..1] OF SINT;
+    RW_dt_a583_testDevice2 AT %MW764: DT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint8_a583_testDevice2 AT %MW780: ARRAY [0..1, 0..1] OF BYTE;
+    RW2_int8_a583_testDevice2 AT %MW772: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int16_a583_testDevice2 AT %MW784: ARRAY [0..1, 0..1] OF INT;
+    RW2_uint8_a583_testDevice2 AT %MW776: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint16_a583_testDevice2 AT %MW792: ARRAY [0..1, 0..1] OF WORD;
+    RW2_int16_a583_testDevice2 AT %MW780: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int32_a583_testDevice2 AT %MW800: ARRAY [0..1, 0..1] OF DINT;
+    RW2_uint16_a583_testDevice2 AT %MW788: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint32_a583_testDevice2 AT %MW816: ARRAY [0..1, 0..1] OF DWORD;
+    RW2_int32_a583_testDevice2 AT %MW796: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_float32_a583_testDevice2 AT %MW832: ARRAY [0..1, 0..1] OF REAL;
+    RW2_uint32_a583_testDevice2 AT %MW812: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_string_a583_testDevice2 AT %MW848: ARRAY [0..1, 0..1] OF STRING(64);
+    RW2_float32_a583_testDevice2 AT %MW828: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_date_a583_testDevice2 AT %MW1108: ARRAY [0..1, 0..1] OF DT;
+    RW2_date_a583_testDevice2 AT %MW844: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_char_a583_testDevice2 AT %MW1140: ARRAY [0..1, 0..1] OF SINT;
+    RW2_char_a583_testDevice2 AT %MW876: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_byte_a583_testDevice2 AT %MW1144: ARRAY [0..1, 0..1] OF BYTE;
+    RW2_byte_a583_testDevice2 AT %MW880: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_word_a583_testDevice2 AT %MW1148: ARRAY [0..1, 0..1] OF WORD;
+    RW2_word_a583_testDevice2 AT %MW884: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dword_a583_testDevice2 AT %MW1156: ARRAY [0..1, 0..1] OF DWORD;
+    RW2_dword_a583_testDevice2 AT %MW892: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int_a583_testDevice2 AT %MW1172: ARRAY [0..1, 0..1] OF INT;
+    RW2_int_a583_testDevice2 AT %MW908: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dint_a583_testDevice2 AT %MW1180: ARRAY [0..1, 0..1] OF DINT;
+    RW2_dint_a583_testDevice2 AT %MW916: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_real_a583_testDevice2 AT %MW1196: ARRAY [0..1, 0..1] OF REAL;
+    RW2_real_a583_testDevice2 AT %MW932: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dt_a583_testDevice2 AT %MW1212: ARRAY [0..1, 0..1] OF DT;
+    RW2_dt_a583_testDevice2 AT %MW948: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int8_a583_testDevice1 AT %MW1244: ARRAY [0..9] OF SINT;
+    WO_int8_a583_testDevice1 AT %MW980: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint8_a583_testDevice1 AT %MW1254: ARRAY [0..9] OF BYTE;
+    WO_uint8_a583_testDevice1 AT %MW990: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int16_a583_testDevice1 AT %MW1264: ARRAY [0..9] OF INT;
+    WO_int16_a583_testDevice1 AT %MW1000: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint16_a583_testDevice1 AT %MW1284: ARRAY [0..9] OF WORD;
+    WO_uint16_a583_testDevice1 AT %MW1020: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int32_a583_testDevice1 AT %MW1304: ARRAY [0..9] OF DINT;
+    WO_int32_a583_testDevice1 AT %MW1040: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint32_a583_testDevice1 AT %MW1344: ARRAY [0..9] OF DWORD;
+    WO_uint32_a583_testDevice1 AT %MW1080: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_float32_a583_testDevice1 AT %MW1384: ARRAY [0..9] OF REAL;
+    WO_float32_a583_testDevice1 AT %MW1120: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_string_a583_testDevice1 AT %MW1424: ARRAY [0..9] OF STRING(64);
+    WO_string_a583_testDevice1 AT %MW1160: ARRAY [0..9] OF STRING(64);
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_date_a583_testDevice1 AT %MW2076: ARRAY [0..9] OF DT;
+    WO_date_a583_testDevice1 AT %MW1812: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_char_a583_testDevice1 AT %MW2156: ARRAY [0..9] OF SINT;
+    WO_char_a583_testDevice1 AT %MW1892: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_byte_a583_testDevice1 AT %MW2166: ARRAY [0..9] OF BYTE;
+    WO_byte_a583_testDevice1 AT %MW1902: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_word_a583_testDevice1 AT %MW2176: ARRAY [0..9] OF WORD;
+    WO_word_a583_testDevice1 AT %MW1912: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dword_a583_testDevice1 AT %MW2196: ARRAY [0..9] OF DWORD;
+    WO_dword_a583_testDevice1 AT %MW1932: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int_a583_testDevice1 AT %MW2236: ARRAY [0..9] OF INT;
+    WO_int_a583_testDevice1 AT %MW1972: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dint_a583_testDevice1 AT %MW2256: ARRAY [0..9] OF DINT;
+    WO_dint_a583_testDevice1 AT %MW1992: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_real_a583_testDevice1 AT %MW2296: ARRAY [0..9] OF REAL;
+    WO_real_a583_testDevice1 AT %MW2032: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dt_a583_testDevice1 AT %MW2336: ARRAY [0..9] OF DT;
+    WO_dt_a583_testDevice1 AT %MW2072: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int8_a583_testDevice2 AT %MW2416: ARRAY [0..9] OF SINT;
+    WO_int8_a583_testDevice2 AT %MW2152: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint8_a583_testDevice2 AT %MW2426: ARRAY [0..9] OF BYTE;
+    WO_uint8_a583_testDevice2 AT %MW2162: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int16_a583_testDevice2 AT %MW2436: ARRAY [0..9] OF INT;
+    WO_int16_a583_testDevice2 AT %MW2172: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint16_a583_testDevice2 AT %MW2456: ARRAY [0..9] OF WORD;
+    WO_uint16_a583_testDevice2 AT %MW2192: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int32_a583_testDevice2 AT %MW2476: ARRAY [0..9] OF DINT;
+    WO_int32_a583_testDevice2 AT %MW2212: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint32_a583_testDevice2 AT %MW2516: ARRAY [0..9] OF DWORD;
+    WO_uint32_a583_testDevice2 AT %MW2252: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_float32_a583_testDevice2 AT %MW2556: ARRAY [0..9] OF REAL;
+    WO_float32_a583_testDevice2 AT %MW2292: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_string_a583_testDevice2 AT %MW2596: ARRAY [0..9] OF STRING(64);
+    WO_string_a583_testDevice2 AT %MW2332: ARRAY [0..9] OF STRING(64);
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_date_a583_testDevice2 AT %MW3248: ARRAY [0..9] OF DT;
+    WO_date_a583_testDevice2 AT %MW2984: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_char_a583_testDevice2 AT %MW3328: ARRAY [0..9] OF SINT;
+    WO_char_a583_testDevice2 AT %MW3064: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_byte_a583_testDevice2 AT %MW3338: ARRAY [0..9] OF BYTE;
+    WO_byte_a583_testDevice2 AT %MW3074: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_word_a583_testDevice2 AT %MW3348: ARRAY [0..9] OF WORD;
+    WO_word_a583_testDevice2 AT %MW3084: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dword_a583_testDevice2 AT %MW3368: ARRAY [0..9] OF DWORD;
+    WO_dword_a583_testDevice2 AT %MW3104: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int_a583_testDevice2 AT %MW3408: ARRAY [0..9] OF INT;
+    WO_int_a583_testDevice2 AT %MW3144: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dint_a583_testDevice2 AT %MW3428: ARRAY [0..9] OF DINT;
+    WO_dint_a583_testDevice2 AT %MW3164: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_real_a583_testDevice2 AT %MW3468: ARRAY [0..9] OF REAL;
+    WO_real_a583_testDevice2 AT %MW3204: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dt_a583_testDevice2 AT %MW3508: ARRAY [0..9] OF DT;
+    WO_dt_a583_testDevice2 AT %MW3244: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int8_a583_testDevice1 AT %MW3588: ARRAY [0..1, 0..1] OF SINT;
+    C_int8_a583_testDevice1 AT %MW3324: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint8_a583_testDevice1 AT %MW3592: ARRAY [0..1, 0..1] OF BYTE;
+    C_uint8_a583_testDevice1 AT %MW3328: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int16_a583_testDevice1 AT %MW3596: ARRAY [0..1, 0..1] OF INT;
+    C_int16_a583_testDevice1 AT %MW3332: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint16_a583_testDevice1 AT %MW3604: ARRAY [0..1, 0..1] OF WORD;
+    C_uint16_a583_testDevice1 AT %MW3340: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int32_a583_testDevice1 AT %MW3612: ARRAY [0..1, 0..1] OF DINT;
+    C_int32_a583_testDevice1 AT %MW3348: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint32_a583_testDevice1 AT %MW3628: ARRAY [0..1, 0..1] OF DWORD;
+    C_uint32_a583_testDevice1 AT %MW3364: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_float32_a583_testDevice1 AT %MW3644: ARRAY [0..1, 0..1] OF REAL;
+    C_float32_a583_testDevice1 AT %MW3380: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_string_a583_testDevice1 AT %MW3660: ARRAY [0..1, 0..1] OF STRING(64);
+    C_string_a583_testDevice1 AT %MW3396: ARRAY [0..1, 0..1] OF STRING(64);
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_date_a583_testDevice1 AT %MW3920: ARRAY [0..1, 0..1] OF DT;
+    C_date_a583_testDevice1 AT %MW3656: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_char_a583_testDevice1 AT %MW3952: ARRAY [0..1, 0..1] OF SINT;
+    C_char_a583_testDevice1 AT %MW3688: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_byte_a583_testDevice1 AT %MW3956: ARRAY [0..1, 0..1] OF BYTE;
+    C_byte_a583_testDevice1 AT %MW3692: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_word_a583_testDevice1 AT %MW3960: ARRAY [0..1, 0..1] OF WORD;
+    C_word_a583_testDevice1 AT %MW3696: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dword_a583_testDevice1 AT %MW3968: ARRAY [0..1, 0..1] OF DWORD;
+    C_dword_a583_testDevice1 AT %MW3704: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int_a583_testDevice1 AT %MW3984: ARRAY [0..1, 0..1] OF INT;
+    C_int_a583_testDevice1 AT %MW3720: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dint_a583_testDevice1 AT %MW3992: ARRAY [0..1, 0..1] OF DINT;
+    C_dint_a583_testDevice1 AT %MW3728: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_real_a583_testDevice1 AT %MW4008: ARRAY [0..1, 0..1] OF REAL;
+    C_real_a583_testDevice1 AT %MW3744: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dt_a583_testDevice1 AT %MW4024: ARRAY [0..1, 0..1] OF DT;
+    C_dt_a583_testDevice1 AT %MW3760: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int8_a583_testDevice2 AT %MW4056: ARRAY [0..1, 0..1] OF SINT;
+    C_int8_a583_testDevice2 AT %MW3792: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint8_a583_testDevice2 AT %MW4060: ARRAY [0..1, 0..1] OF BYTE;
+    C_uint8_a583_testDevice2 AT %MW3796: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int16_a583_testDevice2 AT %MW4064: ARRAY [0..1, 0..1] OF INT;
+    C_int16_a583_testDevice2 AT %MW3800: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint16_a583_testDevice2 AT %MW4072: ARRAY [0..1, 0..1] OF WORD;
+    C_uint16_a583_testDevice2 AT %MW3808: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int32_a583_testDevice2 AT %MW4080: ARRAY [0..1, 0..1] OF DINT;
+    C_int32_a583_testDevice2 AT %MW3816: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint32_a583_testDevice2 AT %MW4096: ARRAY [0..1, 0..1] OF DWORD;
+    C_uint32_a583_testDevice2 AT %MW3832: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_float32_a583_testDevice2 AT %MW4112: ARRAY [0..1, 0..1] OF REAL;
+    C_float32_a583_testDevice2 AT %MW3848: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_string_a583_testDevice2 AT %MW4128: ARRAY [0..1, 0..1] OF STRING(64);
+    C_string_a583_testDevice2 AT %MW3864: ARRAY [0..1, 0..1] OF STRING(64);
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_date_a583_testDevice2 AT %MW4388: ARRAY [0..1, 0..1] OF DT;
+    C_date_a583_testDevice2 AT %MW4124: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_char_a583_testDevice2 AT %MW4420: ARRAY [0..1, 0..1] OF SINT;
+    C_char_a583_testDevice2 AT %MW4156: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_byte_a583_testDevice2 AT %MW4424: ARRAY [0..1, 0..1] OF BYTE;
+    C_byte_a583_testDevice2 AT %MW4160: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_word_a583_testDevice2 AT %MW4428: ARRAY [0..1, 0..1] OF WORD;
+    C_word_a583_testDevice2 AT %MW4164: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dword_a583_testDevice2 AT %MW4436: ARRAY [0..1, 0..1] OF DWORD;
+    C_dword_a583_testDevice2 AT %MW4172: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int_a583_testDevice2 AT %MW4452: ARRAY [0..1, 0..1] OF INT;
+    C_int_a583_testDevice2 AT %MW4188: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dint_a583_testDevice2 AT %MW4460: ARRAY [0..1, 0..1] OF DINT;
+    C_dint_a583_testDevice2 AT %MW4196: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_real_a583_testDevice2 AT %MW4476: ARRAY [0..1, 0..1] OF REAL;
+    C_real_a583_testDevice2 AT %MW4212: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dt_a583_testDevice2 AT %MW4492: ARRAY [0..1, 0..1] OF DT;
+    C_dt_a583_testDevice2 AT %MW4228: ARRAY [0..1, 0..1] OF DT;
 
 END_VAR
\ No newline at end of file
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC3.exp b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC3.exp
index a501100e4e6c813ec15d2f293c5c004541c5d599..322cb027bf384afb288a934798631eaf551143bd 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC3.exp
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020_TC3.exp
@@ -11,13 +11,13 @@ VAR_GLOBAL
     _version_a781_SilecsHeader AT %MW0: STRING(16):= DEV;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _checksum_a781_SilecsHeader AT %MW20: DWORD:= 2305663869;
+    _checksum_a781_SilecsHeader AT %MW20: DWORD:= 3857507129;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
     _user_a781_SilecsHeader AT %MW24: STRING(16):= 'schwinn';
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _date_a781_SilecsHeader AT %MW44: DT:= DT#2018-1-31-10:49:39;
+    _date_a781_SilecsHeader AT %MW44: DT:= DT#2018-1-31-17:6:28;
 
     (*AllTypes/testDevice1/MyROBlock *)
     RO_int8_a583_testDevice1 AT %MW52: SINT;
@@ -122,309 +122,405 @@ VAR_GLOBAL
     RO_dt_a583_testDevice2 AT %MW300: DT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int8_a583_testDevice1 AT %MW308: ARRAY [0..1, 0..1] OF SINT;
+    RW_int8_a583_testDevice1 AT %MW308: SINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint8_a583_testDevice1 AT %MW312: ARRAY [0..1, 0..1] OF BYTE;
+    RW_uint8_a583_testDevice1 AT %MW310: BYTE;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int16_a583_testDevice1 AT %MW316: ARRAY [0..1, 0..1] OF INT;
+    RW_int16_a583_testDevice1 AT %MW312: INT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint16_a583_testDevice1 AT %MW324: ARRAY [0..1, 0..1] OF WORD;
+    RW_uint16_a583_testDevice1 AT %MW314: WORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int32_a583_testDevice1 AT %MW332: ARRAY [0..1, 0..1] OF DINT;
+    RW_int32_a583_testDevice1 AT %MW316: DINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_uint32_a583_testDevice1 AT %MW348: ARRAY [0..1, 0..1] OF DWORD;
+    RW_uint32_a583_testDevice1 AT %MW320: DWORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_float32_a583_testDevice1 AT %MW364: ARRAY [0..1, 0..1] OF REAL;
+    RW_float32_a583_testDevice1 AT %MW324: REAL;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_string_a583_testDevice1 AT %MW380: ARRAY [0..1, 0..1] OF STRING(64);
+    RW_string_a583_testDevice1 AT %MW328: STRING(64);
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_date_a583_testDevice1 AT %MW640: ARRAY [0..1, 0..1] OF DT;
+    RW_date_a583_testDevice1 AT %MW396: DT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_char_a583_testDevice1 AT %MW672: ARRAY [0..1, 0..1] OF SINT;
+    RW_char_a583_testDevice1 AT %MW404: SINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_byte_a583_testDevice1 AT %MW676: ARRAY [0..1, 0..1] OF BYTE;
+    RW_byte_a583_testDevice1 AT %MW406: BYTE;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_word_a583_testDevice1 AT %MW680: ARRAY [0..1, 0..1] OF WORD;
+    RW_word_a583_testDevice1 AT %MW408: WORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dword_a583_testDevice1 AT %MW688: ARRAY [0..1, 0..1] OF DWORD;
+    RW_dword_a583_testDevice1 AT %MW412: DWORD;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_int_a583_testDevice1 AT %MW704: ARRAY [0..1, 0..1] OF INT;
+    RW_int_a583_testDevice1 AT %MW416: INT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dint_a583_testDevice1 AT %MW712: ARRAY [0..1, 0..1] OF DINT;
+    RW_dint_a583_testDevice1 AT %MW420: DINT;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_real_a583_testDevice1 AT %MW728: ARRAY [0..1, 0..1] OF REAL;
+    RW_real_a583_testDevice1 AT %MW424: REAL;
 
     (*AllTypes/testDevice1/MyRWBlock *)
-    RW_dt_a583_testDevice1 AT %MW744: ARRAY [0..1, 0..1] OF DT;
+    RW_dt_a583_testDevice1 AT %MW428: DT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int8_a583_testDevice1 AT %MW436: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint8_a583_testDevice1 AT %MW440: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int16_a583_testDevice1 AT %MW444: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint16_a583_testDevice1 AT %MW452: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int32_a583_testDevice1 AT %MW460: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_uint32_a583_testDevice1 AT %MW476: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_float32_a583_testDevice1 AT %MW492: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_date_a583_testDevice1 AT %MW508: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_char_a583_testDevice1 AT %MW540: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_byte_a583_testDevice1 AT %MW544: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_word_a583_testDevice1 AT %MW548: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dword_a583_testDevice1 AT %MW556: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_int_a583_testDevice1 AT %MW572: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dint_a583_testDevice1 AT %MW580: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_real_a583_testDevice1 AT %MW596: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyRWBlock *)
+    RW2_dt_a583_testDevice1 AT %MW612: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int8_a583_testDevice2 AT %MW644: SINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint8_a583_testDevice2 AT %MW646: BYTE;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int16_a583_testDevice2 AT %MW648: INT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint16_a583_testDevice2 AT %MW650: WORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int32_a583_testDevice2 AT %MW652: DINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_uint32_a583_testDevice2 AT %MW656: DWORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_float32_a583_testDevice2 AT %MW660: REAL;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_string_a583_testDevice2 AT %MW664: STRING(64);
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_date_a583_testDevice2 AT %MW732: DT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_char_a583_testDevice2 AT %MW740: SINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_byte_a583_testDevice2 AT %MW742: BYTE;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_word_a583_testDevice2 AT %MW744: WORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_dword_a583_testDevice2 AT %MW748: DWORD;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_int_a583_testDevice2 AT %MW752: INT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_dint_a583_testDevice2 AT %MW756: DINT;
+
+    (*AllTypes/testDevice2/MyRWBlock *)
+    RW_real_a583_testDevice2 AT %MW760: REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int8_a583_testDevice2 AT %MW776: ARRAY [0..1, 0..1] OF SINT;
+    RW_dt_a583_testDevice2 AT %MW764: DT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint8_a583_testDevice2 AT %MW780: ARRAY [0..1, 0..1] OF BYTE;
+    RW2_int8_a583_testDevice2 AT %MW772: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int16_a583_testDevice2 AT %MW784: ARRAY [0..1, 0..1] OF INT;
+    RW2_uint8_a583_testDevice2 AT %MW776: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint16_a583_testDevice2 AT %MW792: ARRAY [0..1, 0..1] OF WORD;
+    RW2_int16_a583_testDevice2 AT %MW780: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int32_a583_testDevice2 AT %MW800: ARRAY [0..1, 0..1] OF DINT;
+    RW2_uint16_a583_testDevice2 AT %MW788: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_uint32_a583_testDevice2 AT %MW816: ARRAY [0..1, 0..1] OF DWORD;
+    RW2_int32_a583_testDevice2 AT %MW796: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_float32_a583_testDevice2 AT %MW832: ARRAY [0..1, 0..1] OF REAL;
+    RW2_uint32_a583_testDevice2 AT %MW812: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_string_a583_testDevice2 AT %MW848: ARRAY [0..1, 0..1] OF STRING(64);
+    RW2_float32_a583_testDevice2 AT %MW828: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_date_a583_testDevice2 AT %MW1108: ARRAY [0..1, 0..1] OF DT;
+    RW2_date_a583_testDevice2 AT %MW844: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_char_a583_testDevice2 AT %MW1140: ARRAY [0..1, 0..1] OF SINT;
+    RW2_char_a583_testDevice2 AT %MW876: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_byte_a583_testDevice2 AT %MW1144: ARRAY [0..1, 0..1] OF BYTE;
+    RW2_byte_a583_testDevice2 AT %MW880: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_word_a583_testDevice2 AT %MW1148: ARRAY [0..1, 0..1] OF WORD;
+    RW2_word_a583_testDevice2 AT %MW884: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dword_a583_testDevice2 AT %MW1156: ARRAY [0..1, 0..1] OF DWORD;
+    RW2_dword_a583_testDevice2 AT %MW892: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_int_a583_testDevice2 AT %MW1172: ARRAY [0..1, 0..1] OF INT;
+    RW2_int_a583_testDevice2 AT %MW908: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dint_a583_testDevice2 AT %MW1180: ARRAY [0..1, 0..1] OF DINT;
+    RW2_dint_a583_testDevice2 AT %MW916: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_real_a583_testDevice2 AT %MW1196: ARRAY [0..1, 0..1] OF REAL;
+    RW2_real_a583_testDevice2 AT %MW932: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyRWBlock *)
-    RW_dt_a583_testDevice2 AT %MW1212: ARRAY [0..1, 0..1] OF DT;
+    RW2_dt_a583_testDevice2 AT %MW948: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int8_a583_testDevice1 AT %MW1244: ARRAY [0..9] OF SINT;
+    WO_int8_a583_testDevice1 AT %MW980: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint8_a583_testDevice1 AT %MW1254: ARRAY [0..9] OF BYTE;
+    WO_uint8_a583_testDevice1 AT %MW990: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int16_a583_testDevice1 AT %MW1264: ARRAY [0..9] OF INT;
+    WO_int16_a583_testDevice1 AT %MW1000: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint16_a583_testDevice1 AT %MW1284: ARRAY [0..9] OF WORD;
+    WO_uint16_a583_testDevice1 AT %MW1020: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int32_a583_testDevice1 AT %MW1304: ARRAY [0..9] OF DINT;
+    WO_int32_a583_testDevice1 AT %MW1040: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_uint32_a583_testDevice1 AT %MW1344: ARRAY [0..9] OF DWORD;
+    WO_uint32_a583_testDevice1 AT %MW1080: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_float32_a583_testDevice1 AT %MW1384: ARRAY [0..9] OF REAL;
+    WO_float32_a583_testDevice1 AT %MW1120: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_string_a583_testDevice1 AT %MW1424: ARRAY [0..9] OF STRING(64);
+    WO_string_a583_testDevice1 AT %MW1160: ARRAY [0..9] OF STRING(64);
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_date_a583_testDevice1 AT %MW2076: ARRAY [0..9] OF DT;
+    WO_date_a583_testDevice1 AT %MW1812: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_char_a583_testDevice1 AT %MW2156: ARRAY [0..9] OF SINT;
+    WO_char_a583_testDevice1 AT %MW1892: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_byte_a583_testDevice1 AT %MW2166: ARRAY [0..9] OF BYTE;
+    WO_byte_a583_testDevice1 AT %MW1902: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_word_a583_testDevice1 AT %MW2176: ARRAY [0..9] OF WORD;
+    WO_word_a583_testDevice1 AT %MW1912: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dword_a583_testDevice1 AT %MW2196: ARRAY [0..9] OF DWORD;
+    WO_dword_a583_testDevice1 AT %MW1932: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_int_a583_testDevice1 AT %MW2236: ARRAY [0..9] OF INT;
+    WO_int_a583_testDevice1 AT %MW1972: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dint_a583_testDevice1 AT %MW2256: ARRAY [0..9] OF DINT;
+    WO_dint_a583_testDevice1 AT %MW1992: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_real_a583_testDevice1 AT %MW2296: ARRAY [0..9] OF REAL;
+    WO_real_a583_testDevice1 AT %MW2032: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice1/MyWOBlock *)
-    WO_dt_a583_testDevice1 AT %MW2336: ARRAY [0..9] OF DT;
+    WO_dt_a583_testDevice1 AT %MW2072: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int8_a583_testDevice2 AT %MW2416: ARRAY [0..9] OF SINT;
+    WO_int8_a583_testDevice2 AT %MW2152: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint8_a583_testDevice2 AT %MW2426: ARRAY [0..9] OF BYTE;
+    WO_uint8_a583_testDevice2 AT %MW2162: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int16_a583_testDevice2 AT %MW2436: ARRAY [0..9] OF INT;
+    WO_int16_a583_testDevice2 AT %MW2172: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint16_a583_testDevice2 AT %MW2456: ARRAY [0..9] OF WORD;
+    WO_uint16_a583_testDevice2 AT %MW2192: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int32_a583_testDevice2 AT %MW2476: ARRAY [0..9] OF DINT;
+    WO_int32_a583_testDevice2 AT %MW2212: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_uint32_a583_testDevice2 AT %MW2516: ARRAY [0..9] OF DWORD;
+    WO_uint32_a583_testDevice2 AT %MW2252: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_float32_a583_testDevice2 AT %MW2556: ARRAY [0..9] OF REAL;
+    WO_float32_a583_testDevice2 AT %MW2292: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_string_a583_testDevice2 AT %MW2596: ARRAY [0..9] OF STRING(64);
+    WO_string_a583_testDevice2 AT %MW2332: ARRAY [0..9] OF STRING(64);
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_date_a583_testDevice2 AT %MW3248: ARRAY [0..9] OF DT;
+    WO_date_a583_testDevice2 AT %MW2984: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_char_a583_testDevice2 AT %MW3328: ARRAY [0..9] OF SINT;
+    WO_char_a583_testDevice2 AT %MW3064: ARRAY [0..9] OF SINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_byte_a583_testDevice2 AT %MW3338: ARRAY [0..9] OF BYTE;
+    WO_byte_a583_testDevice2 AT %MW3074: ARRAY [0..9] OF BYTE;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_word_a583_testDevice2 AT %MW3348: ARRAY [0..9] OF WORD;
+    WO_word_a583_testDevice2 AT %MW3084: ARRAY [0..9] OF WORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dword_a583_testDevice2 AT %MW3368: ARRAY [0..9] OF DWORD;
+    WO_dword_a583_testDevice2 AT %MW3104: ARRAY [0..9] OF DWORD;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_int_a583_testDevice2 AT %MW3408: ARRAY [0..9] OF INT;
+    WO_int_a583_testDevice2 AT %MW3144: ARRAY [0..9] OF INT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dint_a583_testDevice2 AT %MW3428: ARRAY [0..9] OF DINT;
+    WO_dint_a583_testDevice2 AT %MW3164: ARRAY [0..9] OF DINT;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_real_a583_testDevice2 AT %MW3468: ARRAY [0..9] OF REAL;
+    WO_real_a583_testDevice2 AT %MW3204: ARRAY [0..9] OF REAL;
 
     (*AllTypes/testDevice2/MyWOBlock *)
-    WO_dt_a583_testDevice2 AT %MW3508: ARRAY [0..9] OF DT;
+    WO_dt_a583_testDevice2 AT %MW3244: ARRAY [0..9] OF DT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int8_a583_testDevice1 AT %MW3588: ARRAY [0..1, 0..1] OF SINT;
+    C_int8_a583_testDevice1 AT %MW3324: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint8_a583_testDevice1 AT %MW3592: ARRAY [0..1, 0..1] OF BYTE;
+    C_uint8_a583_testDevice1 AT %MW3328: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int16_a583_testDevice1 AT %MW3596: ARRAY [0..1, 0..1] OF INT;
+    C_int16_a583_testDevice1 AT %MW3332: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint16_a583_testDevice1 AT %MW3604: ARRAY [0..1, 0..1] OF WORD;
+    C_uint16_a583_testDevice1 AT %MW3340: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int32_a583_testDevice1 AT %MW3612: ARRAY [0..1, 0..1] OF DINT;
+    C_int32_a583_testDevice1 AT %MW3348: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_uint32_a583_testDevice1 AT %MW3628: ARRAY [0..1, 0..1] OF DWORD;
+    C_uint32_a583_testDevice1 AT %MW3364: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_float32_a583_testDevice1 AT %MW3644: ARRAY [0..1, 0..1] OF REAL;
+    C_float32_a583_testDevice1 AT %MW3380: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_string_a583_testDevice1 AT %MW3660: ARRAY [0..1, 0..1] OF STRING(64);
+    C_string_a583_testDevice1 AT %MW3396: ARRAY [0..1, 0..1] OF STRING(64);
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_date_a583_testDevice1 AT %MW3920: ARRAY [0..1, 0..1] OF DT;
+    C_date_a583_testDevice1 AT %MW3656: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_char_a583_testDevice1 AT %MW3952: ARRAY [0..1, 0..1] OF SINT;
+    C_char_a583_testDevice1 AT %MW3688: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_byte_a583_testDevice1 AT %MW3956: ARRAY [0..1, 0..1] OF BYTE;
+    C_byte_a583_testDevice1 AT %MW3692: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_word_a583_testDevice1 AT %MW3960: ARRAY [0..1, 0..1] OF WORD;
+    C_word_a583_testDevice1 AT %MW3696: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dword_a583_testDevice1 AT %MW3968: ARRAY [0..1, 0..1] OF DWORD;
+    C_dword_a583_testDevice1 AT %MW3704: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_int_a583_testDevice1 AT %MW3984: ARRAY [0..1, 0..1] OF INT;
+    C_int_a583_testDevice1 AT %MW3720: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dint_a583_testDevice1 AT %MW3992: ARRAY [0..1, 0..1] OF DINT;
+    C_dint_a583_testDevice1 AT %MW3728: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_real_a583_testDevice1 AT %MW4008: ARRAY [0..1, 0..1] OF REAL;
+    C_real_a583_testDevice1 AT %MW3744: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice1/MyCBlock *)
-    C_dt_a583_testDevice1 AT %MW4024: ARRAY [0..1, 0..1] OF DT;
+    C_dt_a583_testDevice1 AT %MW3760: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int8_a583_testDevice2 AT %MW4056: ARRAY [0..1, 0..1] OF SINT;
+    C_int8_a583_testDevice2 AT %MW3792: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint8_a583_testDevice2 AT %MW4060: ARRAY [0..1, 0..1] OF BYTE;
+    C_uint8_a583_testDevice2 AT %MW3796: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int16_a583_testDevice2 AT %MW4064: ARRAY [0..1, 0..1] OF INT;
+    C_int16_a583_testDevice2 AT %MW3800: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint16_a583_testDevice2 AT %MW4072: ARRAY [0..1, 0..1] OF WORD;
+    C_uint16_a583_testDevice2 AT %MW3808: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int32_a583_testDevice2 AT %MW4080: ARRAY [0..1, 0..1] OF DINT;
+    C_int32_a583_testDevice2 AT %MW3816: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_uint32_a583_testDevice2 AT %MW4096: ARRAY [0..1, 0..1] OF DWORD;
+    C_uint32_a583_testDevice2 AT %MW3832: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_float32_a583_testDevice2 AT %MW4112: ARRAY [0..1, 0..1] OF REAL;
+    C_float32_a583_testDevice2 AT %MW3848: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_string_a583_testDevice2 AT %MW4128: ARRAY [0..1, 0..1] OF STRING(64);
+    C_string_a583_testDevice2 AT %MW3864: ARRAY [0..1, 0..1] OF STRING(64);
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_date_a583_testDevice2 AT %MW4388: ARRAY [0..1, 0..1] OF DT;
+    C_date_a583_testDevice2 AT %MW4124: ARRAY [0..1, 0..1] OF DT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_char_a583_testDevice2 AT %MW4420: ARRAY [0..1, 0..1] OF SINT;
+    C_char_a583_testDevice2 AT %MW4156: ARRAY [0..1, 0..1] OF SINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_byte_a583_testDevice2 AT %MW4424: ARRAY [0..1, 0..1] OF BYTE;
+    C_byte_a583_testDevice2 AT %MW4160: ARRAY [0..1, 0..1] OF BYTE;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_word_a583_testDevice2 AT %MW4428: ARRAY [0..1, 0..1] OF WORD;
+    C_word_a583_testDevice2 AT %MW4164: ARRAY [0..1, 0..1] OF WORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dword_a583_testDevice2 AT %MW4436: ARRAY [0..1, 0..1] OF DWORD;
+    C_dword_a583_testDevice2 AT %MW4172: ARRAY [0..1, 0..1] OF DWORD;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_int_a583_testDevice2 AT %MW4452: ARRAY [0..1, 0..1] OF INT;
+    C_int_a583_testDevice2 AT %MW4188: ARRAY [0..1, 0..1] OF INT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dint_a583_testDevice2 AT %MW4460: ARRAY [0..1, 0..1] OF DINT;
+    C_dint_a583_testDevice2 AT %MW4196: ARRAY [0..1, 0..1] OF DINT;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_real_a583_testDevice2 AT %MW4476: ARRAY [0..1, 0..1] OF REAL;
+    C_real_a583_testDevice2 AT %MW4212: ARRAY [0..1, 0..1] OF REAL;
 
     (*AllTypes/testDevice2/MyCBlock *)
-    C_dt_a583_testDevice2 AT %MW4492: ARRAY [0..1, 0..1] OF DT;
+    C_dt_a583_testDevice2 AT %MW4228: ARRAY [0..1, 0..1] OF DT;
 
 END_VAR
\ No newline at end of file
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h
index 11f0be4e718fad06c3ba19db6d7a05f5e7a771e1..d514f88bf3225f38cccdb2d291d14835c1130fba 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h
@@ -97,23 +97,39 @@ typedef struct
 
 typedef struct 
 {
-    int16_t RW_int8[2][2];
-    uint16_t RW_uint8[2][2];
-    int16_t RW_int16[2][2];
-    uint16_t RW_uint16[2][2];
-    int32_t RW_int32[2][2];
-    uint32_t RW_uint32[2][2];
-    float RW_float32[2][2];
-    uint8_t RW_string[2][2][64];
-    dt RW_date[2][2];
-    int16_t RW_char[2][2];
-    uint16_t RW_byte[2][2];
-    uint16_t RW_word[2][2];
-    uint32_t RW_dword[2][2];
-    int16_t RW_int[2][2];
-    int32_t RW_dint[2][2];
-    float RW_real[2][2];
-    dt RW_dt[2][2];
+    int16_t RW_int8;
+    uint16_t RW_uint8;
+    int16_t RW_int16;
+    uint16_t RW_uint16;
+    int32_t RW_int32;
+    uint32_t RW_uint32;
+    float RW_float32;
+    uint8_t RW_string[64];
+    dt RW_date;
+    int16_t RW_char;
+    uint16_t RW_byte;
+    uint16_t RW_word;
+    uint32_t RW_dword;
+    int16_t RW_int;
+    int32_t RW_dint;
+    float RW_real;
+    dt RW_dt;
+    int16_t RW2_int8[2][2];
+    uint16_t RW2_uint8[2][2];
+    int16_t RW2_int16[2][2];
+    uint16_t RW2_uint16[2][2];
+    int32_t RW2_int32[2][2];
+    uint32_t RW2_uint32[2][2];
+    float RW2_float32[2][2];
+    dt RW2_date[2][2];
+    int16_t RW2_char[2][2];
+    uint16_t RW2_byte[2][2];
+    uint16_t RW2_word[2][2];
+    uint32_t RW2_dword[2][2];
+    int16_t RW2_int[2][2];
+    int32_t RW2_dint[2][2];
+    float RW2_real[2][2];
+    dt RW2_dt[2][2];
 
 } _AllTypes_MyRWBlock;
 
@@ -210,13 +226,13 @@ int SILECS_init()
     strcpy((unsigned char *)silecsData.data.SilecsHeader_hdrBlk.device[0]._version, "SILECS_DEV");
     
     /* Silecs checksum initialization */
-    silecsData.data.SilecsHeader_hdrBlk.device[0]._checksum  = 582399177;
+    silecsData.data.SilecsHeader_hdrBlk.device[0]._checksum  = 1058313111;
     
     /* Silecs user initialization */
     strcpy((unsigned char *)silecsData.data.SilecsHeader_hdrBlk.device[0]._user, "schwinn");
     
     /* Silecs date initialization */
-    SILECS_set_dt(2,39,49,10,31,1,2018,&silecsData.data.SilecsHeader_hdrBlk.device[0]._date);
+    SILECS_set_dt(2,28,6,17,31,1,2018,&silecsData.data.SilecsHeader_hdrBlk.device[0]._date);
 }
 
 /*
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h
index 6660421af5e56aaf0fc19af8438dd3255bd9df5c..d8ecb7956aeab10773fc73605eaeecb05029d1c2 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h
@@ -97,23 +97,39 @@ typedef struct
 
 typedef struct 
 {
-    int16_t RW_int8[2][2];
-    uint16_t RW_uint8[2][2];
-    int16_t RW_int16[2][2];
-    uint16_t RW_uint16[2][2];
-    int32_t RW_int32[2][2];
-    uint32_t RW_uint32[2][2];
-    float RW_float32[2][2];
-    uint8_t RW_string[2][2][64];
-    dt RW_date[2][2];
-    int16_t RW_char[2][2];
-    uint16_t RW_byte[2][2];
-    uint16_t RW_word[2][2];
-    uint32_t RW_dword[2][2];
-    int16_t RW_int[2][2];
-    int32_t RW_dint[2][2];
-    float RW_real[2][2];
-    dt RW_dt[2][2];
+    int16_t RW_int8;
+    uint16_t RW_uint8;
+    int16_t RW_int16;
+    uint16_t RW_uint16;
+    int32_t RW_int32;
+    uint32_t RW_uint32;
+    float RW_float32;
+    uint8_t RW_string[64];
+    dt RW_date;
+    int16_t RW_char;
+    uint16_t RW_byte;
+    uint16_t RW_word;
+    uint32_t RW_dword;
+    int16_t RW_int;
+    int32_t RW_dint;
+    float RW_real;
+    dt RW_dt;
+    int16_t RW2_int8[2][2];
+    uint16_t RW2_uint8[2][2];
+    int16_t RW2_int16[2][2];
+    uint16_t RW2_uint16[2][2];
+    int32_t RW2_int32[2][2];
+    uint32_t RW2_uint32[2][2];
+    float RW2_float32[2][2];
+    dt RW2_date[2][2];
+    int16_t RW2_char[2][2];
+    uint16_t RW2_byte[2][2];
+    uint16_t RW2_word[2][2];
+    uint32_t RW2_dword[2][2];
+    int16_t RW2_int[2][2];
+    int32_t RW2_dint[2][2];
+    float RW2_real[2][2];
+    dt RW2_dt[2][2];
 
 } _AllTypes_MyRWBlock;
 
@@ -199,13 +215,13 @@ int SILECS_init()
     strcpy((unsigned char *)silecsData.data.SilecsHeader_device[0].hdrBlk._version, "SILECS_DEV");
     
     /* Silecs checksum initialization */
-    silecsData.data.SilecsHeader_device[0].hdrBlk._checksum  = 582399177;
+    silecsData.data.SilecsHeader_device[0].hdrBlk._checksum  = 1058313111;
     
     /* Silecs user initialization */
     strcpy((unsigned char *)silecsData.data.SilecsHeader_device[0].hdrBlk._user, "schwinn");
     
     /* Silecs date initialization */
-    SILECS_set_dt(2,39,49,10,31,1,2018,&silecsData.data.SilecsHeader_device[0].hdrBlk._date);
+    SILECS_set_dt(2,28,6,17,31,1,2018,&silecsData.data.SilecsHeader_device[0].hdrBlk._date);
 }
 
 /*
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy
index d90bebd5a816e852c8638cfd6998505e049c6370..3eed6c479fe9e71e6278c6063baa22a682a89385 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy
@@ -5,7 +5,7 @@
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="_checksum_a781_SilecsHeader" typeName="DWORD" topologicalAddress="%MW8">
-      <variableInit value="582399177"/>
+      <variableInit value="1058313111"/>
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="_user_a781_SilecsHeader" typeName="STRING[16]" topologicalAddress="%MW10">
@@ -13,7 +13,7 @@
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="_date_a781_SilecsHeader" typeName="DT" topologicalAddress="%MW18">
-      <variableInit value="DT#2018-1-31-10:49:39"/>
+      <variableInit value="DT#2018-1-31-17:6:28"/>
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="RO_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW22">
@@ -118,310 +118,406 @@
     <variables name="RO_dt_a583_testDevice2" typeName="DT" topologicalAddress="%MW142">
       <comment>AllTypes/testDevice2/MyROBlock</comment>
     </variables>
-    <variables name="RW_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW146">
+    <variables name="RW_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW146">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW150">
+    <variables name="RW_uint8_a583_testDevice1" typeName="BYTE" topologicalAddress="%MW147">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW152">
+    <variables name="RW_int16_a583_testDevice1" typeName="INT" topologicalAddress="%MW148">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW156">
+    <variables name="RW_uint16_a583_testDevice1" typeName="WORD" topologicalAddress="%MW149">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW160">
+    <variables name="RW_int32_a583_testDevice1" typeName="DINT" topologicalAddress="%MW150">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW168">
+    <variables name="RW_uint32_a583_testDevice1" typeName="DWORD" topologicalAddress="%MW152">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW176">
+    <variables name="RW_float32_a583_testDevice1" typeName="REAL" topologicalAddress="%MW154">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW184">
+    <variables name="RW_string_a583_testDevice1" typeName="STRING[64]" topologicalAddress="%MW156">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW312">
+    <variables name="RW_date_a583_testDevice1" typeName="DT" topologicalAddress="%MW188">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW328">
+    <variables name="RW_char_a583_testDevice1" typeName="WORD" topologicalAddress="%MW192">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW332">
+    <variables name="RW_byte_a583_testDevice1" typeName="BYTE" topologicalAddress="%MW193">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW334">
+    <variables name="RW_word_a583_testDevice1" typeName="WORD" topologicalAddress="%MW194">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW338">
+    <variables name="RW_dword_a583_testDevice1" typeName="DWORD" topologicalAddress="%MW196">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW346">
+    <variables name="RW_int_a583_testDevice1" typeName="INT" topologicalAddress="%MW198">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW350">
+    <variables name="RW_dint_a583_testDevice1" typeName="DINT" topologicalAddress="%MW200">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW358">
+    <variables name="RW_real_a583_testDevice1" typeName="REAL" topologicalAddress="%MW202">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW366">
+    <variables name="RW_dt_a583_testDevice1" typeName="DT" topologicalAddress="%MW204">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW382">
+    <variables name="RW2_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW208">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW212">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW214">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW218">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW222">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW230">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW238">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW246">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW262">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW266">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW268">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW272">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW280">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW284">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW292">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW300">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int8_a583_testDevice2" typeName="WORD" topologicalAddress="%MW316">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_uint8_a583_testDevice2" typeName="BYTE" topologicalAddress="%MW317">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int16_a583_testDevice2" typeName="INT" topologicalAddress="%MW318">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_uint16_a583_testDevice2" typeName="WORD" topologicalAddress="%MW319">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int32_a583_testDevice2" typeName="DINT" topologicalAddress="%MW320">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_uint32_a583_testDevice2" typeName="DWORD" topologicalAddress="%MW322">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_float32_a583_testDevice2" typeName="REAL" topologicalAddress="%MW324">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_string_a583_testDevice2" typeName="STRING[64]" topologicalAddress="%MW326">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_date_a583_testDevice2" typeName="DT" topologicalAddress="%MW358">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_char_a583_testDevice2" typeName="WORD" topologicalAddress="%MW362">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_byte_a583_testDevice2" typeName="BYTE" topologicalAddress="%MW363">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_word_a583_testDevice2" typeName="WORD" topologicalAddress="%MW364">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_dword_a583_testDevice2" typeName="DWORD" topologicalAddress="%MW366">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int_a583_testDevice2" typeName="INT" topologicalAddress="%MW368">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_dint_a583_testDevice2" typeName="DINT" topologicalAddress="%MW370">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_real_a583_testDevice2" typeName="REAL" topologicalAddress="%MW372">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_dt_a583_testDevice2" typeName="DT" topologicalAddress="%MW374">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW386">
+    <variables name="RW2_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW378">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW388">
+    <variables name="RW2_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW382">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW392">
+    <variables name="RW2_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW384">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW396">
+    <variables name="RW2_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW388">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW404">
+    <variables name="RW2_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW392">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW412">
+    <variables name="RW2_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW400">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW420">
+    <variables name="RW2_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW408">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW548">
+    <variables name="RW2_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW416">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW564">
+    <variables name="RW2_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW432">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW568">
+    <variables name="RW2_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW436">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW570">
+    <variables name="RW2_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW438">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW574">
+    <variables name="RW2_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW442">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW582">
+    <variables name="RW2_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW450">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW586">
+    <variables name="RW2_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW454">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW594">
+    <variables name="RW2_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW462">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW602">
+    <variables name="RW2_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW470">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="WO_int8_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW618">
+    <variables name="WO_int8_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW486">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint8_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW628">
+    <variables name="WO_uint8_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW496">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int16_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW633">
+    <variables name="WO_int16_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW501">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint16_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW643">
+    <variables name="WO_uint16_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW511">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int32_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW654">
+    <variables name="WO_int32_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW522">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint32_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW674">
+    <variables name="WO_uint32_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW542">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_float32_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW694">
+    <variables name="WO_float32_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW562">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_string_a583_testDevice1" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW714">
+    <variables name="WO_string_a583_testDevice1" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW582">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_date_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1034">
+    <variables name="WO_date_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW902">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_char_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1074">
+    <variables name="WO_char_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW942">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_byte_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1084">
+    <variables name="WO_byte_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW952">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_word_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1089">
+    <variables name="WO_word_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW957">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dword_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1100">
+    <variables name="WO_dword_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW968">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1120">
+    <variables name="WO_int_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW988">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dint_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1130">
+    <variables name="WO_dint_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW998">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_real_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1150">
+    <variables name="WO_real_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1018">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dt_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1170">
+    <variables name="WO_dt_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1038">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int8_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1210">
+    <variables name="WO_int8_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1078">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint8_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1220">
+    <variables name="WO_uint8_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1088">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int16_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1225">
+    <variables name="WO_int16_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1093">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint16_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1235">
+    <variables name="WO_uint16_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1103">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int32_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1246">
+    <variables name="WO_int32_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1114">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint32_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1266">
+    <variables name="WO_uint32_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1134">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_float32_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1286">
+    <variables name="WO_float32_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1154">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_string_a583_testDevice2" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW1306">
+    <variables name="WO_string_a583_testDevice2" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW1174">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_date_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1626">
+    <variables name="WO_date_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1494">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_char_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1666">
+    <variables name="WO_char_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1534">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_byte_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1676">
+    <variables name="WO_byte_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1544">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_word_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1681">
+    <variables name="WO_word_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1549">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dword_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1692">
+    <variables name="WO_dword_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1560">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1712">
+    <variables name="WO_int_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1580">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dint_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1722">
+    <variables name="WO_dint_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1590">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_real_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1742">
+    <variables name="WO_real_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1610">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dt_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1762">
+    <variables name="WO_dt_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1630">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="C_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1802">
+    <variables name="C_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1670">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1806">
+    <variables name="C_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1674">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1808">
+    <variables name="C_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1676">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1812">
+    <variables name="C_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1680">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1816">
+    <variables name="C_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1684">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1824">
+    <variables name="C_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1692">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1832">
+    <variables name="C_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1700">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1840">
+    <variables name="C_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1708">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1968">
+    <variables name="C_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1836">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1984">
+    <variables name="C_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1852">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1988">
+    <variables name="C_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1856">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1990">
+    <variables name="C_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1858">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1994">
+    <variables name="C_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1862">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2002">
+    <variables name="C_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1870">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2006">
+    <variables name="C_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1874">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2014">
+    <variables name="C_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1882">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2022">
+    <variables name="C_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1890">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2038">
+    <variables name="C_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1906">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2042">
+    <variables name="C_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1910">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2044">
+    <variables name="C_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1912">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2048">
+    <variables name="C_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1916">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2052">
+    <variables name="C_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1920">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2060">
+    <variables name="C_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1928">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2068">
+    <variables name="C_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1936">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW2076">
+    <variables name="C_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1944">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2204">
+    <variables name="C_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2072">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2220">
+    <variables name="C_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2088">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2224">
+    <variables name="C_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2092">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2226">
+    <variables name="C_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2094">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2230">
+    <variables name="C_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2098">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2238">
+    <variables name="C_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2106">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2242">
+    <variables name="C_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2110">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2250">
+    <variables name="C_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2118">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2258">
+    <variables name="C_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2126">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
   </dataBlock>
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy
index 9a513184edd4e2fb6947151dcd4222d639725332..f16e4122e959abe70ddb18b606648cecbb2568c8 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy
@@ -5,7 +5,7 @@
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="_checksum_a781_SilecsHeader" typeName="DWORD" topologicalAddress="%MW8">
-      <variableInit value="582399177"/>
+      <variableInit value="1058313111"/>
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="_user_a781_SilecsHeader" typeName="STRING[16]" topologicalAddress="%MW10">
@@ -13,7 +13,7 @@
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="_date_a781_SilecsHeader" typeName="DT" topologicalAddress="%MW18">
-      <variableInit value="DT#2018-1-31-10:49:39"/>
+      <variableInit value="DT#2018-1-31-17:6:28"/>
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="RO_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW22">
@@ -118,310 +118,406 @@
     <variables name="RO_dt_a583_testDevice2" typeName="DT" topologicalAddress="%MW138">
       <comment>AllTypes/testDevice2/MyROBlock</comment>
     </variables>
-    <variables name="RW_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW142">
+    <variables name="RW_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW142">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW146">
+    <variables name="RW_uint8_a583_testDevice1" typeName="BYTE" topologicalAddress="%MW143">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW148">
+    <variables name="RW_int16_a583_testDevice1" typeName="INT" topologicalAddress="%MW144">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW152">
+    <variables name="RW_uint16_a583_testDevice1" typeName="WORD" topologicalAddress="%MW145">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW156">
+    <variables name="RW_int32_a583_testDevice1" typeName="DINT" topologicalAddress="%MW146">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW164">
+    <variables name="RW_uint32_a583_testDevice1" typeName="DWORD" topologicalAddress="%MW148">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW172">
+    <variables name="RW_float32_a583_testDevice1" typeName="REAL" topologicalAddress="%MW150">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW180">
+    <variables name="RW_string_a583_testDevice1" typeName="STRING[64]" topologicalAddress="%MW152">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW308">
+    <variables name="RW_date_a583_testDevice1" typeName="DT" topologicalAddress="%MW184">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW324">
+    <variables name="RW_char_a583_testDevice1" typeName="WORD" topologicalAddress="%MW188">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW328">
+    <variables name="RW_byte_a583_testDevice1" typeName="BYTE" topologicalAddress="%MW189">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW330">
+    <variables name="RW_word_a583_testDevice1" typeName="WORD" topologicalAddress="%MW190">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW334">
+    <variables name="RW_dword_a583_testDevice1" typeName="DWORD" topologicalAddress="%MW191">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW342">
+    <variables name="RW_int_a583_testDevice1" typeName="INT" topologicalAddress="%MW193">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW346">
+    <variables name="RW_dint_a583_testDevice1" typeName="DINT" topologicalAddress="%MW194">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW354">
+    <variables name="RW_real_a583_testDevice1" typeName="REAL" topologicalAddress="%MW196">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW362">
+    <variables name="RW_dt_a583_testDevice1" typeName="DT" topologicalAddress="%MW198">
       <comment>AllTypes/testDevice1/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW378">
+    <variables name="RW2_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW202">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW206">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW208">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW212">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW216">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW224">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW232">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW240">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW256">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW260">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW262">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW266">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW274">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW278">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW286">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW2_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW294">
+      <comment>AllTypes/testDevice1/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int8_a583_testDevice2" typeName="WORD" topologicalAddress="%MW310">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_uint8_a583_testDevice2" typeName="BYTE" topologicalAddress="%MW311">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int16_a583_testDevice2" typeName="INT" topologicalAddress="%MW312">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_uint16_a583_testDevice2" typeName="WORD" topologicalAddress="%MW313">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int32_a583_testDevice2" typeName="DINT" topologicalAddress="%MW314">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_uint32_a583_testDevice2" typeName="DWORD" topologicalAddress="%MW316">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_float32_a583_testDevice2" typeName="REAL" topologicalAddress="%MW318">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_string_a583_testDevice2" typeName="STRING[64]" topologicalAddress="%MW320">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_date_a583_testDevice2" typeName="DT" topologicalAddress="%MW352">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_char_a583_testDevice2" typeName="WORD" topologicalAddress="%MW356">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_byte_a583_testDevice2" typeName="BYTE" topologicalAddress="%MW357">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_word_a583_testDevice2" typeName="WORD" topologicalAddress="%MW358">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_dword_a583_testDevice2" typeName="DWORD" topologicalAddress="%MW359">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_int_a583_testDevice2" typeName="INT" topologicalAddress="%MW361">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_dint_a583_testDevice2" typeName="DINT" topologicalAddress="%MW362">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_real_a583_testDevice2" typeName="REAL" topologicalAddress="%MW364">
+      <comment>AllTypes/testDevice2/MyRWBlock</comment>
+    </variables>
+    <variables name="RW_dt_a583_testDevice2" typeName="DT" topologicalAddress="%MW366">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW382">
+    <variables name="RW2_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW370">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW384">
+    <variables name="RW2_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW374">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW388">
+    <variables name="RW2_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW376">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW392">
+    <variables name="RW2_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW380">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW400">
+    <variables name="RW2_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW384">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW408">
+    <variables name="RW2_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW392">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW416">
+    <variables name="RW2_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW400">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW544">
+    <variables name="RW2_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW408">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW560">
+    <variables name="RW2_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW424">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW564">
+    <variables name="RW2_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW428">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW566">
+    <variables name="RW2_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW430">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW570">
+    <variables name="RW2_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW434">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW578">
+    <variables name="RW2_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW442">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW582">
+    <variables name="RW2_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW446">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW590">
+    <variables name="RW2_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW454">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="RW_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW598">
+    <variables name="RW2_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW462">
       <comment>AllTypes/testDevice2/MyRWBlock</comment>
     </variables>
-    <variables name="WO_int8_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW614">
+    <variables name="WO_int8_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW478">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint8_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW624">
+    <variables name="WO_uint8_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW488">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int16_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW629">
+    <variables name="WO_int16_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW493">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint16_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW639">
+    <variables name="WO_uint16_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW503">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int32_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW649">
+    <variables name="WO_int32_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW513">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint32_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW669">
+    <variables name="WO_uint32_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW533">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_float32_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW689">
+    <variables name="WO_float32_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW553">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_string_a583_testDevice1" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW709">
+    <variables name="WO_string_a583_testDevice1" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW573">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_date_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1029">
+    <variables name="WO_date_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW893">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_char_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1069">
+    <variables name="WO_char_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW933">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_byte_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1079">
+    <variables name="WO_byte_a583_testDevice1" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW943">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_word_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1084">
+    <variables name="WO_word_a583_testDevice1" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW948">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dword_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1094">
+    <variables name="WO_dword_a583_testDevice1" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW958">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1114">
+    <variables name="WO_int_a583_testDevice1" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW978">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dint_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1124">
+    <variables name="WO_dint_a583_testDevice1" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW988">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_real_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1144">
+    <variables name="WO_real_a583_testDevice1" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1008">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dt_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1164">
+    <variables name="WO_dt_a583_testDevice1" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1028">
       <comment>AllTypes/testDevice1/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int8_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1204">
+    <variables name="WO_int8_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1068">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint8_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1214">
+    <variables name="WO_uint8_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1078">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int16_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1219">
+    <variables name="WO_int16_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1083">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint16_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1229">
+    <variables name="WO_uint16_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1093">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int32_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1239">
+    <variables name="WO_int32_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1103">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_uint32_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1259">
+    <variables name="WO_uint32_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1123">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_float32_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1279">
+    <variables name="WO_float32_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1143">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_string_a583_testDevice2" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW1299">
+    <variables name="WO_string_a583_testDevice2" typeName="ARRAY[0..9] OF STRING[64]" topologicalAddress="%MW1163">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_date_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1619">
+    <variables name="WO_date_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1483">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_char_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1659">
+    <variables name="WO_char_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1523">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_byte_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1669">
+    <variables name="WO_byte_a583_testDevice2" typeName="ARRAY[0..9] OF BYTE" topologicalAddress="%MW1533">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_word_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1674">
+    <variables name="WO_word_a583_testDevice2" typeName="ARRAY[0..9] OF WORD" topologicalAddress="%MW1538">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dword_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1684">
+    <variables name="WO_dword_a583_testDevice2" typeName="ARRAY[0..9] OF DWORD" topologicalAddress="%MW1548">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_int_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1704">
+    <variables name="WO_int_a583_testDevice2" typeName="ARRAY[0..9] OF INT" topologicalAddress="%MW1568">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dint_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1714">
+    <variables name="WO_dint_a583_testDevice2" typeName="ARRAY[0..9] OF DINT" topologicalAddress="%MW1578">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_real_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1734">
+    <variables name="WO_real_a583_testDevice2" typeName="ARRAY[0..9] OF REAL" topologicalAddress="%MW1598">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="WO_dt_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1754">
+    <variables name="WO_dt_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1618">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
-    <variables name="C_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1794">
+    <variables name="C_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1658">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1798">
+    <variables name="C_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1662">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1800">
+    <variables name="C_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1664">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1804">
+    <variables name="C_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1668">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1808">
+    <variables name="C_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1672">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1816">
+    <variables name="C_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1680">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1824">
+    <variables name="C_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1688">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1832">
+    <variables name="C_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1696">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1960">
+    <variables name="C_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1824">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1976">
+    <variables name="C_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1840">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1980">
+    <variables name="C_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1844">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1982">
+    <variables name="C_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1846">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1986">
+    <variables name="C_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1850">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1994">
+    <variables name="C_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1858">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1998">
+    <variables name="C_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1862">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2006">
+    <variables name="C_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1870">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2014">
+    <variables name="C_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1878">
       <comment>AllTypes/testDevice1/MyCBlock</comment>
     </variables>
-    <variables name="C_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2030">
+    <variables name="C_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1894">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2034">
+    <variables name="C_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1898">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2036">
+    <variables name="C_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1900">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2040">
+    <variables name="C_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1904">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2044">
+    <variables name="C_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1908">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2052">
+    <variables name="C_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1916">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2060">
+    <variables name="C_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1924">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW2068">
+    <variables name="C_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1932">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2196">
+    <variables name="C_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2060">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2212">
+    <variables name="C_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2076">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2216">
+    <variables name="C_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2080">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2218">
+    <variables name="C_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2082">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2222">
+    <variables name="C_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2086">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2230">
+    <variables name="C_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2094">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2234">
+    <variables name="C_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2098">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2242">
+    <variables name="C_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2106">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
-    <variables name="C_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2250">
+    <variables name="C_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2114">
       <comment>AllTypes/testDevice2/MyCBlock</comment>
     </variables>
   </dataBlock>
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl
index 718641684885d5845a6653b0a840cef0a7fe91fe..75130d27c8734aece251390647bf3e79b5fecb0a 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl
@@ -10,9 +10,9 @@ FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
         _version: STRING[16] := 'SILECS_DEV';
-        _checksum: DWORD := DW#16#22b6b4c9;
+        _checksum: DWORD := DW#16#3f149397;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2018-1-31-10:49:39;
+        _date: DT := DT#2018-1-31-17:6:28;
 
     END_STRUCT;
 END_TYPE
@@ -73,23 +73,39 @@ AUTHOR:    schwinn
 FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
-        RW_int8: ARRAY[0..1, 0..1] OF CHAR;
-        RW_uint8: ARRAY[0..1, 0..1] OF BYTE;
-        RW_int16: ARRAY[0..1, 0..1] OF INT;
-        RW_uint16: ARRAY[0..1, 0..1] OF WORD;
-        RW_int32: ARRAY[0..1, 0..1] OF DINT;
-        RW_uint32: ARRAY[0..1, 0..1] OF DWORD;
-        RW_float32: ARRAY[0..1, 0..1] OF REAL;
-        RW_string: ARRAY[0..1, 0..1] OF STRING[64];
-        RW_date: ARRAY[0..1, 0..1] OF DT;
-        RW_char: ARRAY[0..1, 0..1] OF CHAR;
-        RW_byte: ARRAY[0..1, 0..1] OF BYTE;
-        RW_word: ARRAY[0..1, 0..1] OF WORD;
-        RW_dword: ARRAY[0..1, 0..1] OF DWORD;
-        RW_int: ARRAY[0..1, 0..1] OF INT;
-        RW_dint: ARRAY[0..1, 0..1] OF DINT;
-        RW_real: ARRAY[0..1, 0..1] OF REAL;
-        RW_dt: ARRAY[0..1, 0..1] OF DT;
+        RW_int8: CHAR;
+        RW_uint8: BYTE;
+        RW_int16: INT;
+        RW_uint16: WORD;
+        RW_int32: DINT;
+        RW_uint32: DWORD;
+        RW_float32: REAL;
+        RW_string: STRING[64];
+        RW_date: DT;
+        RW_char: CHAR;
+        RW_byte: BYTE;
+        RW_word: WORD;
+        RW_dword: DWORD;
+        RW_int: INT;
+        RW_dint: DINT;
+        RW_real: REAL;
+        RW_dt: DT;
+        RW2_int8: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_int16: ARRAY[0..1, 0..1] OF INT;
+        RW2_uint16: ARRAY[0..1, 0..1] OF WORD;
+        RW2_int32: ARRAY[0..1, 0..1] OF DINT;
+        RW2_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_float32: ARRAY[0..1, 0..1] OF REAL;
+        RW2_date: ARRAY[0..1, 0..1] OF DT;
+        RW2_char: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_byte: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_word: ARRAY[0..1, 0..1] OF WORD;
+        RW2_dword: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_int: ARRAY[0..1, 0..1] OF INT;
+        RW2_dint: ARRAY[0..1, 0..1] OF DINT;
+        RW2_real: ARRAY[0..1, 0..1] OF REAL;
+        RW2_dt: ARRAY[0..1, 0..1] OF DT;
 
     END_STRUCT;
 END_TYPE
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl
index 439b2cf69d2ae881c5a372727bd3d517ea374ae7..d6aca17a288d12f833d3f360def6a8c6a6fa4867 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl
@@ -10,9 +10,9 @@ FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
         _version: STRING[16] := 'SILECS_DEV';
-        _checksum: DWORD := DW#16#22b6b4c9;
+        _checksum: DWORD := DW#16#3f149397;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2018-1-31-10:49:39;
+        _date: DT := DT#2018-1-31-17:6:28;
 
     END_STRUCT;
 END_TYPE
@@ -73,23 +73,39 @@ AUTHOR:    schwinn
 FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
-        RW_int8: ARRAY[0..1, 0..1] OF CHAR;
-        RW_uint8: ARRAY[0..1, 0..1] OF BYTE;
-        RW_int16: ARRAY[0..1, 0..1] OF INT;
-        RW_uint16: ARRAY[0..1, 0..1] OF WORD;
-        RW_int32: ARRAY[0..1, 0..1] OF DINT;
-        RW_uint32: ARRAY[0..1, 0..1] OF DWORD;
-        RW_float32: ARRAY[0..1, 0..1] OF REAL;
-        RW_string: ARRAY[0..1, 0..1] OF STRING[64];
-        RW_date: ARRAY[0..1, 0..1] OF DT;
-        RW_char: ARRAY[0..1, 0..1] OF CHAR;
-        RW_byte: ARRAY[0..1, 0..1] OF BYTE;
-        RW_word: ARRAY[0..1, 0..1] OF WORD;
-        RW_dword: ARRAY[0..1, 0..1] OF DWORD;
-        RW_int: ARRAY[0..1, 0..1] OF INT;
-        RW_dint: ARRAY[0..1, 0..1] OF DINT;
-        RW_real: ARRAY[0..1, 0..1] OF REAL;
-        RW_dt: ARRAY[0..1, 0..1] OF DT;
+        RW_int8: CHAR;
+        RW_uint8: BYTE;
+        RW_int16: INT;
+        RW_uint16: WORD;
+        RW_int32: DINT;
+        RW_uint32: DWORD;
+        RW_float32: REAL;
+        RW_string: STRING[64];
+        RW_date: DT;
+        RW_char: CHAR;
+        RW_byte: BYTE;
+        RW_word: WORD;
+        RW_dword: DWORD;
+        RW_int: INT;
+        RW_dint: DINT;
+        RW_real: REAL;
+        RW_dt: DT;
+        RW2_int8: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_int16: ARRAY[0..1, 0..1] OF INT;
+        RW2_uint16: ARRAY[0..1, 0..1] OF WORD;
+        RW2_int32: ARRAY[0..1, 0..1] OF DINT;
+        RW2_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_float32: ARRAY[0..1, 0..1] OF REAL;
+        RW2_date: ARRAY[0..1, 0..1] OF DT;
+        RW2_char: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_byte: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_word: ARRAY[0..1, 0..1] OF WORD;
+        RW2_dword: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_int: ARRAY[0..1, 0..1] OF INT;
+        RW2_dint: ARRAY[0..1, 0..1] OF DINT;
+        RW2_real: ARRAY[0..1, 0..1] OF REAL;
+        RW2_dt: ARRAY[0..1, 0..1] OF DT;
 
     END_STRUCT;
 END_TYPE
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl
index b70e773c926b030aed70c4d4f39394c5e5bd93bf..27403832634a8ab74399cd6caf811d4fd2a8cf6a 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl
@@ -10,9 +10,9 @@ FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
         _version: STRING[16] := 'SILECS_DEV';
-        _checksum: DWORD := DW#16#22b6b4c9;
+        _checksum: DWORD := DW#16#3f149397;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2018-1-31-10:49:39;
+        _date: DT := DT#2018-1-31-17:6:28;
 
     END_STRUCT;
 END_TYPE
@@ -72,23 +72,39 @@ AUTHOR:    schwinn
 FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
-        RW_int8: ARRAY[0..1, 0..1] OF CHAR;
-        RW_uint8: ARRAY[0..1, 0..1] OF BYTE;
-        RW_int16: ARRAY[0..1, 0..1] OF INT;
-        RW_uint16: ARRAY[0..1, 0..1] OF WORD;
-        RW_int32: ARRAY[0..1, 0..1] OF DINT;
-        RW_uint32: ARRAY[0..1, 0..1] OF DWORD;
-        RW_float32: ARRAY[0..1, 0..1] OF REAL;
-        RW_string: ARRAY[0..1, 0..1] OF STRING[64];
-        RW_date: ARRAY[0..1, 0..1] OF DT;
-        RW_char: ARRAY[0..1, 0..1] OF CHAR;
-        RW_byte: ARRAY[0..1, 0..1] OF BYTE;
-        RW_word: ARRAY[0..1, 0..1] OF WORD;
-        RW_dword: ARRAY[0..1, 0..1] OF DWORD;
-        RW_int: ARRAY[0..1, 0..1] OF INT;
-        RW_dint: ARRAY[0..1, 0..1] OF DINT;
-        RW_real: ARRAY[0..1, 0..1] OF REAL;
-        RW_dt: ARRAY[0..1, 0..1] OF DT;
+        RW_int8: CHAR;
+        RW_uint8: BYTE;
+        RW_int16: INT;
+        RW_uint16: WORD;
+        RW_int32: DINT;
+        RW_uint32: DWORD;
+        RW_float32: REAL;
+        RW_string: STRING[64];
+        RW_date: DT;
+        RW_char: CHAR;
+        RW_byte: BYTE;
+        RW_word: WORD;
+        RW_dword: DWORD;
+        RW_int: INT;
+        RW_dint: DINT;
+        RW_real: REAL;
+        RW_dt: DT;
+        RW2_int8: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_int16: ARRAY[0..1, 0..1] OF INT;
+        RW2_uint16: ARRAY[0..1, 0..1] OF WORD;
+        RW2_int32: ARRAY[0..1, 0..1] OF DINT;
+        RW2_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_float32: ARRAY[0..1, 0..1] OF REAL;
+        RW2_date: ARRAY[0..1, 0..1] OF DT;
+        RW2_char: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_byte: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_word: ARRAY[0..1, 0..1] OF WORD;
+        RW2_dword: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_int: ARRAY[0..1, 0..1] OF INT;
+        RW2_dint: ARRAY[0..1, 0..1] OF DINT;
+        RW2_real: ARRAY[0..1, 0..1] OF REAL;
+        RW2_dt: ARRAY[0..1, 0..1] OF DT;
 
     END_STRUCT;
 END_TYPE
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl
index 57a2d8fe89666c34b58200e6fafba23f82dac71d..7b6143acaf43f810e7360cf0c07cda33cb004072 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl
@@ -10,9 +10,9 @@ FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
         _version: STRING[16] := 'SILECS_DEV';
-        _checksum: DWORD := DW#16#22b6b4c9;
+        _checksum: DWORD := DW#16#3f149397;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2018-1-31-10:49:39;
+        _date: DT := DT#2018-1-31-17:6:28;
 
     END_STRUCT;
 END_TYPE
@@ -72,23 +72,39 @@ AUTHOR:    schwinn
 FAMILY:    SILECS
 NAME:      UDTB
     STRUCT
-        RW_int8: ARRAY[0..1, 0..1] OF CHAR;
-        RW_uint8: ARRAY[0..1, 0..1] OF BYTE;
-        RW_int16: ARRAY[0..1, 0..1] OF INT;
-        RW_uint16: ARRAY[0..1, 0..1] OF WORD;
-        RW_int32: ARRAY[0..1, 0..1] OF DINT;
-        RW_uint32: ARRAY[0..1, 0..1] OF DWORD;
-        RW_float32: ARRAY[0..1, 0..1] OF REAL;
-        RW_string: ARRAY[0..1, 0..1] OF STRING[64];
-        RW_date: ARRAY[0..1, 0..1] OF DT;
-        RW_char: ARRAY[0..1, 0..1] OF CHAR;
-        RW_byte: ARRAY[0..1, 0..1] OF BYTE;
-        RW_word: ARRAY[0..1, 0..1] OF WORD;
-        RW_dword: ARRAY[0..1, 0..1] OF DWORD;
-        RW_int: ARRAY[0..1, 0..1] OF INT;
-        RW_dint: ARRAY[0..1, 0..1] OF DINT;
-        RW_real: ARRAY[0..1, 0..1] OF REAL;
-        RW_dt: ARRAY[0..1, 0..1] OF DT;
+        RW_int8: CHAR;
+        RW_uint8: BYTE;
+        RW_int16: INT;
+        RW_uint16: WORD;
+        RW_int32: DINT;
+        RW_uint32: DWORD;
+        RW_float32: REAL;
+        RW_string: STRING[64];
+        RW_date: DT;
+        RW_char: CHAR;
+        RW_byte: BYTE;
+        RW_word: WORD;
+        RW_dword: DWORD;
+        RW_int: INT;
+        RW_dint: DINT;
+        RW_real: REAL;
+        RW_dt: DT;
+        RW2_int8: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_int16: ARRAY[0..1, 0..1] OF INT;
+        RW2_uint16: ARRAY[0..1, 0..1] OF WORD;
+        RW2_int32: ARRAY[0..1, 0..1] OF DINT;
+        RW2_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_float32: ARRAY[0..1, 0..1] OF REAL;
+        RW2_date: ARRAY[0..1, 0..1] OF DT;
+        RW2_char: ARRAY[0..1, 0..1] OF CHAR;
+        RW2_byte: ARRAY[0..1, 0..1] OF BYTE;
+        RW2_word: ARRAY[0..1, 0..1] OF WORD;
+        RW2_dword: ARRAY[0..1, 0..1] OF DWORD;
+        RW2_int: ARRAY[0..1, 0..1] OF INT;
+        RW2_dint: ARRAY[0..1, 0..1] OF DINT;
+        RW2_real: ARRAY[0..1, 0..1] OF REAL;
+        RW2_dt: ARRAY[0..1, 0..1] OF DT;
 
     END_STRUCT;
 END_TYPE
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/SilecsHeader_1.0.0.h b/silecs-codegen/src/xml/test/generated_correct/controller/SilecsHeader_1.0.0.h
index 4c5b0f60076d41a1dd273ab678d84fd67f6b25d5..7daab50efed369451c9098b9184a2e3a92295c08 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/SilecsHeader_1.0.0.h
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/SilecsHeader_1.0.0.h
@@ -30,7 +30,7 @@ public:
     HdrBlk() : SilecsServer::Block("SilecsHeader:hdrBlk")
     {
         set_version("DEV");
-        set_checksum(0XC9B4B622);
+        set_checksum(0X9793143F);
         set_user("schwinn");
         set_date(0.0);
     }